react-cheminfo 0.19.0 → 0.20.0

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.
@@ -66,14 +66,15 @@ export interface AboutContent {
66
66
  */
67
67
  publicRepository?: boolean;
68
68
  /**
69
- * Which build is running, from `virtual:cheminfo-build-info` — never written
69
+ * Which build is running, from `react-cheminfo/build-info` — never written
70
70
  * by hand, which is what keeps it true after the next release.
71
71
  * @default undefined — the site's build does not publish one
72
72
  */
73
73
  build?: BuildInfo;
74
74
  /**
75
- * Where a problem is reported.
76
- * @default the repository's /issues
75
+ * Where a problem is reported: an address a visitor can actually open, so a
76
+ * site whose sources are private names one of its own or says nothing.
77
+ * @default the repository's /issues, and none at all when it is private
77
78
  */
78
79
  issues?: string;
79
80
  }
@@ -112,7 +113,8 @@ export interface ResolvedAbout {
112
113
  publicRepository: boolean;
113
114
  /** Which build is running, or `undefined` when the site does not say. */
114
115
  build: BuildInfo | undefined;
115
- issues: string;
116
+ /** Where a problem is reported, or `undefined` when there is nowhere open. */
117
+ issues: string | undefined;
116
118
  }
117
119
  /**
118
120
  * Fill in what a site left to the family, and resolve what it named.
@@ -1 +1 @@
1
- {"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../../src/about/core/about.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGhE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,iEAAiE;IACjE,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,uEAAuE;IACvE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4DAA4D;IAC5D,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAuBjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CA8C7D"}
1
+ {"version":3,"file":"about.d.ts","sourceRoot":"","sources":["../../../src/about/core/about.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAE3E,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGhE;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAC/B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,iEAAiE;IACjE,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,8DAA8D;IAC9D,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAC;IAC7B;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,UAAU,EAAE,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,aAAa,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,uEAAuE;IACvE,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,4DAA4D;IAC5D,IAAI,EAAE,SAAS,SAAS,EAAE,CAAC;IAC3B,2DAA2D;IAC3D,MAAM,EAAE,SAAS,WAAW,EAAE,CAAC;IAC/B,2EAA2E;IAC3E,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,gBAAgB,EAAE,OAAO,CAAC;IAC1B,yEAAyE;IACzE,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CA8BjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,EAAE,CA8C7D"}
@@ -14,6 +14,7 @@ export function resolveAbout(content) {
14
14
  ? siteById(content.siteId)
15
15
  : content.siteId;
16
16
  const repository = content.repository ?? site.repository;
17
+ const publicRepository = content.publicRepository ?? site.publicRepository ?? false;
17
18
  return {
18
19
  site,
19
20
  what: content.what,
@@ -25,9 +26,14 @@ export function resolveAbout(content) {
25
26
  providedBy: providers(content.providedBy ?? []),
26
27
  license: content.license ?? DEFAULT_LICENSE,
27
28
  repository,
28
- publicRepository: content.publicRepository ?? site.publicRepository ?? false,
29
+ publicRepository,
29
30
  build: content.build,
30
- issues: content.issues ?? `${withoutTrailingSlash(repository)}/issues`,
31
+ // A tracker behind a private repository answers 404 to every visitor, so
32
+ // a site that names none of its own asks for a report nowhere.
33
+ issues: content.issues ??
34
+ (publicRepository
35
+ ? `${withoutTrailingSlash(repository)}/issues`
36
+ : undefined),
31
37
  };
32
38
  }
33
39
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"about.js","sourceRoot":"","sources":["../../../src/about/core/about.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"about.js","sourceRoot":"","sources":["../../../src/about/core/about.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CA+F7D"}
1
+ {"version":3,"file":"AboutPage.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AASrD,MAAM,WAAW,cAAc;IAC7B,uCAAuC;IACvC,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,YAAY,CAqG7D"}
@@ -26,7 +26,7 @@ export function AboutPage(props) {
26
26
  const site = about.site;
27
27
  return (_jsxs("div", { className: className === undefined ? 'about-page' : `about-page ${className}`, style: PAGE_STYLE, children: [_jsxs("header", { className: "about-hero", style: HERO_STYLE, children: [logo === undefined
28
28
  ? (mark ?? _jsx(SiteMark, { site: site, size: 56 }))
29
- : null, _jsxs("div", { style: HERO_BODY_STYLE, children: [_jsx("h1", { style: logo === undefined ? NAME_STYLE : LOGO_NAME_STYLE, children: logo ?? _jsx(Wordmark, { site: site, size: 26 }) }), _jsx("p", { style: TAGLINE_STYLE, children: site.tagline }), _jsx("p", { style: WHAT_STYLE, children: about.what })] }), _jsx(AboutVersion, { build: about.build, repository: about.repository, publicRepository: about.publicRepository })] }), about.people.length === 0 && about.providedBy.length === 0 ? null : (_jsx(AboutSection, { title: "Provided by", className: "about-provided-by", children: _jsx(AboutProvidedBy, { people: about.people, providers: about.providedBy }) })), _jsx(AboutSection, { title: "What you can do here", className: "about-can", children: _jsx("ul", { style: CAN_LIST_STYLE, children: about.can.map((line) => (_jsx("li", { children: line }, line))) }) }), about.paragraphs.length === 0 ? null : (_jsx(AboutSection, { className: "about-context", children: about.paragraphs.map((paragraph, index) => (_jsx("p", { style: index === 0 ? FIRST_PARAGRAPH_STYLE : PARAGRAPH_STYLE, children: paragraph }, paragraph))) })), children, _jsx(AboutSection, { title: "Built on", className: "about-credits", children: _jsx(CreditsList, { entries: about.credits }) }), about.cite.length === 0 ? null : (_jsx(AboutSection, { title: "How to cite", className: "about-cite", children: _jsx(AboutCitations, { works: about.cite }) })), !about.publicRepository ? null : (_jsxs(AboutSection, { title: "Licence and source", className: "about-licence", children: [_jsxs("p", { style: FIRST_PARAGRAPH_STYLE, children: [about.license, ", \u00A9 cheminfo. Use it in a course, fork it, or lift a piece of it into something else. The sources are at", ' ', _jsx(ExternalLink, { href: about.repository }), "."] }), about.build === undefined ? null : (_jsx(AboutBuild, { build: about.build, repository: about.repository }))] })), _jsx(AboutSection, { title: "Found a problem?", className: "about-issues", children: _jsxs("p", { style: FIRST_PARAGRAPH_STYLE, children: ["Tell us: a report naming what you typed and what came back is the fastest fix there is. ", _jsx(ExternalLink, { href: about.issues }), "."] }) })] }));
29
+ : null, _jsxs("div", { style: HERO_BODY_STYLE, children: [_jsx("h1", { style: logo === undefined ? NAME_STYLE : LOGO_NAME_STYLE, children: logo ?? _jsx(Wordmark, { site: site, size: 26 }) }), _jsx("p", { style: TAGLINE_STYLE, children: site.tagline }), _jsx("p", { style: WHAT_STYLE, children: about.what })] }), _jsx(AboutVersion, { build: about.build, repository: about.repository, publicRepository: about.publicRepository })] }), about.people.length === 0 && about.providedBy.length === 0 ? null : (_jsx(AboutSection, { title: "Provided by", className: "about-provided-by", children: _jsx(AboutProvidedBy, { people: about.people, providers: about.providedBy }) })), _jsx(AboutSection, { title: "What you can do here", className: "about-can", children: _jsx("ul", { style: CAN_LIST_STYLE, children: about.can.map((line) => (_jsx("li", { children: line }, line))) }) }), about.paragraphs.length === 0 ? null : (_jsx(AboutSection, { className: "about-context", children: about.paragraphs.map((paragraph, index) => (_jsx("p", { style: index === 0 ? FIRST_PARAGRAPH_STYLE : PARAGRAPH_STYLE, children: paragraph }, paragraph))) })), children, _jsx(AboutSection, { title: "Built on", className: "about-credits", children: _jsx(CreditsList, { entries: about.credits }) }), about.cite.length === 0 ? null : (_jsx(AboutSection, { title: "How to cite", className: "about-cite", children: _jsx(AboutCitations, { works: about.cite }) })), !about.publicRepository ? null : (_jsxs(AboutSection, { title: "Licence and source", className: "about-licence", children: [_jsxs("p", { style: FIRST_PARAGRAPH_STYLE, children: [about.license, ", \u00A9 cheminfo. Use it in a course, fork it, or lift a piece of it into something else. The sources are at", ' ', _jsx(ExternalLink, { href: about.repository }), "."] }), about.build === undefined ? null : (_jsx(AboutBuild, { build: about.build, repository: about.repository }))] })), about.issues === undefined ? null : (_jsx(AboutSection, { title: "Found a problem?", className: "about-issues", children: _jsxs("p", { style: FIRST_PARAGRAPH_STYLE, children: ["Tell us: a report naming what you typed and what came back is the fastest fix there is. ", _jsx(ExternalLink, { href: about.issues }), "."] }) }))] }));
30
30
  }
31
31
  function ExternalLink(props) {
32
32
  const { href } = props;
@@ -1 +1 @@
1
- {"version":3,"file":"AboutPage.js","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AboutPage.js","sourceRoot":"","sources":["../../../src/about/ui/AboutPage.tsx"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
1
  /**
2
- * Which release of a site a visitor has open, in the corner of its hero.
2
+ * Which build of a site a visitor has open, in the corner of its hero.
3
3
  *
4
4
  * A report of something going wrong is worth answering only when we know what
5
- * was running, and the version is the one thing an About page cannot say from
6
- * a hand-written record. It sits at the top of the page rather than at the
5
+ * was running, and that is the one thing an About page cannot say from a
6
+ * hand-written record. It sits at the top of the page rather than at the
7
7
  * bottom because it is the one line a reader is asked to quote back.
8
8
  */
