Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
6d5df1e
add umami dokku deploy docs
lebalz Mar 27, 2026
be1159f
add bitwarden
lebalz Mar 27, 2026
08698f3
add dokku-planka docs
lebalz Mar 28, 2026
18135c4
add beszel dokku docs
lebalz Mar 29, 2026
6b0c2ea
add beszel
lebalz Mar 29, 2026
89c7851
Change default LISTEN port and update limitations section
lebalz Mar 30, 2026
72c1ab2
remove unused domain
lebalz Mar 30, 2026
1dfbd15
add node red dokku deploy docs
lebalz Mar 31, 2026
ad30450
add drone setup
lebalz Apr 4, 2026
2e03d51
update drone manual
lebalz Apr 4, 2026
79e9ca2
Merge pull request #285 from GBSL-Informatik/feature/dokku-drone-setup
lebalz Apr 4, 2026
020a166
add jupyterhub
lebalz Apr 5, 2026
b326191
update dokku deploy docs
lebalz Apr 6, 2026
1e84109
move ChoiceAnswer model to folder
lebalz Apr 6, 2026
519535a
add some basic tests
lebalz Apr 8, 2026
83c2424
update dokku deployment instructions and add troubleshooting details
lebalz Apr 8, 2026
7ce6fe0
update deps
lebalz Apr 8, 2026
9581a6b
keep react-pdf @9.2
lebalz Apr 8, 2026
6c92981
fix deps
lebalz Apr 8, 2026
b625c33
Merge pull request #287 from GBSL-Informatik/chore/docusaurus-v3.10
lebalz Apr 10, 2026
ea0ee1c
polish sidebar progress icon
lebalz Apr 11, 2026
2c82396
Merge pull request #288 from GBSL-Informatik:polish-sidebar-progress
lebalz Apr 11, 2026
ec37a19
fix slashCount for root path = /
lebalz Apr 12, 2026
7d0881e
update axios deps
lebalz Apr 14, 2026
4779652
unify deploy instructions
lebalz Apr 14, 2026
0748799
add gitlab upgrade process
lebalz Apr 14, 2026
1464d17
add dokku deploy instructions for sql-injection-demo
lebalz Apr 14, 2026
cbeb453
fix broken link
lebalz Apr 14, 2026
7e8d727
add beszel update flow
lebalz Apr 15, 2026
522b6d9
fix(updateSync): compare versions by semver
lebalz Apr 15, 2026
132629b
fix version comparison.
lebalz Apr 15, 2026
6fc13ff
Merge pull request #289 from GBSL-Informatik:fix/updateSync-resolve-s…
lebalz Apr 15, 2026
a7dc604
add smart docs
lebalz Apr 20, 2026
455f6b3
Merge branch 'main' into refactor-attempt/choice-answer
lebalz Apr 21, 2026
7ee0664
rewrite remark-transformer
lebalz Apr 21, 2026
cae081d
Add new interface Props to Quiz component
lebalz Apr 21, 2026
221e97d
Refactor ChoiceAnswer to Quiz/ChoiceAnswer structure and update relat…
lebalz Apr 28, 2026
f5ed8fe
fix typo
lebalz Apr 28, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => {
},
future: {
v4: true,
experimental_faster: {
faster: {
/**
* no config options for swcJsLoader so far.
* Instead configure it over the jsLoader in the next step
Expand All @@ -156,7 +156,8 @@ const docusaurusConfig = withSiteConfig().then(async (siteConfig) => {
rspackPersistentCache: process.env.NETLIFY ? false : true,
mdxCrossCompilerCache: true,
ssgWorkerThreads: true
}
},
experimental_vcs: 'default-v2'
},
webpack: {
jsLoader: (isServer) => {
Expand Down
76 changes: 38 additions & 38 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "concurrently --raw --kill-others 'PACKAGE_SRC=packages PACKAGE_DEST=tdev-website/docs/packages docusaurus start' 'sleep 1s && ts-node updateSync/packageDocsSync/watch.ts --src packages --dest tdev-website/docs/packages'",
"prebuild": "ts-node updateSync/packageDocsSync/preBuild.ts --src packages --dest tdev-website/docs/packages",
"start": "concurrently --raw --kill-others 'PACKAGE_SRC=packages PACKAGE_DEST=tdev-website/docs/packages docusaurus start' 'sleep 1s && ts-node --files updateSync/packageDocsSync/watch.ts --src packages --dest tdev-website/docs/packages'",
"prebuild": "ts-node --files updateSync/packageDocsSync/preBuild.ts --src packages --dest tdev-website/docs/packages",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
Expand All @@ -21,15 +21,15 @@
"format": "prettier --write .",
"format:check": "prettier --check .",
"test": "vitest --coverage",
"updateTdev": "ts-node updateSync/updateTdev.ts"
"updateTdev": "ts-node --files updateSync/updateTdev.ts"
},
"dependencies": {
"@docusaurus/core": "^3.9.2",
"@docusaurus/faster": "^3.9.2",
"@docusaurus/preset-classic": "^3.9.2",
"@docusaurus/theme-classic": "^3.9.2",
"@docusaurus/theme-common": "^3.9.2",
"@docusaurus/theme-mermaid": "^3.9.2",
"@docusaurus/core": "^3.10.0",
"@docusaurus/faster": "^3.10.0",
"@docusaurus/preset-classic": "^3.10.0",
"@docusaurus/theme-classic": "^3.10.0",
"@docusaurus/theme-common": "^3.10.0",
"@docusaurus/theme-mermaid": "^3.10.0",
"@lexical/clipboard": "^0.35.0",
"@lexical/link": "^0.35.0",
"@lexical/list": "^0.35.0",
Expand All @@ -41,27 +41,27 @@
"@lexical/utils": "^0.35.0",
"@mdi/js": "^7.4.47",
"@mdi/react": "^1.6.1",
"@mdx-js/react": "^3.0.0",
"@mdxeditor/editor": "^3.50.0",
"@mermaid-js/layout-elk": "^0.2.0",
"@mdx-js/react": "^3.1.1",
"@mdxeditor/editor": "^3.54.0",
"@mermaid-js/layout-elk": "^0.2.1",
"@octokit/rest": "^21.1.0",
"@sentry/react": "^9.12.0",
"@sentry/webpack-plugin": "^3.3.1",
"ace-builds": "^1.41.0",
"axios": "^1.9.0",
"ace-builds": "^1.43.6",
"axios": "^1.15.0",
"better-auth": "^1.4.9",
"browser-image-compression": "^2.0.2",
"clsx": "^2.1.1",
"docusaurus-plugin-sass": "^0.2.6",
"dotenv": "^16.5.0",
"es-toolkit": "^1.39.10",
"dotenv": "^17.4.1",
"es-toolkit": "^1.45.1",
"exceljs": "^4.4.0",
"gray-matter": "^4.0.3",
"hashery": "^1.3.0",
"hashery": "^1.5.1",
"heic2any": "^0.0.4",
"idb": "^8.0.3",
"js-yaml": "^4.1.0",
"known-css-properties": "^0.36.0",
"js-yaml": "^4.1.1",
"known-css-properties": "^0.37.0",
"mdast-util-gfm-footnote": "^2.1.0",
"mdast-util-math": "^3.0.0",
"micromark-extension-math": "^3.1.0",
Expand All @@ -73,45 +73,45 @@
"qrcode.react": "^4.2.0",
"quill": "^2.0.3",
"raw-loader": "^4.0.2",
"rc-slider": "^11.1.8",
"react": "^19.2.0",
"rc-slider": "^11.1.9",
"react": "^19.2.4",
"react-ace": "^14.0.1",
"react-diff-viewer-continued": "^3.4.0",
"react-dom": "^19.2.0",
"react-dom": "^19.2.4",
"react-draggable": "^4.5.0",
"react-katex": "^3.0.1",
"react-katex": "^3.1.0",
"react-quilljs": "^2.0.5",
"react-select": "^5.10.1",
"react-select": "^5.10.2",
"reactjs-popup": "^2.0.6",
"rehype-katex": "^7.0.1",
"remark-math": "^6.0.0",
"sass": "^1.93.2",
"socket.io-client": "^4.8.1",
"sass": "^1.99.0",
"socket.io-client": "^4.8.3",
"uuid": "^13.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "^3.9.2",
"@docusaurus/plugin-rsdoctor": "^3.9.2",
"@docusaurus/tsconfig": "^3.9.2",
"@docusaurus/types": "^3.9.2",
"@types/exceljs": "^1.3.0",
"@docusaurus/module-type-aliases": "^3.10.0",
"@docusaurus/plugin-rsdoctor": "^3.10.0",
"@docusaurus/tsconfig": "^3.10.0",
"@docusaurus/types": "^3.10.0",
"@types/exceljs": "^1.3.2",
"@types/fs-extra": "^11.0.4",
"@types/js-yaml": "^4.0.9",
"@types/micromatch": "^4.0.9",
"@types/micromatch": "^4.0.10",
"@types/minimist": "^1.2.5",
"@types/react-dom": "^19.0.3",
"@types/react-dom": "^19.2.3",
"@types/react-katex": "^3.0.4",
"@types/uuid": "^10.0.0",
"@types/wicg-file-system-access": "^2023.10.6",
"@types/uuid": "^11.0.0",
"@types/wicg-file-system-access": "^2023.10.7",
"@vitest/coverage-v8": "^2.0.5",
"concurrently": "^9.2.1",
"fs-extra": "^11.2.0",
"prettier": "^3.3.2",
"fs-extra": "^11.3.4",
"prettier": "^3.8.1",
"remark": "^15.0.1",
"remark-directive": "^4.0.0",
"remark-frontmatter": "^5.0.0",
"ts-node": "^10.9.2",
"typescript": "^5.7.2",
"typescript": "^6.0.2",
"vfile": "^6.0.3",
"vitest": "^2.0.5"
},
Expand Down
9 changes: 8 additions & 1 deletion packages/tdev/page-index/components/TaskableState/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,14 @@ const TaskableState = observer((props: Props) => {
title={`Progress: ${page.progress} / ${page.totalSteps}`}
onClick={(e) => {
const thisElement = e.currentTarget;
thisElement.parentElement?.querySelector('a')?.click();
const categoryButton = thisElement.parentElement?.querySelector<HTMLButtonElement>(
'&>li.theme-doc-sidebar-item-category>div.menu__list-item-collapsible>button'
);
if (categoryButton) {
categoryButton.click();
} else {
thisElement.parentElement?.querySelector('a')?.click();
}
}}
>
<Icon
Expand Down
4 changes: 2 additions & 2 deletions packages/tdev/page-index/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
"version": "1.0.0",
"main": "index.ts",
"types": "index.ts",
"dependencies": {},
"dependencies": { },
"devDependencies": {
"@docusaurus/core": "*",
"@docusaurus/module-type-aliases": "*",
"@types/better-sqlite3": "^7.6.13",
"better-sqlite3": "^12.6.2"
"better-sqlite3": "^12.8.0"
},
"peerDependencies": {
"@tdev/core": "1.0.0"
Expand Down
2 changes: 1 addition & 1 deletion packages/tdev/pyodide-code/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"types": "index.ts",
"dependencies": {
"comlink": "^4.4.2",
"pyodide": "^0.29.1"
"pyodide": "^0.29.3"
},
"devDependencies": {
"@docusaurus/core": "*",
Expand Down
2 changes: 1 addition & 1 deletion packages/tdev/remark-graphviz/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"main": "remark-plugin/index.ts",
"types": "remark-plugin/index.ts",
"dependencies": {
"@hpcc-js/wasm-graphviz": "^1.7.0"
"@hpcc-js/wasm-graphviz": "^1.21.2"
},
"devDependencies": {
"vitest": "*",
Expand Down
4 changes: 2 additions & 2 deletions packages/tdev/remark-pdf/PdfViewer/PdfViewer.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import styles from './PdfViewer.module.scss';
import clsx from 'clsx';
import React, { useState } from 'react';
import { pdfjs, Document, Page } from 'react-pdf';
import 'react-pdf/dist/esm/Page/AnnotationLayer.css';
import 'react-pdf/dist/esm/Page/TextLayer.css';
import 'react-pdf/dist/Page/AnnotationLayer.css';
import 'react-pdf/dist/Page/TextLayer.css';
import Icon from '@mdi/react';
import { mdiArrowLeftCircle, mdiArrowRightCircle, mdiDownload } from '@mdi/js';
import Button from '@tdev-components/shared/Button';
Expand Down
2 changes: 1 addition & 1 deletion packages/tdev/webserial/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"w3c-web-serial",
"docusaurus-plugin-sass",
"@docusaurus/module-type-aliases",
"@types/node",
"node",
"@types/wicg-file-system-access"
]
}
Expand Down
32 changes: 27 additions & 5 deletions src/api/document.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import ChoiceAnswer, {
ChoiceAnswerChoices,
ChoiceAnswerOptionOrders,
ChoiceAnswerQuestionOrder
} from '@tdev-models/documents/ChoiceAnswer';
} from '@tdev-models/documents/Quiz/ChoiceAnswer';

export enum Access {
RO_DocumentRoot = 'RO_DocumentRoot',
Expand All @@ -46,6 +46,15 @@ export interface StringData {
text: string;
}

export interface QuizData {
// nothing yet, just a wrapper for now
}

export interface BooleanAnswerData {
value: boolean | null;
assessed: boolean;
}

export interface ChoiceAnswerData {
choices: ChoiceAnswerChoices;
optionOrders: ChoiceAnswerOptionOrders;
Expand Down Expand Up @@ -122,6 +131,11 @@ export interface ViewStoreTypeMapping {
export type ViewStoreType = keyof ViewStoreTypeMapping;
export type ViewStore = ViewStoreTypeMapping[ViewStoreType];

export interface AssessableDocumentMapping {
['boolean_answer']: BooleanAnswerData;
['choice_answer']: ChoiceAnswerData;
}

export interface ContainerTypeDataMapping {
['_container_placeholder_']: { name: string }; // placeholder to avoid empty interface error
}
Expand All @@ -131,12 +145,13 @@ export interface TaskableDocumentMapping {
['progress_state']: ProgressStateData;
}

export interface TypeDataMapping extends TaskableDocumentMapping, ContainerTypeDataMapping {
export interface TypeDataMapping
extends TaskableDocumentMapping, ContainerTypeDataMapping, AssessableDocumentMapping {
['code']: CodeData;
// TODO: rename to `code_version`?
['script_version']: ScriptVersionData;
['string']: StringData;
['choice_answer']: ChoiceAnswerData;
['quiz']: QuizData;
['quill_v2']: QuillV2Data;
['solution']: SolutionData;
['dir']: DirData;
Expand All @@ -149,6 +164,7 @@ export interface TypeDataMapping extends TaskableDocumentMapping, ContainerTypeD
}
export type ContainerType = keyof ContainerTypeDataMapping;
export type TaskableType = keyof TaskableDocumentMapping;
export type AssessableType = keyof AssessableDocumentMapping;

type KeysWithCode<T> = {
[K in keyof T]: 'code' extends keyof T[K] ? K : never;
Expand All @@ -160,6 +176,11 @@ export interface ContainerTypeModelMapping {
['_container_placeholder_']: iDocumentContainer<ContainerType>; // placeholder to avoid empty interface error
}

export interface AssessableTypeModelMapping {
['boolean_answer']: ChoiceAnswer; // TODO: implement BooleanAnswer model and replace this
['choice_answer']: ChoiceAnswer;
}

export interface TaskableTypeModelMapping {
['task_state']: TaskState;
['progress_state']: ProgressState;
Expand All @@ -168,12 +189,12 @@ export interface TaskableTypeModelMapping {
type EnsureAllTaskable<T extends { [K in keyof T]: iTaskableDocument<any> }> = T;
null as unknown as EnsureAllTaskable<TaskableTypeModelMapping>;

export interface TypeModelMapping extends TaskableTypeModelMapping, ContainerTypeModelMapping {
export interface TypeModelMapping
extends TaskableTypeModelMapping, ContainerTypeModelMapping, AssessableTypeModelMapping {
['code']: Code;
// TODO: rename to `code_version`?
['script_version']: ScriptVersion;
['string']: String;
['choice_answer']: ChoiceAnswer;
['quill_v2']: QuillV2;
['solution']: Solution;
['dir']: Directory;
Expand All @@ -192,6 +213,7 @@ export interface TypeModelMapping extends TaskableTypeModelMapping, ContainerTyp

export type ContainerModelType = ContainerTypeModelMapping[ContainerType];
export type TaskableModelType = TaskableTypeModelMapping[TaskableType];
export type AssessableModelType = AssessableTypeModelMapping[AssessableType];

export type DocumentType = keyof TypeModelMapping;
export type DocumentModelType = TypeModelMapping[DocumentType];
Expand Down
Loading
Loading