@openspecui/web 3.11.6 → 4.0.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.
Files changed (65) hide show
  1. package/dist/assets/CanvasRenderer-CLQD6X5w.js +1 -0
  2. package/dist/assets/WebGLRenderer-CCytcJrB.js +1 -0
  3. package/dist/assets/WebGPURenderer-DAH_m5D3.js +1 -0
  4. package/dist/assets/browserAll-Dp578vps.js +1 -0
  5. package/dist/assets/{dist-DSuLZBKC.js → dist--fdiDhsa.js} +1 -1
  6. package/dist/assets/{dist-DHe7I_KZ.js → dist-56Ibj2m1.js} +1 -1
  7. package/dist/assets/{dist-C4vm2Q_T.js → dist-BhkpGj11.js} +1 -1
  8. package/dist/assets/{dist-B1OAaHtN.js → dist-BzodlTBW.js} +1 -1
  9. package/dist/assets/{dist-BD5mncFZ.js → dist-CKjYpdph.js} +1 -1
  10. package/dist/assets/{dist-BoE24RpQ.js → dist-DKpbXO9V.js} +1 -1
  11. package/dist/assets/{dist-CM2xvCkf.js → dist-DSyaj1iO.js} +1 -1
  12. package/dist/assets/dist-DT99Gaya.js +1 -0
  13. package/dist/assets/dist-D_hpFHgB.js +1 -0
  14. package/dist/assets/dist-DroIyWBO.js +1 -0
  15. package/dist/assets/{dist-BPXRU7xA.js → dist-KjL9POKA.js} +1 -1
  16. package/dist/assets/{dist-iayOqDE6.js → dist-v0p4Oxur.js} +1 -1
  17. package/dist/assets/{init-DUi_seZz.js → init-CHa3E6Fn.js} +1 -1
  18. package/dist/assets/main-BzdJabcp.js +1670 -0
  19. package/dist/assets/trpc-D1nFWwj3.js +1 -0
  20. package/dist/assets/webworkerAll-CONHxfi1.js +1 -0
  21. package/dist/index.html +1 -1
  22. package/dist-ssg/client/.vite/ssr-manifest.json +25 -15
  23. package/dist-ssg/client/assets/CanvasRenderer-7YZbbJmc.js +1 -0
  24. package/dist-ssg/client/assets/WebGLRenderer-BZ3xFy4y.js +1 -0
  25. package/dist-ssg/client/assets/WebGPURenderer-Bx8MAvvI.js +1 -0
  26. package/dist-ssg/client/assets/browserAll-y9op8R_K.js +1 -0
  27. package/dist-ssg/client/assets/{dist-n4MxMk4A.js → dist-0BjR7vsp.js} +1 -1
  28. package/dist-ssg/client/assets/{dist-CsJzUP3e.js → dist-B7FpZICw.js} +1 -1
  29. package/dist-ssg/client/assets/dist-BJTXGL17.js +1 -0
  30. package/dist-ssg/client/assets/{dist-DMB6LAIC.js → dist-BOTbMEl0.js} +1 -1
  31. package/dist-ssg/client/assets/{dist-BZziKvqb.js → dist-BnCMiRF2.js} +1 -1
  32. package/dist-ssg/client/assets/{dist-CIuFQ_JU.js → dist-CJOctZ0g.js} +1 -1
  33. package/dist-ssg/client/assets/{dist-BjFWEmHB.js → dist-DDCOLIIX.js} +1 -1
  34. package/dist-ssg/client/assets/{dist-BHOFHtBx.js → dist-DJnwvakG.js} +1 -1
  35. package/dist-ssg/client/assets/dist-DMrNCfrj.js +1 -0
  36. package/dist-ssg/client/assets/{dist-Bv4vhBN7.js → dist-Dz5uN7CX.js} +1 -1
  37. package/dist-ssg/client/assets/{dist-BnZ2HTAx.js → dist-SPugoAts.js} +1 -1
  38. package/dist-ssg/client/assets/dist-ZLeHAK7-.js +1 -0
  39. package/dist-ssg/client/assets/{ghostty-web-BcYHa-ju.js → ghostty-web-Dvv-X0yw.js} +1 -1
  40. package/dist-ssg/client/assets/{index.ssg-VKLGiOJL.js → index.ssg-DsnsJxRg.js} +141 -140
  41. package/dist-ssg/client/assets/{init-BotiXPO-.js → init-CCfzHfxE.js} +1 -1
  42. package/dist-ssg/client/assets/trpc-CT6vor49.js +1 -0
  43. package/dist-ssg/client/assets/webworkerAll-BgsJypDI.js +1 -0
  44. package/dist-ssg/client/index.ssg.html +1 -1
  45. package/dist-ssg/server/entry-server.js +76 -1
  46. package/package.json +3 -3
  47. package/dist/assets/CanvasRenderer-B4xoxAIc.js +0 -1
  48. package/dist/assets/WebGLRenderer-B0Jtk0nh.js +0 -1
  49. package/dist/assets/WebGPURenderer-Cfl-sqIJ.js +0 -1
  50. package/dist/assets/browserAll-BAtKDoiA.js +0 -1
  51. package/dist/assets/dist-BPb0nckX.js +0 -1
  52. package/dist/assets/dist-C5Si4P75.js +0 -1
  53. package/dist/assets/dist-CyBfJ6hc.js +0 -1
  54. package/dist/assets/main-CWtuI7Nz.js +0 -1669
  55. package/dist/assets/trpc-C0ZfTMd0.js +0 -1
  56. package/dist/assets/webworkerAll-s8l06Z4r.js +0 -1
  57. package/dist-ssg/client/assets/CanvasRenderer-C0SJkAx_.js +0 -1
  58. package/dist-ssg/client/assets/WebGLRenderer-_kPaznMR.js +0 -1
  59. package/dist-ssg/client/assets/WebGPURenderer-BxiyOM-9.js +0 -1
  60. package/dist-ssg/client/assets/browserAll-gJgi68_s.js +0 -1
  61. package/dist-ssg/client/assets/dist-CrxbKAeY.js +0 -1
  62. package/dist-ssg/client/assets/dist-DI0_1FlR.js +0 -1
  63. package/dist-ssg/client/assets/dist-DtUEqoN7.js +0 -1
  64. package/dist-ssg/client/assets/trpc-C4pu2wyc.js +0 -1
  65. package/dist-ssg/client/assets/webworkerAll-DBwLgZ3e.js +0 -1
