((_, ref) => {
sideOffset={4}
className={styles.menuContent}
>
+
}
diff --git a/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.module.css b/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.module.css
new file mode 100644
index 00000000..60f2c826
--- /dev/null
+++ b/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.module.css
@@ -0,0 +1,9 @@
+.cliVersion {
+ margin: var(--spacing-2);
+ border-radius: var(--border-radius-full);
+ background: var(--pane-muted-background);
+ padding: var(--spacing-1) var(--spacing-2);
+ color: var(--global-mute-text);
+ font-family: var(--code-font);
+ font-size: var(--font-size-1);
+}
diff --git a/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.tsx b/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.tsx
new file mode 100644
index 00000000..1a2bb8dc
--- /dev/null
+++ b/frontend/packages/erd-core/src/components/ERDRenderer/AppBar/HelpButton/ReleaseVersion.tsx
@@ -0,0 +1,27 @@
+import { useCliVersion } from '@/providers'
+import type { FC } from 'react'
+import styles from './ReleaseVersion.module.css'
+
+export const ReleaseVersion: FC = () => {
+ const { cliVersion } = useCliVersion()
+
+ // Example output for cliVersion:
+ // - Released version:
+ // v0.0.11 (2024-12-19)
+ // - Unreleased version:
+ // v0.0.11 + 0d6169a (2024-12-19)
+ //
+ // Explanation:
+ // - "Released version" means the current Git hash matches a tagged release.
+ // - "Unreleased version" includes a short Git hash prefix to indicate changes since the last release.
+ return (
+
+ {`v${cliVersion.version}`}
+
+ {' '}
+ {cliVersion.isReleasedGitHash || `+ ${cliVersion.gitHash.slice(0, 7)} `}
+
+ {cliVersion.date.length > 0 && ` (${cliVersion.date})`}
+
+ )
+}
diff --git a/frontend/packages/erd-core/src/index.ts b/frontend/packages/erd-core/src/index.ts
index 384c84dc..1d32115b 100644
--- a/frontend/packages/erd-core/src/index.ts
+++ b/frontend/packages/erd-core/src/index.ts
@@ -1,2 +1,4 @@
export * from './components'
+export * from './providers'
+export * from './schemas'
export * from './stores'
diff --git a/frontend/packages/erd-core/src/providers/CliVersionProvider.tsx b/frontend/packages/erd-core/src/providers/CliVersionProvider.tsx
new file mode 100644
index 00000000..db45cff8
--- /dev/null
+++ b/frontend/packages/erd-core/src/providers/CliVersionProvider.tsx
@@ -0,0 +1,29 @@
+import type { CliVersion } from '@/schemas/cliVersion'
+import { type FC, type ReactNode, createContext, useContext } from 'react'
+
+interface CliVersionContextProps {
+ cliVersion: CliVersion
+}
+
+const CliVersionContext = createContext(
+ undefined,
+)
+
+export const useCliVersion = (): CliVersionContextProps => {
+ const context = useContext(CliVersionContext)
+ if (!context) {
+ throw new Error('useCliVersion must be used within a CliVersionProvider')
+ }
+ return context
+}
+
+export const CliVersionProvider: FC<{
+ cliVersion: CliVersion
+ children: ReactNode
+}> = ({ cliVersion, children }) => {
+ return (
+
+ {children}
+
+ )
+}
diff --git a/frontend/packages/erd-core/src/providers/index.ts b/frontend/packages/erd-core/src/providers/index.ts
new file mode 100644
index 00000000..9a99577b
--- /dev/null
+++ b/frontend/packages/erd-core/src/providers/index.ts
@@ -0,0 +1 @@
+export * from './CliVersionProvider'
diff --git a/frontend/packages/erd-core/src/schemas/cliVersion/index.ts b/frontend/packages/erd-core/src/schemas/cliVersion/index.ts
new file mode 100644
index 00000000..68de0559
--- /dev/null
+++ b/frontend/packages/erd-core/src/schemas/cliVersion/index.ts
@@ -0,0 +1,2 @@
+export * from './schemas'
+export * from './types'
diff --git a/frontend/packages/erd-core/src/schemas/cliVersion/schemas.ts b/frontend/packages/erd-core/src/schemas/cliVersion/schemas.ts
new file mode 100644
index 00000000..b01dd50e
--- /dev/null
+++ b/frontend/packages/erd-core/src/schemas/cliVersion/schemas.ts
@@ -0,0 +1,8 @@
+import * as v from 'valibot'
+
+export const cliVersionSchema = v.object({
+ version: v.string(),
+ gitHash: v.string(),
+ isReleasedGitHash: v.boolean(),
+ date: v.string(),
+})
diff --git a/frontend/packages/erd-core/src/schemas/cliVersion/types.ts b/frontend/packages/erd-core/src/schemas/cliVersion/types.ts
new file mode 100644
index 00000000..7022dd2b
--- /dev/null
+++ b/frontend/packages/erd-core/src/schemas/cliVersion/types.ts
@@ -0,0 +1,4 @@
+import type { InferOutput } from 'valibot'
+import type { cliVersionSchema } from './schemas'
+
+export type CliVersion = InferOutput
diff --git a/frontend/packages/erd-core/src/schemas/index.ts b/frontend/packages/erd-core/src/schemas/index.ts
new file mode 100644
index 00000000..678e9682
--- /dev/null
+++ b/frontend/packages/erd-core/src/schemas/index.ts
@@ -0,0 +1,3 @@
+export * from './cliVersion'
+export * from './queryParam'
+export * from './showMode'