diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d3c1e4f..081e941 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,9 +23,28 @@ jobs: with: go-version: 1.25.1 + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version: 24 + - name: Check licenses and vulnerabilities run: make check + - name: Set version + - name: Update package.json version + run: | + if [[ "${{ github.ref_type }}" == "tag" ]]; then + TAG_VERSION=$(echo "${{ github.ref_name }}" | sed 's/^v//') + else + LATEST_TAG=$(git tag --sort=-version:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+(-.*)?$' | head -n 1) + [ -z "$LATEST_TAG" ] && { echo "No release tag found"; exit 1; } + TAG_VERSION=$(echo "$LATEST_TAG" | sed 's/^v//') + echo "Using latest tag: $LATEST_TAG" + fi + sed -i "s/\${VERSION}/$TAG_VERSION/g" server.json + echo "Version: $TAG_VERSION" + - name: Run ui build run: make ui-build diff --git a/cmd/sql-to-logsql/web/ui/package-lock.json b/cmd/sql-to-logsql/web/ui/package-lock.json index 8aca6d7..aa6ecf1 100644 --- a/cmd/sql-to-logsql/web/ui/package-lock.json +++ b/cmd/sql-to-logsql/web/ui/package-lock.json @@ -1,12 +1,12 @@ { "name": "sql-to-logsql", - "version": "0.0.0", + "version": "${VERSION}", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "sql-to-logsql", - "version": "0.0.0", + "version": "${VERSION}", "dependencies": { "@monaco-editor/react": "^4.7.0", "@radix-ui/react-accordion": "^1.2.12", @@ -34,7 +34,7 @@ }, "devDependencies": { "@eslint/js": "^9.36.0", - "@types/node": "^24.5.2", + "@types/node": "^24.7.0", "@types/react": "^19.1.13", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.3", @@ -2128,13 +2128,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "24.5.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.5.2.tgz", - "integrity": "sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==", + "version": "24.7.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.7.0.tgz", + "integrity": "sha512-IbKooQVqUBrlzWTi79E8Fw78l8k1RNtlDDNWsFZs7XonuQSJ8oNYfEeclhprUldXISRMLzBpILuKgPlIxm+/Yw==", "devOptional": true, "license": "MIT", "dependencies": { - "undici-types": "~7.12.0" + "undici-types": "~7.14.0" } }, "node_modules/@types/react": { @@ -4453,9 +4453,9 @@ } }, "node_modules/undici-types": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.12.0.tgz", - "integrity": "sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==", + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.14.0.tgz", + "integrity": "sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==", "devOptional": true, "license": "MIT" }, diff --git a/cmd/sql-to-logsql/web/ui/package.json b/cmd/sql-to-logsql/web/ui/package.json index e98d700..a000bd6 100644 --- a/cmd/sql-to-logsql/web/ui/package.json +++ b/cmd/sql-to-logsql/web/ui/package.json @@ -1,7 +1,7 @@ { "name": "sql-to-logsql", - "private": true, - "version": "0.0.0", + "private": false, + "version": "${VERSION}", "type": "module", "scripts": { "dev": "vite", @@ -36,7 +36,7 @@ }, "devDependencies": { "@eslint/js": "^9.36.0", - "@types/node": "^24.5.2", + "@types/node": "^24.7.0", "@types/react": "^19.1.13", "@types/react-dom": "^19.1.9", "@vitejs/plugin-react": "^5.0.3", diff --git a/cmd/sql-to-logsql/web/ui/src/components/docs/Docs.tsx b/cmd/sql-to-logsql/web/ui/src/components/docs/Docs.tsx index 906f8e6..44e7387 100644 --- a/cmd/sql-to-logsql/web/ui/src/components/docs/Docs.tsx +++ b/cmd/sql-to-logsql/web/ui/src/components/docs/Docs.tsx @@ -3,21 +3,36 @@ import {Accordion, AccordionContent, AccordionItem, AccordionTrigger} from "@/co import {InfoIcon, LinkIcon} from "lucide-react"; import {Button} from "@/components/ui/button.tsx"; import {Separator} from "@/components/ui/separator.tsx"; +import {Badge} from "@/components/ui/badge.tsx"; +import {Tooltip, TooltipContent, TooltipTrigger} from "@/components/ui/tooltip.tsx"; export function Docs() { return ( - Information about SQL to LogsQL + + Information about SQL to LogsQL + + + {__APP_VERSION__ == '${VERSION}' ? 'local' : __APP_VERSION__} + + +
Version: {__APP_VERSION__ == '${VERSION}' ? 'local' : __APP_VERSION__}
+
Build date: {__BUILD_DATE__}
+
+
+
Service that helps to query VictoriaLogs with SQL
- +
+ - + +
svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90", + secondary: + "border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90", + destructive: + "border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60", + outline: + "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + } +) + +function Badge({ + className, + variant, + asChild = false, + ...props +}: React.ComponentProps<"span"> & + VariantProps & { asChild?: boolean }) { + const Comp = asChild ? Slot : "span" + + return ( + + ) +} + +export { Badge, badgeVariants } diff --git a/cmd/sql-to-logsql/web/ui/src/components/ui/tooltip.tsx b/cmd/sql-to-logsql/web/ui/src/components/ui/tooltip.tsx new file mode 100644 index 0000000..715bf76 --- /dev/null +++ b/cmd/sql-to-logsql/web/ui/src/components/ui/tooltip.tsx @@ -0,0 +1,59 @@ +import * as React from "react" +import * as TooltipPrimitive from "@radix-ui/react-tooltip" + +import { cn } from "@/lib/utils" + +function TooltipProvider({ + delayDuration = 0, + ...props +}: React.ComponentProps) { + return ( + + ) +} + +function Tooltip({ + ...props +}: React.ComponentProps) { + return ( + + + + ) +} + +function TooltipTrigger({ + ...props +}: React.ComponentProps) { + return +} + +function TooltipContent({ + className, + sideOffset = 0, + children, + ...props +}: React.ComponentProps) { + return ( + + + {children} + + + + ) +} + +export { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } diff --git a/cmd/sql-to-logsql/web/ui/tsconfig.app.json b/cmd/sql-to-logsql/web/ui/tsconfig.app.json index 2257f2d..bb1636a 100644 --- a/cmd/sql-to-logsql/web/ui/tsconfig.app.json +++ b/cmd/sql-to-logsql/web/ui/tsconfig.app.json @@ -31,5 +31,8 @@ ] } }, - "include": ["src"] + "include": [ + "src", + "vite-env.d.ts" + ] } diff --git a/cmd/sql-to-logsql/web/ui/vite-env.d.ts b/cmd/sql-to-logsql/web/ui/vite-env.d.ts new file mode 100644 index 0000000..2e6410f --- /dev/null +++ b/cmd/sql-to-logsql/web/ui/vite-env.d.ts @@ -0,0 +1,4 @@ +/// + +declare const __APP_VERSION__: string +declare const __BUILD_DATE__: string diff --git a/cmd/sql-to-logsql/web/ui/vite.config.ts b/cmd/sql-to-logsql/web/ui/vite.config.ts index 66251bb..0a01b2f 100644 --- a/cmd/sql-to-logsql/web/ui/vite.config.ts +++ b/cmd/sql-to-logsql/web/ui/vite.config.ts @@ -16,4 +16,8 @@ export default defineConfig({ "@": path.resolve(__dirname, "./src"), }, }, + define: { + '__APP_VERSION__': JSON.stringify(process.env.npm_package_version), + '__BUILD_DATE__': JSON.stringify(new Date().toISOString()), + }, });