specatlas 0.1.8 → 0.1.9

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.
Files changed (2) hide show
  1. package/dist/bin.js +8 -3
  2. package/package.json +2 -2
package/dist/bin.js CHANGED
@@ -11853,6 +11853,8 @@ async function generatePresentation(opts) {
11853
11853
  const mockupInfo = await copyMockups(root, change, mockupsCopyDir);
11854
11854
  const proposalRaw = await readTextIfExists(path12.join(change.dir, "proposal.md"));
11855
11855
  const proposalBody = proposalRaw ? parseFrontmatter(proposalRaw).body : "";
11856
+ const approvals = await loadApprovals(path12.join(root, ".sdd"));
11857
+ const approval = verifyApproval(change, approvals.byArtifact, config, deltaContent);
11856
11858
  const labels = labelsFor(language);
11857
11859
  const html = page({
11858
11860
  language,
@@ -11869,7 +11871,8 @@ async function generatePresentation(opts) {
11869
11871
  evidence: new Map((change.verify?.evidence ?? []).map((e) => [e.scenario, e.result])),
11870
11872
  mockups: mockupInfo.screens,
11871
11873
  screenshots: mockupInfo.screenshots,
11872
- approveHint: `satlas approve ${change.slug} --by "<nombre>" --channel presentation`
11874
+ approveHint: `satlas approve ${change.slug} --by "<nombre>" --channel presentation`,
11875
+ ...approval.status === "valid" && approval.approvedBy ? { approval: { by: approval.approvedBy, at: approval.approvedAt ?? "" } } : {}
11873
11876
  });
11874
11877
  const outFile = path12.join(presentationDir, "index.html");
11875
11878
  await writeText(outFile, html);
@@ -11920,6 +11923,7 @@ function labelsFor(language) {
11920
11923
  mockups: "Mockups",
11921
11924
  approve: "Approval",
11922
11925
  approveText: "This proposal is approved by signing the spec (hash + author). Any later change invalidates the signature.",
11926
+ approveDone: "Approved by {by} on {at}. Any later change invalidates the signature.",
11923
11927
  command: "Command",
11924
11928
  hash: "Hash",
11925
11929
  generated: "Generated",
@@ -11941,6 +11945,7 @@ function labelsFor(language) {
11941
11945
  mockups: "Mockups",
11942
11946
  approve: "Aprobaci\xF3n",
11943
11947
  approveText: "Esta propuesta se aprueba firmando la spec (hash + autor). Cualquier cambio posterior invalida la firma.",
11948
+ approveDone: "Aprobada por {by} el {at}. Cualquier cambio posterior invalida la firma.",
11944
11949
  command: "Comando",
11945
11950
  hash: "Hash",
11946
11951
  generated: "Generado",
@@ -12056,8 +12061,8 @@ function page(input) {
12056
12061
 
12057
12062
  <section>
12058
12063
  <h2>${esc(l.approve)}</h2>
12059
- <div class="callout">${esc(l.approveText)}</div>
12060
- <p>${esc(l.command)}: <code>${esc(input.approveHint)}</code></p>
12064
+ ${input.approval ? `<div class="callout" style="border-left-color:#15803d;background:rgba(21,128,61,.12)">\u2714 ${esc(l.approveDone.replace("{by}", input.approval.by).replace("{at}", input.approval.at))}</div>` : `<div class="callout">${esc(l.approveText)}</div>
12065
+ <p>${esc(l.command)}: <code>${esc(input.approveHint)}</code></p>`}
12061
12066
  </section>
12062
12067
 
12063
12068
  <footer>SpecAtlas \xB7 ${esc(input.project)} \xB7 ${esc(input.generatedAt)}</footer>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specatlas",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "SpecAtlas: kernel determinista de Spec-Driven Development (CLI)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  "devDependencies": {
42
42
  "@specatlas/adapters": "0.1.1",
43
- "@specatlas/core": "0.1.6"
43
+ "@specatlas/core": "0.1.7"
44
44
  },
45
45
  "scripts": {
46
46
  "typecheck": "tsc --noEmit",