9
9
  import type { ReactElement } from 'react';
@@ -11,15 +11,16 @@ import type { BuildInfo } from '../../build/core/buildInfo.ts';
11
11
  export interface AboutVersionProps {
12
12
  /** What the build published about itself, or `undefined` when it published none. */
13
13
  build: BuildInfo | undefined;
14
- /** Where the sources live, which is what the version links into. */
14
+ /** Where the sources live, which is what the badge links into. */
15
15
  repository: string;
16
16
  /** Whether a visitor can open that repository, and so whether it is linked. */
17
17
  publicRepository: boolean;
18
18
  }
19
19
  /**
20
- * The version badge, or nothing when there is no version worth showing.
20
+ * The build badge: the release a site is serving, or the commit it was built
21
+ * from while it has no release yet, and when it was made.
21
22
  * @param props - See {@link AboutVersionProps}.
22
- * @returns The badge, or `null`.
23
+ * @returns The badge, or `null` when the build says nothing worth showing.
23
24
  */
24
25
  export declare function AboutVersion(props: AboutVersionProps): ReactElement | null;
25
26
  //# sourceMappingURL=AboutVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AboutVersion.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAI/D,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CAwB1E"}
1
+ {"version":3,"file":"AboutVersion.d.ts","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAS/D,MAAM,WAAW,iBAAiB;IAChC,oFAAoF;IACpF,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,YAAY,GAAG,IAAI,CA6B1E"}
@@ -1,21 +1,44 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { releasedVersion } from "../../build/core/buildInfo.js";
2
+ import { buildLabel, buildStamp, buildSummary, releasedVersion, } from "../../build/core/buildInfo.js";
3
3
  import { githubSources } from "../core/repository.js";