@@ -1 +1 @@
1
- import{it as e}from"./Geometry-DYOOLchf.js";import{E as t,T as n}from"./index.ssg-VKLGiOJL.js";e.add(n),e.add(t);
1
+ import{it as e}from"./Geometry-DYOOLchf.js";import{E as t,T as n}from"./index.ssg-DsnsJxRg.js";e.add(n),e.add(t);
@@ -0,0 +1 @@
1
+ import{F as e}from"./index.ssg-DsnsJxRg.js";export{e as trpcClient};
@@ -0,0 +1 @@
1
+ import"./Geometry-DYOOLchf.js";import"./index.ssg-DsnsJxRg.js";import"./init-CCfzHfxE.js";
@@ -8,7 +8,7 @@
8
8
  <script>
9
9
  window.__OPENSPEC_BASE_PATH__ = '/'
10
10
  </script>
11
- <script type="module" crossorigin src="/assets/index.ssg-VKLGiOJL.js"></script>
11
+ <script type="module" crossorigin src="/assets/index.ssg-DsnsJxRg.js"></script>
12
12
  <link rel="modulepreload" crossorigin href="/assets/chunk-DECur_0Z.js">
13
13
  <link rel="modulepreload" crossorigin href="/assets/dist-UN0VvTJo.js">
14
14
  <link rel="modulepreload" crossorigin href="/assets/dist-DK_X22KS.js">
@@ -39642,6 +39642,72 @@ function getBuiltinSoundUrl(soundId) {
39642
39642
  return option ? `/sounds/${option.filename}` : null;
39643
39643
  }
39644
39644
  //#endregion
