From 61230ba301b4ff3d7166be520e825a5d72f41fff Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Thu, 14 May 2026 18:59:46 +0200 Subject: [PATCH 1/2] Exit with error 1 on uncaught error so sytemd unit can pick it up as a crash and restart --- src/back/index.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/back/index.ts b/src/back/index.ts index 992ad74..0f3cfef 100644 --- a/src/back/index.ts +++ b/src/back/index.ts @@ -66,7 +66,8 @@ void (async function () { console.error(error); if (SEALIOUS_SANITY) { console.error("EXITING WITH STATUS 1"); - process.exit(1); } + // we need to always exit with an error status so the systemd unit knows to restart + process.exit(1); } })(); From 2df4029268318c10923b8ba314fd3b0ac11aaf56 Mon Sep 17 00:00:00 2001 From: Kuba Orlik Date: Fri, 22 May 2026 10:28:04 +0200 Subject: [PATCH 2/2] Add video component --- package-lock.json | 14 ++++---- package.json | 2 +- src/back/jdd-components/video/video.css | 5 +++ src/back/jdd-components/video/video.jdd.tsx | 38 +++++++++++++++++++++ src/front/controllers.ts | 3 ++ 5 files changed, 54 insertions(+), 8 deletions(-) create mode 100644 src/back/jdd-components/video/video.css create mode 100644 src/back/jdd-components/video/video.jdd.tsx diff --git a/package-lock.json b/package-lock.json index dafb579..bc47ed2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,7 +15,7 @@ "@sealcode/add-to-head": "^1.0.0", "@sealcode/file-manager": "^1.0.2", "@sealcode/jdd": "^0.8.6", - "@sealcode/jdd-editor": "^0.2.18", + "@sealcode/jdd-editor": "^0.2.19", "@sealcode/monaco-wrapper": "^0.0.4", "@sealcode/sealgen": "^0.19.20", "@sealcode/show-first-row": "^0.1.0", @@ -1380,9 +1380,9 @@ } }, "node_modules/@sealcode/jdd-editor": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.2.18.tgz", - "integrity": "sha512-14oT7FDjKWuH5aMm5C2jsdpFAGjz+cQjomj4aLMrMkPUtPSYtKV7CUxseM+OJKynSJl05iPTAtc1FebydqlRHQ==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.2.19.tgz", + "integrity": "sha512-zkM5fTx5UavRDfueLYX2wj6vkG4Ytd9Ro01Ik+u6681mu99z7WLLYKKSIzvTY6i2Qo2tVYujE1wvhg1sugBM/Q==", "dependencies": { "@koa/router": "^13.1.0", "@sealcode/jdd": "^0.8.6", @@ -16021,9 +16021,9 @@ } }, "@sealcode/jdd-editor": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.2.18.tgz", - "integrity": "sha512-14oT7FDjKWuH5aMm5C2jsdpFAGjz+cQjomj4aLMrMkPUtPSYtKV7CUxseM+OJKynSJl05iPTAtc1FebydqlRHQ==", + "version": "0.2.19", + "resolved": "https://registry.npmjs.org/@sealcode/jdd-editor/-/jdd-editor-0.2.19.tgz", + "integrity": "sha512-zkM5fTx5UavRDfueLYX2wj6vkG4Ytd9Ro01Ik+u6681mu99z7WLLYKKSIzvTY6i2Qo2tVYujE1wvhg1sugBM/Q==", "requires": { "@koa/router": "^13.1.0", "@sealcode/jdd": "^0.8.6", diff --git a/package.json b/package.json index e840429..d6f758b 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "@sealcode/add-to-head": "^1.0.0", "@sealcode/file-manager": "^1.0.2", "@sealcode/jdd": "^0.8.6", - "@sealcode/jdd-editor": "^0.2.18", + "@sealcode/jdd-editor": "^0.2.19", "@sealcode/monaco-wrapper": "^0.0.4", "@sealcode/sealgen": "^0.19.20", "@sealcode/show-first-row": "^0.1.0", diff --git a/src/back/jdd-components/video/video.css b/src/back/jdd-components/video/video.css new file mode 100644 index 0000000..c32558a --- /dev/null +++ b/src/back/jdd-components/video/video.css @@ -0,0 +1,5 @@ +.video { + display: flex; + flex-flow: column; + align-items: center; +} diff --git a/src/back/jdd-components/video/video.jdd.tsx b/src/back/jdd-components/video/video.jdd.tsx new file mode 100644 index 0000000..4fd8c1a --- /dev/null +++ b/src/back/jdd-components/video/video.jdd.tsx @@ -0,0 +1,38 @@ +import { TempstreamJSX } from "tempstream"; +import type { ComponentToHTMLArgs } from "@sealcode/jdd"; +import { Component, ComponentArguments } from "@sealcode/jdd"; +import { PathFilePointer } from "@sealcode/file-manager"; + +const component_arguments = { + file: new ComponentArguments.File(), + max_height: new ComponentArguments.Number(), + max_width: new ComponentArguments.Number(), +} as const; + +export class Video extends Component { + getArguments() { + return component_arguments; + } + + async toHTML({ + args: { file, max_width, max_height }, + classes, + }: ComponentToHTMLArgs): Promise { + return ( +
+ {file instanceof PathFilePointer ? ( + + ) : ( + "" + )} +
+ ); + } +} diff --git a/src/front/controllers.ts b/src/front/controllers.ts index 752a071..eb57c9c 100644 --- a/src/front/controllers.ts +++ b/src/front/controllers.ts @@ -37,6 +37,9 @@ application.register("jdd-table-paste", JddTablePaste); import { default as JsonEditor } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/json-editor.stimulus.js"; application.register("json-editor", JsonEditor); +import { default as MarkdownTextarea } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/markdown-textarea.stimulus.js"; +application.register("markdown-textarea", MarkdownTextarea); + import { default as RefreshOnTsChanges } from "./../../node_modules/@sealcode/jdd-editor/src/controllers/refresh-on-ts-changes.stimulus.js"; application.register("refresh-on-ts-changes", RefreshOnTsChanges);