4
4
  /**
5
- * The version badge, or nothing when there is no version worth showing.
5
+ * The build badge: the release a site is serving, or the commit it was built
6
+ * from while it has no release yet, and when it was made.
6
7
  * @param props - See {@link AboutVersionProps}.
7
- * @returns The badge, or `null`.
8
+ * @returns The badge, or `null` when the build says nothing worth showing.
8
9
  */
9
10
  export function AboutVersion(props) {
10
11
  const { build, repository, publicRepository } = props;
11
- const version = releasedVersion(build);
12
- if (version === undefined)
12
+ const label = buildLabel(build);
13
+ if (build === undefined || label === undefined)
13
14
  return null;
14
- const sources = publicRepository ? githubSources(repository) : undefined;
15
- if (sources === undefined) {
16
- return (_jsx("span", { style: BADGE_STYLE, className: "about-version", children: version }));
15
+ const href = publicRepository ? addressOf(build, repository) : undefined;
16
+ const summary = buildSummary(build);
17
+ // The instant belongs on the badge rather than in its hover: a version
18
+ // nobody can date says nothing about how old the page they read is.
19
+ const badge = `${label} · ${buildStamp(build.builtAt)}`;
20
+ if (href === undefined) {
21
+ return (_jsx("span", { style: BADGE_STYLE, className: "about-version", title: summary, children: badge }));
17
22
  }
18
- return (_jsx("a", { className: "about-version", href: `${sources}/releases/tag/v${version}`, target: "_blank", rel: "noopener noreferrer", style: LINK_BADGE_STYLE, children: version }));
23
+ return (_jsx("a", { className: "about-version", href: href, title: summary, target: "_blank", rel: "noopener noreferrer", style: LINK_BADGE_STYLE, children: badge }));
24
+ }
25
+ /**
26
+ * What the badge opens: the release it names, or the commit it was built from.
27
+ * @param build - What the build published about itself.
28
+ * @param repository - Where the sources live.
29
+ * @returns The address, or `undefined` when nothing inside the repository can
30
+ * be addressed.
31
+ */
32
+ function addressOf(build, repository) {
33
+ const sources = githubSources(repository);
34
+ if (sources === undefined)
35
+ return undefined;
36
+ const version = releasedVersion(build);
37
+ if (version !== undefined)
38
+ return `${sources}/releases/tag/v${version}`;
39
+ return build.commit === undefined
40
+ ? undefined
41
+ : `${sources}/commit/${build.commit}`;
19
42
  }
20
43
  const BADGE_STYLE = {
21
44
  flex: '0 0 auto',
@@ -1 +1 @@
1
- {"version":3,"file":"AboutVersion.js","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":";AAYA,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAWtD;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CACL,eAAM,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,eAAe,YAChD,OAAO,GACH,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,YACE,SAAS,EAAC,eAAe,EACzB,IAAI,EAAE,GAAG,OAAO,kBAAkB,OAAO,EAAE,EAC3C,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE,gBAAgB,YAEtB,OAAO,GACN,CACL,CAAC;AACJ,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,2CAA2C;IACvD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,QAAQ;CACY,CAAC;AAEnC,MAAM,gBAAgB,GAAG;IACvB,GAAG,WAAW;IACd,KAAK,EAAE,eAAe;CACU,CAAC"}
1
+ {"version":3,"file":"AboutVersion.js","sourceRoot":"","sources":["../../../src/about/ui/AboutVersion.tsx"],"names":[],"mappings":";AAYA,OAAO,EACL,UAAU,EACV,UAAU,EACV,YAAY,EACZ,eAAe,GAChB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAWtD;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IACtD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5D,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,KAAK,GAAG,GAAG,KAAK,MAAM,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IACxD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CACL,eAAM,KAAK,EAAE,WAAW,EAAE,SAAS,EAAC,eAAe,EAAC,KAAK,EAAE,OAAO,YAC/D,KAAK,GACD,CACR,CAAC;IACJ,CAAC;IAED,OAAO,CACL,YACE,SAAS,EAAC,eAAe,EACzB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,OAAO,EACd,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,KAAK,EAAE,gBAAgB,YAEtB,KAAK,GACJ,CACL,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,KAAgB,EAAE,UAAkB;IACrD,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,CAAC,CAAC;IAC1C,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,GAAG,OAAO,kBAAkB,OAAO,EAAE,CAAC;IACxE,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS;QAC/B,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,GAAG,OAAO,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,2CAA2C;IACvD,QAAQ,EAAE,EAAE;IACZ,KAAK,EAAE,mBAAmB;IAC1B,UAAU,EAAE,QAAQ;CACY,CAAC;AAEnC,MAAM,gBAAgB,GAAG;IACvB,GAAG,WAAW;IACd,KAAK,EAAE,eAAe;CACU,CAAC"}
@@ -40,6 +40,34 @@ export declare const UNRELEASED_VERSION = "0.0.0";
40
40
  * or has never been released.
41
41
  */
42
42
  export declare function releasedVersion(build: BuildInfo | undefined): string | undefined;
43
+ /**
44
+ * What the build is called on the page: the release when there is one, and the
45
+ * commit when there is not.
46
+ *
47
+ * A site that has never been released still has to be identifiable in a
48
+ * report, and `0.0.0` identifies nothing while the commit it was built from
49
+ * identifies exactly one build.
50
+ * @param build - What the build published about itself, or `undefined`.
51
+ * @returns The label, or `undefined` when the build published neither.
52
+ */
53
+ export declare function buildLabel(build: BuildInfo | undefined): string | undefined;
54
+ /**
55
+ * When the build was made, as it is read on the badge: the day and the minute.
56
+ *
57
+ * A build a reader is asked to quote is worth little without a date, and two
58
+ * builds of the same day are told apart by the minute. The seconds are left to
59
+ * the hover, where the whole record is.
60
+ * @param builtAt - The ISO instant the build wrote.
61
+ * @returns The instant, in UTC, e.g. `2026-09-16 09:41 UTC`.
62
+ */
63
+ export declare function buildStamp(builtAt: string): string;
64
+ /**
65
+ * The whole record in one line, for the hover of a badge that shows one part
66
+ * of it.
67
+ * @param build - What the build published about itself.
68
+ * @returns e.g. `Built 2026-09-16 09:41:07 UTC from commit a1b2c3d`.
69
+ */
70
+ export declare function buildSummary(build: BuildInfo): string;
43
71
  /**
44
72
  * The commit as it is written for a reader.
45
73
  * @param commit - The full hash.
@@ -1 +1 @@
1
- {"version":3,"file":"buildInfo.d.ts","sourceRoot":"","sources":["../../../src/build/core/buildInfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAIpB;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD"}
1
+ {"version":3,"file":"buildInfo.d.ts","sourceRoot":"","sources":["../../../src/build/core/buildInfo.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,SAAS,GAAG,SAAS,GAC3B,MAAM,GAAG,SAAS,CAIpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAK3E;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAIrD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGrD"}
@@ -19,6 +19,47 @@ export function releasedVersion(build) {
19
19
  return undefined;
20
20
  return version;
21
21
  }
22
+ /**
23
+ * What the build is called on the page: the release when there is one, and the
24
+ * commit when there is not.
25
+ *
26
+ * A site that has never been released still has to be identifiable in a
27
+ * report, and `0.0.0` identifies nothing while the commit it was built from
28
+ * identifies exactly one build.
29
+ * @param build - What the build published about itself, or `undefined`.
30
+ * @returns The label, or `undefined` when the build published neither.
31
+ */
32
+ export function buildLabel(build) {
33
+ const version = releasedVersion(build);
34
+ if (version !== undefined)
35
+ return version;
36
+ const commit = build?.commit;
37
+ return commit === undefined ? undefined : shortCommit(commit);
38
+ }
39
+ /**
40
+ * When the build was made, as it is read on the badge: the day and the minute.
41
+ *
42
+ * A build a reader is asked to quote is worth little without a date, and two
43
+ * builds of the same day are told apart by the minute. The seconds are left to
44
+ * the hover, where the whole record is.
45
+ * @param builtAt - The ISO instant the build wrote.
46
+ * @returns The instant, in UTC, e.g. `2026-09-16 09:41 UTC`.
47
+ */
48
+ export function buildStamp(builtAt) {
49
+ return `${builtAt.slice(0, MINUTE_LENGTH).replace('T', ' ')} UTC`;
50
+ }
51
+ /**
52
+ * The whole record in one line, for the hover of a badge that shows one part
53
+ * of it.
54
+ * @param build - What the build published about itself.
55
+ * @returns e.g. `Built 2026-09-16 09:41:07 UTC from commit a1b2c3d`.
56
+ */
57
+ export function buildSummary(build) {
58
+ const built = `Built ${formatBuiltAt(build.builtAt)}`;
59
+ if (build.commit === undefined)
60
+ return built;
61
+ return `${built} from commit ${shortCommit(build.commit)}`;
62
+ }
22
63
  /**
23
64
  * The commit as it is written for a reader.
24
65
  * @param commit - The full hash.
@@ -37,5 +78,6 @@ export function formatBuiltAt(builtAt) {
37
78
  return `${seconds} UTC`;
38
79
  }
39
80
  const SHORT_COMMIT_LENGTH = 7;
81
+ const MINUTE_LENGTH = 16;
40
82
  const SECOND_LENGTH = 19;
41
83
  //# sourceMappingURL=buildInfo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"buildInfo.js","sourceRoot":"","sources":["../../../src/build/core/buildInfo.ts"],"names":[],"mappings":"AA2BA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAC9E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,GAAG,OAAO,MAAM,CAAC;AAC1B,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"buildInfo.js","sourceRoot":"","sources":["../../../src/build/core/buildInfo.ts"],"names":[],"mappings":"AA2BA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAC7B,KAA4B;IAE5B,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAC/B,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,kBAAkB;QAAE,OAAO,SAAS,CAAC;IAC9E,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU,CAAC,KAA4B;IACrD,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,MAAM,MAAM,GAAG,KAAK,EAAE,MAAM,CAAC;IAC7B,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,KAAK,GAAG,SAAS,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;IACtD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,GAAG,KAAK,gBAAgB,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,OAAO,GAAG,OAAO,MAAM,CAAC;AAC1B,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAC9B,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,aAAa,GAAG,EAAE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export type { BuildInfo } from './buildInfo.ts';
2
- export { UNRELEASED_VERSION, formatBuiltAt, releasedVersion, shortCommit, } from './buildInfo.ts';
2
+ export { UNRELEASED_VERSION, buildLabel, buildStamp, buildSummary, formatBuiltAt, releasedVersion, shortCommit, } from './buildInfo.ts';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/build/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/build/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { UNRELEASED_VERSION, formatBuiltAt, releasedVersion, shortCommit, } from "./buildInfo.js";
1
+ export { UNRELEASED_VERSION, buildLabel, buildStamp, buildSummary, formatBuiltAt, releasedVersion, shortCommit, } from "./buildInfo.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-cheminfo",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "license": "MIT",
5
5
  "description": "React components, hooks and framework-free helpers shared by the cheminfo sites: site chrome, citations, sharing, routing, pedagogy, charts, and the structure, orbital and 3D molecule viewers",
6
6
  "author": "Luc Patiny",
@@ -71,14 +71,15 @@ export interface AboutContent {
71
71
  */
72
72
  publicRepository?: boolean;
73
73
  /**
74
- * Which build is running, from `virtual:cheminfo-build-info` — never written
74
+ * Which build is running, from `react-cheminfo/build-info` — never written
75
75
  * by hand, which is what keeps it true after the next release.
76
76
  * @default undefined — the site's build does not publish one
77
77
  */
78
78
  build?: BuildInfo;
79
79
  /**
80
- * Where a problem is reported.
81
- * @default the repository's /issues
80
+ * Where a problem is reported: an address a visitor can actually open, so a
81
+ * site whose sources are private names one of its own or says nothing.
82
+ * @default the repository's /issues, and none at all when it is private
82
83
  */
83
84
  issues?: string;
84
85
  }
@@ -119,7 +120,8 @@ export interface ResolvedAbout {
119
120
  publicRepository: boolean;
120
121
  /** Which build is running, or `undefined` when the site does not say. */
121
122
  build: BuildInfo | undefined;
122
- issues: string;
123
+ /** Where a problem is reported, or `undefined` when there is nowhere open. */
124
+ issues: string | undefined;
123
125
  }
124
126
 
125
127
  /**
@@ -136,6 +138,8 @@ export function resolveAbout(content: AboutContent): ResolvedAbout {
136
138
  ? siteById(content.siteId)
137
139
  : content.siteId;
138
140
  const repository = content.repository ?? site.repository;
141
+ const publicRepository =
142
+ content.publicRepository ?? site.publicRepository ?? false;
139
143
 
140
144
  return {
141
145
  site,
@@ -148,10 +152,15 @@ export function resolveAbout(content: AboutContent): ResolvedAbout {
148
152
  providedBy: providers(content.providedBy ?? []),
149
153
  license: content.license ?? DEFAULT_LICENSE,
150
154
  repository,
151
- publicRepository:
152
- content.publicRepository ?? site.publicRepository ?? false,
155
+ publicRepository,
153
156
  build: content.build,
154
- issues: content.issues ?? `${withoutTrailingSlash(repository)}/issues`,
157
+ // A tracker behind a private repository answers 404 to every visitor, so
158
+ // a site that names none of its own asks for a report nowhere.
159
+ issues:
160
+ content.issues ??
161
+ (publicRepository
162
+ ? `${withoutTrailingSlash(repository)}/issues`
163
+ : undefined),
155
164
  };
156
165
  }
157
166
 
@@ -143,12 +143,18 @@ export function AboutPage(props: AboutPageProps): ReactElement {
143
143
  </AboutSection>
144
144
  )}
145
145
 
146
- <AboutSection title="Found a problem?" className="about-issues">
147
- <p style={FIRST_PARAGRAPH_STYLE}>
148
- Tell us: a report naming what you typed and what came back is the
149
- fastest fix there is. <ExternalLink href={about.issues} />.
150
- </p>
151
- </AboutSection>
146
+ {/*
147
+ Asking for a report is worth nothing without somewhere to send it, and
148
+ the tracker of a private repository answers 404 to every visitor.
149
+ */}
150
+ {about.issues === undefined ? null : (
151
+ <AboutSection title="Found a problem?" className="about-issues">
152
+ <p style={FIRST_PARAGRAPH_STYLE}>
153
+ Tell us: a report naming what you typed and what came back is the
154
+ fastest fix there is. <ExternalLink href={about.issues} />.
155
+ </p>
156
+ </AboutSection>
157
+ )}
152
158
  </div>
