From 2de42cdb653f2803209394c42c2f90579ebaad69 Mon Sep 17 00:00:00 2001 From: Simon Schweizer Date: Mon, 20 Apr 2026 12:05:34 +0200 Subject: [PATCH 1/3] use pinned versions for actions and dependencies --- .github/dependabot.yml | 12 ++++++++++++ .github/workflows/main.yml | 10 +++++----- .github/workflows/pull_request.yml | 8 ++++---- docs/package.json | 10 +++++----- 4 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..68adbda1a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,12 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + + - package-ecosystem: "npm" + directory: "/docs" + schedule: + interval: "weekly" + open-pull-requests-limit: 10 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 7d4544298..bf8cf618e 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,17 +12,17 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 with: # fetch all commits to get last updated time or other git log info fetch-depth: 0 - + - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # choose node.js version to use node-version: 24 - + - name: Install dependencies run: cd docs && npm ci @@ -32,7 +32,7 @@ jobs: # please check out the docs of the workflow for more details # @see https://github.com/crazy-max/ghaction-github-pages - name: Deploy to GitHub Pages - uses: crazy-max/ghaction-github-pages@v4 + uses: crazy-max/ghaction-github-pages@df5cc2bfa78282ded844b354faee141f06b41865 # v4.2.0 with: # deploy to gh-pages branch target_branch: gh-pages diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index 125503931..44060071e 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -12,14 +12,14 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 - + - uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 + - name: Setup Node.js - uses: actions/setup-node@v3 + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: # choose node.js version to use node-version: 24 - + - name: Install dependencies run: cd docs && npm ci diff --git a/docs/package.json b/docs/package.json index df52c905b..b9182f9c0 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,14 +16,14 @@ "@vuepress/plugin-markdown-math": "2.0.0-rc.121", "@vuepress/plugin-markdown-tab": "2.0.0-rc.121", "@vuepress/plugin-slimsearch": "2.0.0-rc.121", - "katex": "^0.16.28", - "sass-embedded": "^1.97.3", - "sass-loader": "^16.0.7", - "vue": "^3.5.28", + "katex": "0.16.28", + "sass-embedded": "1.97.3", + "sass-loader": "16.0.7", + "vue": "3.5.28", "vuepress": "2.0.0-rc.26", "vuepress-theme-hope": "2.0.0-rc.102" }, "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "^4.57.1" + "@rollup/rollup-linux-x64-gnu": "4.59.0" } } From 44c4507760454e2f7eeaf77fe6a1ea15d39f2e5e Mon Sep 17 00:00:00 2001 From: Simon Schweizer Date: Mon, 20 Apr 2026 13:07:14 +0200 Subject: [PATCH 2/3] create script to automate new version creation reduced the number of places to hold the version list --- docs/src/.vuepress/components/OldVersions.vue | 19 +++ docs/src/.vuepress/data/releases.ts | 32 +++++ docs/src/.vuepress/layouts/PageLayout.vue | 36 ++---- docs/src/.vuepress/scripts/create-version.ts | 115 ++++++++++++++++++ .../sidebar/fetch-versioned-release-notes.sh | 72 ----------- .../sidebar/fetch-versioned-release-notes.ts | 90 ++++++++++++++ docs/src/.vuepress/theme.ts | 45 +++---- docs/src/operations/old-versions.md | 25 +--- docs/src/operations/v1.0.0/release-notes.md | 1 - docs/src/operations/v1.1.0/release-notes.md | 1 - docs/src/operations/v1.2.0/release-notes.md | 1 - docs/src/operations/v1.3.0/release-notes.md | 1 - docs/src/operations/v1.3.1/release-notes.md | 1 - docs/src/operations/v1.3.2/release-notes.md | 1 - docs/src/operations/v1.4.0/release-notes.md | 1 - docs/src/operations/v1.5.0/release-notes.md | 1 - docs/src/operations/v1.5.1/release-notes.md | 1 - docs/src/operations/v1.5.2/release-notes.md | 1 - docs/src/operations/v1.6.0/release-notes.md | 1 - docs/src/operations/v1.7.0/release-notes.md | 1 - docs/src/operations/v1.7.1/release-notes.md | 1 - docs/src/operations/v1.8.0/release-notes.md | 1 - docs/src/operations/v1.9.0/release-notes.md | 1 - docs/src/operations/v2.0.0/release-notes.md | 1 - docs/src/operations/v2.0.1/release-notes.md | 1 - docs/src/operations/v2.0.2/release-notes.md | 1 - docs/src/operations/v2.1.0/release-notes.md | 2 +- 27 files changed, 289 insertions(+), 165 deletions(-) create mode 100644 docs/src/.vuepress/components/OldVersions.vue create mode 100644 docs/src/.vuepress/scripts/create-version.ts delete mode 100755 docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh create mode 100644 docs/src/.vuepress/sidebar/fetch-versioned-release-notes.ts diff --git a/docs/src/.vuepress/components/OldVersions.vue b/docs/src/.vuepress/components/OldVersions.vue new file mode 100644 index 000000000..6793ec0ee --- /dev/null +++ b/docs/src/.vuepress/components/OldVersions.vue @@ -0,0 +1,19 @@ + + + diff --git a/docs/src/.vuepress/data/releases.ts b/docs/src/.vuepress/data/releases.ts index 4e2275624..f49e036e6 100644 --- a/docs/src/.vuepress/data/releases.ts +++ b/docs/src/.vuepress/data/releases.ts @@ -26,6 +26,38 @@ export const releases: Record = { }, }; +// --- Version registry (single source of truth) --- +// Sidebar keys reference generator functions by name; mapped in theme.ts. +// Ordered newest-first. +export type SidebarKey = 'v2_latest' | 'v2_0_0' | 'v1_latest' | 'v1_gte_1_7' | 'v1_gte_1_5' | 'v1_gte_1_0'; + +export interface VersionEntry { + tag: string; + sidebar: SidebarKey; +} + +export const allVersions: VersionEntry[] = [ + { tag: '2.1.0', sidebar: 'v2_latest' }, + { tag: '2.0.2', sidebar: 'v2_0_0' }, + { tag: '2.0.1', sidebar: 'v2_0_0' }, + { tag: '2.0.0', sidebar: 'v2_0_0' }, + { tag: '1.9.0', sidebar: 'v1_latest' }, + { tag: '1.8.0', sidebar: 'v1_gte_1_7' }, + { tag: '1.7.1', sidebar: 'v1_gte_1_7' }, + { tag: '1.7.0', sidebar: 'v1_gte_1_7' }, + { tag: '1.6.0', sidebar: 'v1_gte_1_5' }, + { tag: '1.5.2', sidebar: 'v1_gte_1_5' }, + { tag: '1.5.1', sidebar: 'v1_gte_1_5' }, + { tag: '1.5.0', sidebar: 'v1_gte_1_5' }, + { tag: '1.4.0', sidebar: 'v1_gte_1_0' }, + { tag: '1.3.2', sidebar: 'v1_gte_1_0' }, + { tag: '1.3.1', sidebar: 'v1_gte_1_0' }, + { tag: '1.3.0', sidebar: 'v1_gte_1_0' }, + { tag: '1.2.0', sidebar: 'v1_gte_1_0' }, + { tag: '1.1.0', sidebar: 'v1_gte_1_0' }, + { tag: '1.0.0', sidebar: 'v1_gte_1_0' }, +]; + export const latestVersion = '2.1.0'; export function getReleaseFromPath(path: string): Release | undefined { diff --git a/docs/src/.vuepress/layouts/PageLayout.vue b/docs/src/.vuepress/layouts/PageLayout.vue index daab1228f..c730251b1 100644 --- a/docs/src/.vuepress/layouts/PageLayout.vue +++ b/docs/src/.vuepress/layouts/PageLayout.vue @@ -2,10 +2,10 @@ import { Layout as ParentLayout, PageContent } from 'vuepress-theme-hope/client' import { useRoute, useRouter } from "vue-router"; import { ref, onMounted } from 'vue' +import { allVersions, latestVersion } from '../data/releases' const version = ref(""); -const latestVersion = "v2.1.0"; - +const latestTag = `v${latestVersion}`; function setVersionBasedOnCurrentPath() : void { if (route.path.startsWith('/operations/')) { @@ -13,11 +13,9 @@ function setVersionBasedOnCurrentPath() : void { const firstSlash = input.indexOf("/"); var result = firstSlash !== -1 ? input.slice(0, firstSlash) : input; if (result === "latest") { - result = latestVersion; + result = latestTag; } version.value = result; - - } else { version.value = ""; } @@ -25,7 +23,6 @@ function setVersionBasedOnCurrentPath() : void { const route = useRoute(); - const router = useRouter(); router.afterEach((_to, _from) => { setVersionBasedOnCurrentPath(); @@ -39,11 +36,10 @@ function navigateToNewVersion() { const input = route.path.substring('/operations/'.length); const firstSlash = input.indexOf("/"); const result = firstSlash !== -1 ? input.slice(firstSlash + 1) : ""; - if (version.value === latestVersion) { + if (version.value === latestTag) { router.push('/operations/' + "latest" + "/" + result); } else { router.push('/operations/' + version.value + "/" + result); - } } @@ -55,25 +51,9 @@ function navigateToNewVersion() {
@@ -84,4 +64,4 @@ function navigateToNewVersion() { .version-selector { margin-top: 20px; } - \ No newline at end of file + diff --git a/docs/src/.vuepress/scripts/create-version.ts b/docs/src/.vuepress/scripts/create-version.ts new file mode 100644 index 000000000..36b57e3b4 --- /dev/null +++ b/docs/src/.vuepress/scripts/create-version.ts @@ -0,0 +1,115 @@ +#!/usr/bin/env npx tsx +// Creates a new DSF documentation version. +// +// Usage: npx tsx docs/src/.vuepress/scripts/create-version.ts +// Example: npx tsx docs/src/.vuepress/scripts/create-version.ts 2.2.0 +// +// What it does: +// 1. Copies the current latest version folder to operations/v/ +// 2. Updates releases.ts: adds new entry to allVersions, updates latestVersion, +// adds a releases entry with TODO digests +// 3. Updates the latest symlink to point to v/ +// 4. Runs fetch-versioned-release-notes.ts if a GitHub release exists + +import { cpSync, existsSync, readFileSync, writeFileSync, unlinkSync, symlinkSync, realpathSync } from 'fs'; +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { execSync } from 'child_process'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const OPERATIONS_DIR = resolve(__dirname, '../../operations'); +const RELEASES_FILE = resolve(__dirname, '../data/releases.ts'); + +function die(msg: string): never { + console.error(`Error: ${msg}`); + process.exit(1); +} + +function parseVersion(v: string): [number, number, number] { + const m = v.match(/^(\d+)\.(\d+)\.(\d+)$/); + if (!m) die(`Invalid version format: "${v}". Expected X.Y.Z`); + return [parseInt(m![1]), parseInt(m![2]), parseInt(m![3])]; +} + +function main() { + const newVersion = process.argv[2]; + if (!newVersion) die('Usage: npx tsx create-version.ts \n Example: npx tsx create-version.ts 2.2.0'); + + parseVersion(newVersion); // validate format + + const newDir = resolve(OPERATIONS_DIR, `v${newVersion}`); + if (existsSync(newDir)) die(`Directory ${newDir} already exists.`); + + // --- 1. Determine current latest and copy --- + const latestLink = resolve(OPERATIONS_DIR, 'latest'); + const currentLatestDir = realpathSync(latestLink); + const currentLatestVersion = currentLatestDir.match(/v(\d+\.\d+\.\d+)$/)?.[1]; + if (!currentLatestVersion) die(`Could not determine current latest version from symlink: ${currentLatestDir}`); + + console.log(`Copying v${currentLatestVersion}/ → v${newVersion}/...`); + cpSync(currentLatestDir, newDir, { recursive: true }); + + // --- 2. Update releases.ts --- + console.log('Updating releases.ts...'); + let src = readFileSync(RELEASES_FILE, 'utf-8'); + + // Determine sidebar key from previous latest + const prevSidebarMatch = src.match(new RegExp(`\\{\\s*tag:\\s*'${currentLatestVersion}'\\s*,\\s*sidebar:\\s*'([^']+)'`)); + const sidebarKey = prevSidebarMatch?.[1] ?? 'v2_latest'; + + // Add new entry at the top of allVersions + const allVersionsMarker = 'export const allVersions: VersionEntry[] = ['; + const newEntry = ` { tag: '${newVersion}', sidebar: '${sidebarKey}' },`; + src = src.replace(allVersionsMarker, `${allVersionsMarker}\n${newEntry}`); + + // Update latestVersion + src = src.replace( + /export const latestVersion = '[^']+';/, + `export const latestVersion = '${newVersion}';` + ); + + // Add releases entry with TODO digests (if major >= 2) + const [major] = parseVersion(newVersion); + if (major >= 2) { + const releasesClosingBrace = /^};$/m; + const newRelease = ` '${newVersion}': { + tag: '${newVersion}', + previousTag: '${currentLatestVersion}', + images: { + fhir: { digest: 'sha256:TODO' }, + fhir_proxy: { digest: 'sha256:TODO' }, + bpe: { digest: 'sha256:TODO' }, + bpe_proxy: { digest: 'sha256:TODO' }, + }, + },\n`; + src = src.replace(releasesClosingBrace, `${newRelease}};`); + } + + writeFileSync(RELEASES_FILE, src, 'utf-8'); + + // --- 3. Update latest symlink --- + console.log(`Updating latest symlink → v${newVersion}/...`); + unlinkSync(latestLink); + symlinkSync(`v${newVersion}`, latestLink); + + // --- 4. Fetch release notes (if release exists) --- + const fetchScript = resolve(__dirname, '../sidebar/fetch-versioned-release-notes.ts'); + if (existsSync(fetchScript)) { + console.log('Fetching release notes...'); + try { + execSync(`npx tsx "${fetchScript}"`, { stdio: 'inherit' }); + } catch { + console.log('(Release notes fetch had warnings — may not exist on GitHub yet)'); + } + } + + // --- Done --- + console.log(`\nāœ“ Version ${newVersion} created successfully.\n`); + console.log('Remaining manual steps:'); + console.log(` 1. Update image digests in releases.ts (replace sha256:TODO)`); + console.log(` 2. Review/edit release-specific content in operations/v${newVersion}/`); + console.log(` (release-notes.md, upgrade-from-*.md if upgrade steps differ)`); + console.log(` 3. Run: cd docs && npm run docs:build`); +} + +main(); diff --git a/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh b/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh deleted file mode 100755 index f5de21af4..000000000 --- a/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.sh +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash -# To run: chmod +x fetch-versioned-release-notes.sh && ./fetch-versioned-release-notes.sh -# Dokumentation https://wiki.gecko.hs-heilbronn.de/doc/dokumentation-release-notes-script-45Ex3hoxjB - -# GitHub repository details -REPO_OWNER="datasharingframework" -REPO_NAME="dsf" - -# Output base directory (this will hold the versioned folders) -OUTPUT_BASE_DIR="../../operations" - -# Define the range of versions -VERSIONS=("v1.0.0" "v1.1.0" "v1.2.0" "v1.3.0" "v1.3.1" "v1.3.2" "v1.4.0" "v1.5.0" "v1.5.1" "v1.5.2" "v1.6.0" "v1.7.0" "v1.7.1" "v1.8.0" "v1.9.0" "v2.0.0" "v2.0.1" "v2.0.2" "v2.1.0") - -# Fetch all release details -echo "Fetching all releases..." -RELEASES=$(curl -s https://api.github.com/repos/$REPO_OWNER/$REPO_NAME/releases) - -# Loop through each version in the version list -for VERSION in "${VERSIONS[@]}"; do - VERSION_FOUND=$(echo "$RELEASES" | jq -r ".[] | select(.tag_name == \"$VERSION\")") - - if [ ! -z "$VERSION_FOUND" ]; then - VERSION_DIR="$OUTPUT_BASE_DIR/$VERSION" - - if [ ! -d "$VERSION_DIR" ]; then - echo "Directory $VERSION_DIR does not exist. Skipping $VERSION." - continue - fi - - OUTPUT_FILE="$VERSION_DIR/release-notes.md" - - -# Write frontmatter at the top of the Markdown file -cat < "$OUTPUT_FILE" ---- -title: Release Notes ($VERSION) -icon: note ---- - -## [Release Notes for $VERSION](https://github.com/$REPO_OWNER/$REPO_NAME/releases/tag/$VERSION) - -::: tip Release Notes -You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). -::: - -EOF - - echo "$RELEASES" | jq -r ".[] | select(.tag_name == \"$VERSION\") | @base64" | while read -r RELEASE; do - RELEASE_JSON=$(echo "$RELEASE" | base64 --decode) - RELEASE_BODY=$(echo "$RELEASE_JSON" | jq -r '.body') - RELEASE_NAME=$(echo "$RELEASE_JSON" | jq -r '.name') - - # Convert #issue_number to GitHub issue link - RELEASE_BODY=$(echo "$RELEASE_BODY" | sed -E 's/#([0-9]+)/[#\1](https:\/\/github.com\/datasharingframework\/dsf\/issues\/\1)/g') - - # Convert @username to GitHub user link - RELEASE_BODY=$(echo "$RELEASE_BODY" | sed -E 's/@([a-zA-Z0-9_-]+)/[@\1](https:\/\/github.com\/\1)/g') - - - echo "### $RELEASE_NAME" >> "$OUTPUT_FILE" - echo "$RELEASE_BODY" >> "$OUTPUT_FILE" - echo "" >> "$OUTPUT_FILE" - done - - echo "Release notes for version $VERSION saved to $OUTPUT_FILE" - else - echo "No release found for version $VERSION" - fi -done - -echo "Process completed." diff --git a/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.ts b/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.ts new file mode 100644 index 000000000..7338edab6 --- /dev/null +++ b/docs/src/.vuepress/sidebar/fetch-versioned-release-notes.ts @@ -0,0 +1,90 @@ +#!/usr/bin/env npx tsx +// Fetches GitHub release notes for all versions in releases.ts and writes them +// as Markdown files into the corresponding operations/v/ directories. +// +// Usage: npx tsx fetch-versioned-release-notes.ts +// Docs: https://wiki.gecko.hs-heilbronn.de/doc/dokumentation-release-notes-script-45Ex3hoxjB + +import { writeFileSync, existsSync } from 'fs'; +import { resolve, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { allVersions } from '../data/releases.js'; + +const __dirname = dirname(fileURLToPath(import.meta.url)); + +const REPO_OWNER = 'datasharingframework'; +const REPO_NAME = 'dsf'; +const OUTPUT_BASE = resolve(__dirname, '../../operations'); + +interface GitHubRelease { + tag_name: string; + name: string; + body: string; +} + +async function fetchAllReleases(): Promise { + const url = `https://api.github.com/repos/${REPO_OWNER}/${REPO_NAME}/releases?per_page=100`; + console.log('Fetching all releases...'); + const res = await fetch(url, { + headers: { Accept: 'application/vnd.github+json' }, + }); + if (!res.ok) throw new Error(`GitHub API error: ${res.status} ${res.statusText}`); + return res.json() as Promise; +} + +function linkify(body: string): string { + // Convert #123 to GitHub issue link + body = body.replace(/#(\d+)/g, `[#$1](https://github.com/${REPO_OWNER}/${REPO_NAME}/issues/$1)`); + // Convert @username to GitHub user link + body = body.replace(/@([a-zA-Z0-9_-]+)/g, '[@$1](https://github.com/$1)'); + return body; +} + +async function main() { + const releases = await fetchAllReleases(); + const releaseByTag = new Map(releases.map(r => [r.tag_name, r])); + + for (const { tag } of allVersions) { + const version = `v${tag}`; + const release = releaseByTag.get(version); + + if (!release) { + console.log(`No release found for version ${version}`); + continue; + } + + const versionDir = resolve(OUTPUT_BASE, version); + if (!existsSync(versionDir)) { + console.log(`Directory ${versionDir} does not exist. Skipping ${version}.`); + continue; + } + + const outputFile = resolve(versionDir, 'release-notes.md'); + const body = linkify(release.body ?? ''); + + const content = `--- +title: Release Notes (${version}) +icon: note +--- + +## [Release Notes for ${version}](https://github.com/${REPO_OWNER}/${REPO_NAME}/releases/tag/${version}) + +::: tip Release Notes +You can access all release notes on our [GitHub](https://github.com/datasharingframework/dsf/releases). +::: + +### ${release.name} +${body} +`; + + writeFileSync(outputFile, content, 'utf-8'); + console.log(`Release notes for version ${version} saved to ${outputFile}`); + } + + console.log('Process completed.'); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/docs/src/.vuepress/theme.ts b/docs/src/.vuepress/theme.ts index 83dc211bc..105034682 100644 --- a/docs/src/.vuepress/theme.ts +++ b/docs/src/.vuepress/theme.ts @@ -2,6 +2,27 @@ import { slimsearchPlugin } from "@vuepress/plugin-slimsearch"; import { hopeTheme } from "vuepress-theme-hope"; import { generate_v1_latest_sidebar, generate_v1_gt_eq_1_7_0_sidebar, generate_v1_gt_eq_1_5_0_sidebar, generate_v1_gt_eq_1_0_0_sidebar } from "./sidebar/operations-v1"; import { generate_v2_0_0_sidebar, generate_v2_latest_sidebar } from "./sidebar/operations-v2"; +import { allVersions, latestVersion, type SidebarKey } from "./data/releases"; + +const sidebarGenerators: Record any[]> = { + v2_latest: generate_v2_latest_sidebar, + v2_0_0: generate_v2_0_0_sidebar, + v1_latest: generate_v1_latest_sidebar, + v1_gte_1_7: generate_v1_gt_eq_1_7_0_sidebar, + v1_gte_1_5: generate_v1_gt_eq_1_5_0_sidebar, + v1_gte_1_0: generate_v1_gt_eq_1_0_0_sidebar, +}; + +function buildOperationsSidebar(): Record { + const map: Record = { + '/operations/latest/': sidebarGenerators[allVersions.find(v => v.tag === latestVersion)!.sidebar](), + '/operations/next/': [], + }; + for (const v of allVersions) { + map[`/operations/v${v.tag}/`] = sidebarGenerators[v.sidebar](); + } + return map; +} export default hopeTheme({ author: { @@ -39,7 +60,7 @@ export default hopeTheme({ icon: "launch", prefix: "/operations/", children: [ { - text: "Current Version - 2.1.0", + text: `Current Version - ${latestVersion}`, link: "get-started.md", icon: "launch" }, "old-versions.md"], @@ -125,27 +146,7 @@ export default hopeTheme({ "/spring-school": [], "/news": [], "/operations/old-versions": [], - "/operations/latest/": generate_v2_latest_sidebar(), - "/operations/next/": [], - "/operations/v2.1.0/": generate_v2_latest_sidebar(), - "/operations/v2.0.2/": generate_v2_0_0_sidebar(), - "/operations/v2.0.1/": generate_v2_0_0_sidebar(), - "/operations/v2.0.0/": generate_v2_0_0_sidebar(), - "/operations/v1.9.0/": generate_v1_latest_sidebar(), - "/operations/v1.8.0/": generate_v1_gt_eq_1_7_0_sidebar(), - "/operations/v1.7.1/": generate_v1_gt_eq_1_7_0_sidebar(), - "/operations/v1.7.0/": generate_v1_gt_eq_1_7_0_sidebar(), - "/operations/v1.6.0/": generate_v1_gt_eq_1_5_0_sidebar(), - "/operations/v1.5.2/": generate_v1_gt_eq_1_5_0_sidebar(), - "/operations/v1.5.1/": generate_v1_gt_eq_1_5_0_sidebar(), - "/operations/v1.5.0/": generate_v1_gt_eq_1_5_0_sidebar(), - "/operations/v1.4.0/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.3.2/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.3.1/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.3.0/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.2.0/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.1.0/": generate_v1_gt_eq_1_0_0_sidebar(), - "/operations/v1.0.0/": generate_v1_gt_eq_1_0_0_sidebar(), + ...buildOperationsSidebar(), "/process-development": [ { text: "API v1", diff --git a/docs/src/operations/old-versions.md b/docs/src/operations/old-versions.md index e20a096ec..316965d4b 100644 --- a/docs/src/operations/old-versions.md +++ b/docs/src/operations/old-versions.md @@ -3,27 +3,4 @@ title: Old Versions icon: launch --- -## DSF v2 - -- [2.1.0](./v2.1.0/) -- [2.0.1](./v2.0.1/) -- [2.0.0](./v2.0.0/) - - -## DSF v1 - -- [1.9.0](./v1.9.0/) -- [1.8.0](./v1.8.0/) -- [1.7.1](./v1.7.1/) -- [1.7.0](./v1.7.0/) -- [1.6.0](./v1.6.0/) -- [1.5.2](./v1.5.2/) -- [1.5.1](./v1.5.1/) -- [1.5.0](./v1.5.0/) -- [1.4.0](./v1.4.0/) -- [1.3.2](./v1.3.2/) -- [1.3.1](./v1.3.1/) -- [1.3.0](./v1.3.0/) -- [1.2.0](./v1.2.0/) -- [1.1.0](./v1.1.0/) -- [1.0.0](./v1.0.0/) + diff --git a/docs/src/operations/v1.0.0/release-notes.md b/docs/src/operations/v1.0.0/release-notes.md index 9a295f644..0f65fbff4 100644 --- a/docs/src/operations/v1.0.0/release-notes.md +++ b/docs/src/operations/v1.0.0/release-notes.md @@ -75,4 +75,3 @@ Issues closed: - Migrate to dsf.dev Namespace [#1](https://github.com/datasharingframework/dsf/issues/1) This release contains contributions from [@schwzr](https://github.com/schwzr), [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.1.0/release-notes.md b/docs/src/operations/v1.1.0/release-notes.md index ff8c087a5..7bbccfa08 100644 --- a/docs/src/operations/v1.1.0/release-notes.md +++ b/docs/src/operations/v1.1.0/release-notes.md @@ -51,4 +51,3 @@ Issues closed: - Improve Task HTML view [#56](https://github.com/datasharingframework/dsf/issues/56) This release contains contributions from [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.2.0/release-notes.md b/docs/src/operations/v1.2.0/release-notes.md index 8d85f9d6f..6bba5fb74 100644 --- a/docs/src/operations/v1.2.0/release-notes.md +++ b/docs/src/operations/v1.2.0/release-notes.md @@ -51,4 +51,3 @@ Issues closed: - Make FHIR proxy server context path customizable [#85](https://github.com/datasharingframework/dsf/issues/85) This release contains contributions from [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.3.0/release-notes.md b/docs/src/operations/v1.3.0/release-notes.md index e21deaf63..e921554dc 100644 --- a/docs/src/operations/v1.3.0/release-notes.md +++ b/docs/src/operations/v1.3.0/release-notes.md @@ -43,4 +43,3 @@ Issues closed: - Make FHIR proxy server context path customizable [#85](https://github.com/datasharingframework/dsf/issues/85) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@wetret](https://github.com/wetret) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.3.1/release-notes.md b/docs/src/operations/v1.3.1/release-notes.md index d0812b34e..b8436cd4d 100644 --- a/docs/src/operations/v1.3.1/release-notes.md +++ b/docs/src/operations/v1.3.1/release-notes.md @@ -50,4 +50,3 @@ Issues closed: - Unsafe 3DES Cipher Suite in FHIR Proxy [#117](https://github.com/datasharingframework/dsf/issues/117) This release contains contributions from [@wetret](https://github.com/wetret), [@schwzr](https://github.com/schwzr) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.3.2/release-notes.md b/docs/src/operations/v1.3.2/release-notes.md index d245cbfe0..bb74d9c9c 100644 --- a/docs/src/operations/v1.3.2/release-notes.md +++ b/docs/src/operations/v1.3.2/release-notes.md @@ -35,4 +35,3 @@ Issues closed: - Use UUID generator instead of database id generator [#139](https://github.com/datasharingframework/dsf/issues/139) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@wetret](https://github.com/wetret), [@schwzr](https://github.com/schwzr) and [@hhund](https://github.com/hhund). - diff --git a/docs/src/operations/v1.4.0/release-notes.md b/docs/src/operations/v1.4.0/release-notes.md index 3a776a924..23e468da0 100644 --- a/docs/src/operations/v1.4.0/release-notes.md +++ b/docs/src/operations/v1.4.0/release-notes.md @@ -56,4 +56,3 @@ Issues closed: - Treat RC releases similar to SNAPSHOT releases [#131](https://github.com/datasharingframework/dsf/issues/131) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.5.0/release-notes.md b/docs/src/operations/v1.5.0/release-notes.md index eff44fafa..c75ee0c9a 100644 --- a/docs/src/operations/v1.5.0/release-notes.md +++ b/docs/src/operations/v1.5.0/release-notes.md @@ -58,4 +58,3 @@ Issues closed: - Add community guidelines [#152](https://github.com/datasharingframework/dsf/issues/152) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jbellmann](https://github.com/jbellmann), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.5.1/release-notes.md b/docs/src/operations/v1.5.1/release-notes.md index d7343143b..374032862 100644 --- a/docs/src/operations/v1.5.1/release-notes.md +++ b/docs/src/operations/v1.5.1/release-notes.md @@ -41,4 +41,3 @@ Issues closed: - FHIR Server GUI: Fix recipient in Task view [#189](https://github.com/datasharingframework/dsf/issues/189) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.5.2/release-notes.md b/docs/src/operations/v1.5.2/release-notes.md index 4e61564cf..5ad6857b8 100644 --- a/docs/src/operations/v1.5.2/release-notes.md +++ b/docs/src/operations/v1.5.2/release-notes.md @@ -43,4 +43,3 @@ Issues closed: - Start New Development Cycle [#198](https://github.com/datasharingframework/dsf/issues/198) This release contains contributions from [@hhund](https://github.com/hhund) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.6.0/release-notes.md b/docs/src/operations/v1.6.0/release-notes.md index 7669b4b80..3bb139f4d 100644 --- a/docs/src/operations/v1.6.0/release-notes.md +++ b/docs/src/operations/v1.6.0/release-notes.md @@ -52,4 +52,3 @@ Issues closed: - Start New Development Cycle [#219](https://github.com/datasharingframework/dsf/issues/219) This release contains contributions from [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.7.0/release-notes.md b/docs/src/operations/v1.7.0/release-notes.md index 710f9f365..8f7963cd9 100644 --- a/docs/src/operations/v1.7.0/release-notes.md +++ b/docs/src/operations/v1.7.0/release-notes.md @@ -42,4 +42,3 @@ Issues closed: - Start New Development Cycle [#245](https://github.com/datasharingframework/dsf/issues/245) This release contains contributions from [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.7.1/release-notes.md b/docs/src/operations/v1.7.1/release-notes.md index 98689be80..ca20b0090 100644 --- a/docs/src/operations/v1.7.1/release-notes.md +++ b/docs/src/operations/v1.7.1/release-notes.md @@ -35,4 +35,3 @@ Issues closed: - Modify Documentation Generator to Support SECRET_FILE Environment Variables [#265](https://github.com/datasharingframework/dsf/issues/265) This release contains contributions from [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.8.0/release-notes.md b/docs/src/operations/v1.8.0/release-notes.md index 11b823994..ea46974b4 100644 --- a/docs/src/operations/v1.8.0/release-notes.md +++ b/docs/src/operations/v1.8.0/release-notes.md @@ -37,4 +37,3 @@ Issues closed: - Adapt Github Actions to build on pull request [#163](https://github.com/datasharingframework/dsf/issues/163) This release contains contributions from [@hhund](https://github.com/hhund), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v1.9.0/release-notes.md b/docs/src/operations/v1.9.0/release-notes.md index 9e75bda9b..c6a9feca4 100644 --- a/docs/src/operations/v1.9.0/release-notes.md +++ b/docs/src/operations/v1.9.0/release-notes.md @@ -35,4 +35,3 @@ Issues closed: - Support for running the proxy containers as non-root by default [#352](https://github.com/datasharingframework/dsf/issues/352) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri) and [@schwzr](https://github.com/schwzr). - diff --git a/docs/src/operations/v2.0.0/release-notes.md b/docs/src/operations/v2.0.0/release-notes.md index cc7ac2829..9ac6b38b7 100644 --- a/docs/src/operations/v2.0.0/release-notes.md +++ b/docs/src/operations/v2.0.0/release-notes.md @@ -113,4 +113,3 @@ Issues closed: - Improve DefaultUserTaskListener [#78](https://github.com/datasharingframework/dsf/issues/78) This release contains contributions from [@alexanderkiel](https://github.com/alexanderkiel), [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@MadMax93](https://github.com/MadMax93), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v2.0.1/release-notes.md b/docs/src/operations/v2.0.1/release-notes.md index 30a1b0749..62861972a 100644 --- a/docs/src/operations/v2.0.1/release-notes.md +++ b/docs/src/operations/v2.0.1/release-notes.md @@ -57,4 +57,3 @@ Issues closed: - DSF Fails to Start with Certain ECC Client Certificates [#405](https://github.com/datasharingframework/dsf/issues/405) This release contains contributions from [@hhund](https://github.com/hhund) and [@schwzr](https://github.com/schwzr). - diff --git a/docs/src/operations/v2.0.2/release-notes.md b/docs/src/operations/v2.0.2/release-notes.md index 39b840688..9743fb929 100644 --- a/docs/src/operations/v2.0.2/release-notes.md +++ b/docs/src/operations/v2.0.2/release-notes.md @@ -68,4 +68,3 @@ Issues closed: - Property dev.dsf.bpe.fhir.client.connections.config.default.enable.debug.logging Used for Unrelated Configuration Values [#411](https://github.com/datasharingframework/dsf/issues/411) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - diff --git a/docs/src/operations/v2.1.0/release-notes.md b/docs/src/operations/v2.1.0/release-notes.md index 67fe39011..7f76a9df4 100644 --- a/docs/src/operations/v2.1.0/release-notes.md +++ b/docs/src/operations/v2.1.0/release-notes.md @@ -30,6 +30,7 @@ Feature Summary: - The DSF FHIR server front-end was improved to display the `Binary` resource content inline. This feature is enabled for `Binary` resources with content-types: `text/html` and `text/plain`. - The performance of allow-list and other bundle executions was improved by modifying the database schema and optimizing the FHIR server code base. A new `current` column was added to resource tables together with a number of new database indexes. A "not found" cache was added for metadata resources to reduce unnecessary database calls. - Other security improvements were implemented and are detailed in the [DSF 2.1.0 hardening measures](https://dsf.dev/operations/v2.1.0/hardening-measures.html) document. +- Starting with this release our docker images are cryptographically signed. Take a look at the [Verify Image Signatures](https://dsf.dev/operations/latest/image-verification.html) document for details. Docker images for this release can be accessed via the GitHub Docker registry - ghcr.io: * **bpe**: [ghcr.io/datasharingframework/bpe:2.1.0](https://github.com/datasharingframework/dsf/pkgs/container/bpe/796016761?tag=2.1.0) @@ -78,4 +79,3 @@ Issues closed: - ClientConfig in DsfClientJersey overwrites Authentication Features [#432](https://github.com/datasharingframework/dsf/issues/432) This release contains contributions from [@EmteZogaf](https://github.com/EmteZogaf), [@hhund](https://github.com/hhund), [@jaboehri](https://github.com/jaboehri), [@schwzr](https://github.com/schwzr) and [@wetret](https://github.com/wetret). - From 8e17e479d38fdaa2e7a5291478fd41df829abcd5 Mon Sep 17 00:00:00 2001 From: Simon Schweizer Date: Mon, 20 Apr 2026 13:15:22 +0200 Subject: [PATCH 3/3] added component to client.ts --- docs/src/.vuepress/client.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/.vuepress/client.ts b/docs/src/.vuepress/client.ts index 5d8b1b1b5..7ee02bc47 100644 --- a/docs/src/.vuepress/client.ts +++ b/docs/src/.vuepress/client.ts @@ -5,11 +5,11 @@ import Layout from './layouts/PageLayout.vue' import NotFoundLayout from './layouts/NotFoundLayout.vue' import BlogLayout from './layouts/BlogLayout.vue'; - +import OldVersions from './components/OldVersions.vue'; export default defineClientConfig({ enhance({ app }) { - + app.component('OldVersions', OldVersions); }, layouts: { ParentLayout,