39645
+ //#region ../core/src/task-progress.ts
39646
+ var CHECKBOX_TASK_LINE = /^\s*[-*]\s+\[([ xX])\]\s+(.+)$/;
39647
+ var MARKDOWN_FILE_PATH = /\.(?:md|markdown)$/i;
39648
+ function isMarkdownTaskSourcePath(path) {
39649
+ return MARKDOWN_FILE_PATH.test(path);
39650
+ }
39651
+ function parseMarkdownTasks(content, options = {}) {
39652
+ const tasks = [];
39653
+ const lines = content.split("\n");
39654
+ let currentSection = "";
39655
+ let taskIndex = options.initialIndex ?? 0;
39656
+ for (const line of lines) {
39657
+ const headingMatch = line.match(/^#{1,6}\s+(.+)$/);
39658
+ if (headingMatch) {
39659
+ currentSection = headingMatch[1].trim();
39660
+ continue;
39661
+ }
39662
+ const taskMatch = line.match(CHECKBOX_TASK_LINE);
39663
+ if (!taskMatch) continue;
39664
+ taskIndex += 1;
39665
+ tasks.push({
39666
+ id: `task-${taskIndex}`,
39667
+ text: taskMatch[2].trim(),
39668
+ completed: taskMatch[1].toLowerCase() === "x",
39669
+ section: currentSection || void 0
39670
+ });
39671
+ }
39672
+ return tasks;
39673
+ }
39674
+ function computeTaskProgress(tasks) {
39675
+ return {
39676
+ total: tasks.length,
39677
+ completed: tasks.filter((task) => task.completed).length
39678
+ };
39679
+ }
39680
+ function getSchemaTaskPatterns(schemaDetail) {
39681
+ if (!schemaDetail) return [];
39682
+ const patterns = [...schemaDetail.artifacts.map((artifact) => artifact.outputPath), schemaDetail.applyTracks].filter((pattern) => typeof pattern === "string" && pattern.trim().length > 0);
39683
+ return [...new Set(patterns)];
39684
+ }
39685
+ function selectTaskSources(files, options) {
39686
+ const markdownFiles = files.filter((file) => file.type === "file" && typeof file.content === "string" && isMarkdownTaskSourcePath(file.path));
39687
+ const schemaPatterns = getSchemaTaskPatterns(options.schemaDetail);
39688
+ if (schemaPatterns.length > 0) return markdownFiles.filter((file) => schemaPatterns.some((pattern) => opsxPathMatchesPattern(file.path, pattern))).map((file) => ({
39689
+ path: file.path,
39690
+ content: file.content
39691
+ }));
39692
+ if (options.hasSchemaMetadata) return markdownFiles.map((file) => ({
39693
+ path: file.path,
39694
+ content: file.content
39695
+ }));
39696
+ return markdownFiles.filter((file) => file.path === "tasks.md").map((file) => ({
39697
+ path: file.path,
39698
+ content: file.content
39699
+ }));
39700
+ }
39701
+ function projectTasksFromMarkdownFiles(files, options = {}) {
39702
+ const sources = selectTaskSources(files, options);
39703
+ const tasks = [];
39704
+ for (const source of sources) tasks.push(...parseMarkdownTasks(source.content, { initialIndex: tasks.length }));
39705
+ return {
39706
+ tasks,
39707
+ progress: computeTaskProgress(tasks)
39708
+ };
39709
+ }
39710
+ //#endregion
39645
39711
  //#region src/lib/static-data-provider.ts
39646
39712
  /**
39647
39713
  * In-memory cache of the loaded snapshot
@@ -39799,6 +39865,14 @@ function buildStaticObjectiveTrends(snapshot, pointLimit, rightEdgeTs) {
39799
39865
  }), pointLimit, "sum", rightEdgeTs);
39800
39866
  return trends;
39801
39867
  }
39868
+ function getArchiveTaskProgress(snapshot, archive) {
39869
+ if (archive.progress) return archive.progress;
39870
+ const schemaDetail = archive.entity.schemaName ? snapshot.opsx?.schemaDetails[archive.entity.schemaName] ?? null : null;
39871
+ return projectTasksFromMarkdownFiles(archive.entity.files, {
39872
+ schemaDetail,
39873
+ hasSchemaMetadata: Boolean(archive.entity.schemaName)
39874
+ }).progress;
39875
+ }
39802
39876
  function normalizePath(path) {
39803
39877
  return path.replace(/\\/g, "/").replace(/^\.?\//, "");
39804
39878
  }
@@ -40085,7 +40159,7 @@ async function getDashboardOverview() {
40085
40159
  const requirements = allSpecifications.reduce((sum, spec) => sum + spec.requirements, 0);
40086
40160
  const tasksTotal = allActiveChanges.reduce((sum, change) => sum + change.progress.total, 0);
40087
40161
  const tasksCompleted = allActiveChanges.reduce((sum, change) => sum + change.progress.completed, 0);
40088
- const archivedTasksCompleted = 0;
40162
+ const archivedTasksCompleted = snapshot.archives.reduce((sum, archive) => sum + getArchiveTaskProgress(snapshot, archive).completed, 0);
40089
40163
  const taskCompletionPercent = tasksTotal > 0 ? Math.round(tasksCompleted / tasksTotal * 100) : null;
40090
40164
  const inProgressChanges = allActiveChanges.filter((change) => change.progress.total > 0 && change.progress.completed < change.progress.total).length;
40091
40165
  const trends = buildStaticObjectiveTrends(snapshot, trendPointLimit, rightEdgeTs);
@@ -40202,6 +40276,7 @@ async function getArchives() {
40202
40276
  return snapshot.archives.map((archive) => ({
40203
40277
  id: archive.id,
40204
40278
  name: archive.name,
40279
+ progress: getArchiveTaskProgress(snapshot, archive),
40205
40280
  createdAt: archive.createdAt,
40206
40281
  updatedAt: archive.updatedAt
40207
40282
  }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openspecui/web",
3
- "version": "3.11.6",
3
+ "version": "4.0.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "openspecui-ssg": "./dist-ssg/ssg-cli.mjs"
@@ -41,8 +41,8 @@
41
41
  "@fontsource/share-tech-mono": "^5.2.7",
42
42
  "@lezer/common": "^1.4.0",
43
43
  "@lezer/highlight": "^1.2.3",
44
- "@openspecui/search": "3.11.6",
45
- "@openspecui/server": "3.11.6",
44
+ "@openspecui/search": "4.0.1",
45
+ "@openspecui/server": "4.0.1",
46
46
  "@storybook/addon-vitest": "^10.2.19",
47
47
  "@storybook/web-components": "^10.2.19",
48
48
  "@storybook/web-components-vite": "^10.2.19",
@@ -1 +0,0 @@
1
- import"./Geometry-Dr8DqqDe.js";import{w as e}from"./main-CWtuI7Nz.js";export{e as CanvasRenderer};
@@ -1 +0,0 @@
1
- import"./Geometry-Dr8DqqDe.js";import{C as e}from"./main-CWtuI7Nz.js";export{e as WebGLRenderer};
@@ -1 +0,0 @@
1
- import"./Geometry-Dr8DqqDe.js";import{S as e}from"./main-CWtuI7Nz.js";export{e as WebGPURenderer};
@@ -1 +0,0 @@
1
- import{it as e,x as t}from"./Geometry-Dr8DqqDe.js";import{A as n,D as r,O as i,k as a}from"./main-CWtuI7Nz.js";import"./init-DUi_seZz.js";e.add(n),e.mixin(t,a),e.add(i),e.mixin(t,r);
@@ -1 +0,0 @@
1
- import"./dist-vqrjFRzf.js";import{t as e}from"./main-CWtuI7Nz.js";export{e as yaml};
@@ -1 +0,0 @@
1
- import"./dist-vqrjFRzf.js";import{g as e}from"./main-CWtuI7Nz.js";export{e as css};
@@ -1 +0,0 @@
1
- import"./dist-vqrjFRzf.js";import{b as e}from"./main-CWtuI7Nz.js";export{e as json};