153
159
  );
154
160
  }
@@ -1,41 +1,51 @@
1
1
  /**
2
- * Which release of a site a visitor has open, in the corner of its hero.
2
+ * Which build of a site a visitor has open, in the corner of its hero.
3
3
  *
4
4
  * A report of something going wrong is worth answering only when we know what
5
- * was running, and the version is the one thing an About page cannot say from
6
- * a hand-written record. It sits at the top of the page rather than at the
5
+ * was running, and that is the one thing an About page cannot say from a
6
+ * hand-written record. It sits at the top of the page rather than at the
7
7
  * bottom because it is the one line a reader is asked to quote back.
8
8
  */
9
9
 
10
10
  import type { CSSProperties, ReactElement } from 'react';
11
11
 
12
12
  import type { BuildInfo } from '../../build/core/buildInfo.ts';
13
- import { releasedVersion } from '../../build/core/buildInfo.ts';
13
+ import {
14
+ buildLabel,
15
+ buildStamp,
16
+ buildSummary,
17
+ releasedVersion,
18
+ } from '../../build/core/buildInfo.ts';
14
19
  import { githubSources } from '../core/repository.ts';
15
20
 
16
21
  export interface AboutVersionProps {
17
22
  /** What the build published about itself, or `undefined` when it published none. */
18
23
  build: BuildInfo | undefined;
19
- /** Where the sources live, which is what the version links into. */
24
+ /** Where the sources live, which is what the badge links into. */
20
25
  repository: string;
21
26
  /** Whether a visitor can open that repository, and so whether it is linked. */
22
27
  publicRepository: boolean;
23
28
  }
24
29
 
25
30
  /**
26
- * The version badge, or nothing when there is no version worth showing.
31
+ * The build badge: the release a site is serving, or the commit it was built
32
+ * from while it has no release yet, and when it was made.
27
33
  * @param props - See {@link AboutVersionProps}.
28
- * @returns The badge, or `null`.
34
+ * @returns The badge, or `null` when the build says nothing worth showing.
29
35
  */
30
36
  export function AboutVersion(props: AboutVersionProps): ReactElement | null {
31
37
  const { build, repository, publicRepository } = props;
32
- const version = releasedVersion(build);
33
- if (version === undefined) return null;
34
- const sources = publicRepository ? githubSources(repository) : undefined;
35
- if (sources === undefined) {
38
+ const label = buildLabel(build);
39
+ if (build === undefined || label === undefined) return null;
40
+ const href = publicRepository ? addressOf(build, repository) : undefined;
41
+ const summary = buildSummary(build);
42
+ // The instant belongs on the badge rather than in its hover: a version
43
+ // nobody can date says nothing about how old the page they read is.
44
+ const badge = `${label} · ${buildStamp(build.builtAt)}`;
45
+ if (href === undefined) {
36
46
  return (
37
- <span style={BADGE_STYLE} className="about-version">
38
- {version}
47
+ <span style={BADGE_STYLE} className="about-version" title={summary}>
48
+ {badge}
39
49
  </span>
40
50
  );
41
51
  }
@@ -43,16 +53,34 @@ export function AboutVersion(props: AboutVersionProps): ReactElement | null {
43
53
  return (
44
54
  <a
45
55
  className="about-version"
46
- href={`${sources}/releases/tag/v${version}`}
56
+ href={href}
57
+ title={summary}
47
58
  target="_blank"
48
59
  rel="noopener noreferrer"
49
60
  style={LINK_BADGE_STYLE}
50
61
  >
51
- {version}
62
+ {badge}
52
63
  </a>
53
64
  );
54
65
  }
55
66
 
67
+ /**
68
+ * What the badge opens: the release it names, or the commit it was built from.
69
+ * @param build - What the build published about itself.
70
+ * @param repository - Where the sources live.
71
+ * @returns The address, or `undefined` when nothing inside the repository can
72
+ * be addressed.
73
+ */
74
+ function addressOf(build: BuildInfo, repository: string): string | undefined {
75
+ const sources = githubSources(repository);
76
+ if (sources === undefined) return undefined;
77
+ const version = releasedVersion(build);
78
+ if (version !== undefined) return `${sources}/releases/tag/v${version}`;
79
+ return build.commit === undefined
80
+ ? undefined
81
+ : `${sources}/commit/${build.commit}`;
82
+ }
83
+
56
84
  const BADGE_STYLE = {
57
85
  flex: '0 0 auto',
58
86
  fontFamily: 'var(--font-mono, ui-monospace, monospace)',
@@ -49,6 +49,48 @@ export function releasedVersion(
49
49
  return version;
50
50
  }
51
51
 
52
+ /**
53
+ * What the build is called on the page: the release when there is one, and the
54
+ * commit when there is not.
55
+ *
56
+ * A site that has never been released still has to be identifiable in a
57
+ * report, and `0.0.0` identifies nothing while the commit it was built from
58
+ * identifies exactly one build.
59
+ * @param build - What the build published about itself, or `undefined`.
60
+ * @returns The label, or `undefined` when the build published neither.
61
+ */
62
+ export function buildLabel(build: BuildInfo | undefined): string | undefined {
63
+ const version = releasedVersion(build);
64
+ if (version !== undefined) return version;
65
+ const commit = build?.commit;
66
+ return commit === undefined ? undefined : shortCommit(commit);
67
+ }
68
+
69
+ /**
70
+ * When the build was made, as it is read on the badge: the day and the minute.
71
+ *
72
+ * A build a reader is asked to quote is worth little without a date, and two
73
+ * builds of the same day are told apart by the minute. The seconds are left to
74
+ * the hover, where the whole record is.
75
+ * @param builtAt - The ISO instant the build wrote.
76
+ * @returns The instant, in UTC, e.g. `2026-09-16 09:41 UTC`.
77
+ */
78
+ export function buildStamp(builtAt: string): string {
79
+ return `${builtAt.slice(0, MINUTE_LENGTH).replace('T', ' ')} UTC`;
80
+ }
81
+
82
+ /**
83
+ * The whole record in one line, for the hover of a badge that shows one part
84
+ * of it.
85
+ * @param build - What the build published about itself.
86
+ * @returns e.g. `Built 2026-09-16 09:41:07 UTC from commit a1b2c3d`.
87
+ */
88
+ export function buildSummary(build: BuildInfo): string {
89
+ const built = `Built ${formatBuiltAt(build.builtAt)}`;
90
+ if (build.commit === undefined) return built;
91
+ return `${built} from commit ${shortCommit(build.commit)}`;
92
+ }
93
+
52
94
  /**
53
95
  * The commit as it is written for a reader.
54
96
  * @param commit - The full hash.
@@ -69,4 +111,5 @@ export function formatBuiltAt(builtAt: string): string {
69
111
  }
70
112
 
71
113
  const SHORT_COMMIT_LENGTH = 7;
114
+ const MINUTE_LENGTH = 16;
72
115
  const SECOND_LENGTH = 19;
@@ -1,6 +1,9 @@
1
1
  export type { BuildInfo } from './buildInfo.ts';
2
2
  export {
3
3
  UNRELEASED_VERSION,
4
+ buildLabel,
5
+ buildStamp,
6
+ buildSummary,
4
7
  formatBuiltAt,
5
8
  releasedVersion,
6
9
  shortCommit,