diff --git a/_build_scripts/update-config-versions.js b/_build_scripts/update-config-versions.js index 17f4e59c5..9ed48be36 100644 --- a/_build_scripts/update-config-versions.js +++ b/_build_scripts/update-config-versions.js @@ -2,11 +2,15 @@ const MAX_ATTEMPTS = 5; -const getRepoVersion = async (repoName, attempt = 1) => { +// Fetch a repo's releases as an ascending, semver-sorted array of version +// strings (v-prefix stripped), excluding pre-releases and drafts. Shared by +// getRepoVersion (single highest) and getRecentMinorVersions (top-N minors). +// Keeps the original retry/backoff on failure. +const fetchReleaseVersions = async (repoName, perPage = 100, attempt = 1) => { try { const fetch = (await import('node-fetch')).default; - const response = await fetch( // fetch all release versions - `https://api.github.com/repos/weaviate/${repoName}/releases`, + const response = await fetch( // fetch release versions + `https://api.github.com/repos/weaviate/${repoName}/releases?per_page=${perPage}`, { method: 'GET', headers: { @@ -38,32 +42,59 @@ const getRepoVersion = async (repoName, attempt = 1) => { throw new Error(`No releases found for ${repoName}`); } - const highestVersion = releases + return releases .filter(item => !item.prerelease) // remove pre-release items .filter(item => !item.draft) // remove draft releases .map(item => item.tag_name.replace('v', '')) // strip the v: "v1.26.1" => "1.26.1" .sort((a, b) => // semver-aware sort – ascending - a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })) - .pop() // the last item is the highest version (what we need) - - console.log(`${repoName} ${highestVersion}`); - return highestVersion; + a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' })); } catch (error) { if (attempt < MAX_ATTEMPTS) { const delay = 1000 * 2 ** (attempt - 1); // 1s, 2s console.warn(`[${repoName}] attempt ${attempt} failed (${error.message}); retrying in ${delay}ms`); await new Promise(resolve => setTimeout(resolve, delay)); - return getRepoVersion(repoName, attempt + 1); + return fetchReleaseVersions(repoName, perPage, attempt + 1); } - console.error(`Error fetching version for ${repoName} after ${MAX_ATTEMPTS} attempts:`, error); + console.error(`Error fetching versions for ${repoName} after ${MAX_ATTEMPTS} attempts:`, error); throw error; } } +// Highest non-prerelease version for a repo (behavior unchanged). +const getRepoVersion = async (repoName) => { + const highestVersion = (await fetchReleaseVersions(repoName)).pop(); + console.log(`${repoName} ${highestVersion}`); + return highestVersion; +} + +// Latest patch of each of the most recent `count` MINOR versions, newest first, +// e.g. ["1.38.2", "1.37.11", "1.36.19"]. Uses per_page=100 so the window spans +// at least a few minors. +const getRecentMinorVersions = async (repoName, count) => { + const versions = await fetchReleaseVersions(repoName, 100); // ascending + const latestByMinor = new Map(); + for (const v of versions) { + const [major, minor] = v.split('.'); + if (major === undefined || minor === undefined) continue; + const minorKey = `${major}.${minor}`; + const existing = latestByMinor.get(minorKey); + if (!existing || + v.localeCompare(existing, undefined, { numeric: true, sensitivity: 'base' }) > 0) { + latestByMinor.set(minorKey, v); // keep the highest patch per minor + } + } + return Array.from(latestByMinor.keys()) + .sort((a, b) => // minors newest first + b.localeCompare(a, undefined, { numeric: true, sensitivity: 'base' })) + .slice(0, count) + .map(minorKey => latestByMinor.get(minorKey)); +} + // Build time versions replace values set in versions-config.json // versions-config.json values are used for yarn local yarn builds const appendVersionsToConfig = async (config) => { config.weaviate_version = await getRepoVersion('weaviate'); + config.weaviate_recent_versions = await getRecentMinorVersions('weaviate', 3); config.python_client_version = await getRepoVersion('weaviate-python-client'); config.go_client_version = await getRepoVersion('weaviate-go-client'); config.java_client_version = await getRepoVersion('weaviate-java-client'); diff --git a/_includes/release-history.md b/_includes/release-history.md index 8d92c5670..16fa8dd3c 100644 --- a/_includes/release-history.md +++ b/_includes/release-history.md @@ -2,17 +2,18 @@ This table lists recent Weaviate Database versions and corresponding client libr | Weaviate Database
([GitHub][cWeaviate]) | First
release date | Python
([GitHub][cPython]) | TypeScript/
JavaScript
([GitHub][cTypeScript]) | Go
([GitHub][cGo]) | Java
([GitHub][cJava]) | C#
([GitHub][cCSharp]) | | :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-----------------------------------------------------------------: | :-----------------------------------------------------------------------------: | +| [1.38.x](https://github.com/weaviate/weaviate/releases/tag/v1.38.0) | 2026-06-05 | [4.22.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.22.0) | - | - | - | - | | [1.37.x](https://github.com/weaviate/weaviate/releases/tag/v1.37.0) | 2026-04-16 | [4.21.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.21.0) | [3.13.x](https://github.com/weaviate/typescript-client/releases/tag/v3.13.0) | [5.7.3](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.3) | [6.2.0](https://github.com/weaviate/java-client/releases/tag/6.2.0) | N/A | | [1.36.x](https://github.com/weaviate/weaviate/releases/tag/v1.36.0) | 2026-02-24 | [4.20.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.20.0) | [3.12.x](https://github.com/weaviate/typescript-client/releases/tag/v3.12.0) | [5.7.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.7.0) | [6.1.0](https://github.com/weaviate/java-client/releases/tag/6.1.0) | [1.0.1](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.1) | | [1.35.x](https://github.com/weaviate/weaviate/releases/tag/v1.35.0) | 2025-12-17 | [4.19.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.19.0) | [3.11.x](https://github.com/weaviate/typescript-client/releases/tag/v3.11.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | [1.0.0](https://github.com/weaviate/weaviate-dotnet-client/releases/tag/v1.0.0) | | [1.34.x](https://github.com/weaviate/weaviate/releases/tag/v1.34.0) | 2025-11-05 | [4.18.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.18.0) | [3.10.x](https://github.com/weaviate/typescript-client/releases/tag/v3.10.0) | [5.6.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.6.0) | [6.0.0](https://github.com/weaviate/java-client/releases/tag/6.0.0) | - | -| [1.33.x](https://github.com/weaviate/weaviate/releases/tag/v1.33.0) | 2025-09-25 | [4.17.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.17.0) | [3.9.x](https://github.com/weaviate/typescript-client/releases/tag/v3.9.0) | [5.5.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.5.0) | [5.5.x](https://github.com/weaviate/java-client/releases/tag/5.5.0) | - |
Older releases | Weaviate Database
([GitHub][cWeaviate]) | First
release date | Python
([GitHub][cPython]) | TypeScript/
JavaScript
([GitHub][cTypeScript]) | Go
([GitHub][cGo]) | Java
([GitHub][cJava]) | | :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: | +| [1.33.x](https://github.com/weaviate/weaviate/releases/tag/v1.33.0) | 2025-09-25 | [4.17.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.17.0) | [3.9.x](https://github.com/weaviate/typescript-client/releases/tag/v3.9.0) | [5.5.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.5.0) | [5.5.x](https://github.com/weaviate/java-client/releases/tag/5.5.0) | | [1.32.x](https://github.com/weaviate/weaviate/releases/tag/v1.32.0) | 2025-07-14 | [4.16.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.16.0) | [3.8.x](https://github.com/weaviate/typescript-client/releases/tag/v3.8.0) | [5.3.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.3.0) | [5.4.x](https://github.com/weaviate/java-client/releases/tag/5.4.0) | | [1.31.x](https://github.com/weaviate/weaviate/releases/tag/v1.31.0) | 2025-05-30 | [4.15.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.15.0) | [3.6.x](https://github.com/weaviate/typescript-client/releases/tag/v3.6.0) | [5.2.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.2.0) | [5.3.x](https://github.com/weaviate/java-client/releases/tag/5.3.0) | | [1.30.x](https://github.com/weaviate/weaviate/releases/tag/v1.30.0) | 2025-04-03 | [4.12.x](https://github.com/weaviate/weaviate-python-client/releases/tag/v4.12.0) | [3.5.x](https://github.com/weaviate/typescript-client/releases/tag/v3.5.0) | [5.1.x](https://github.com/weaviate/weaviate-go-client/releases/tag/v5.1.0) | [5.2.x](https://github.com/weaviate/java-client/releases/tag/5.2.0) | diff --git a/docs/weaviate/release-notes/index.md b/docs/weaviate/release-notes/index.md index 8611c53f0..ca97aaac2 100644 --- a/docs/weaviate/release-notes/index.md +++ b/docs/weaviate/release-notes/index.md @@ -17,6 +17,11 @@ import QuickLinks from "/src/components/QuickLinks"; export const pythonCardsData = [ { +title: "v1.38", +link: "https://github.com/weaviate/weaviate/releases/tag/v1.38.0", +icon: "fa fa-tags", +}, +{ title: "v1.37", link: "https://github.com/weaviate/weaviate/releases/tag/v1.37.0", icon: "fa fa-tags", @@ -36,11 +41,6 @@ title: "v1.34", link: "https://weaviate.io/blog/weaviate-1-34-release", icon: "fa fa-tags", }, -{ -title: "v1.33", -link: "https://weaviate.io/blog/weaviate-1-33-release", -icon: "fa fa-tags", -}, ]; diff --git a/src/components/WeaviateConfigurator/index.jsx b/src/components/WeaviateConfigurator/index.jsx index 70365fa55..ca3851325 100644 --- a/src/components/WeaviateConfigurator/index.jsx +++ b/src/components/WeaviateConfigurator/index.jsx @@ -16,6 +16,10 @@ import './styles.css'; // Import parameters import parametersData from './parameters.json'; +// Auto-fetched latest patch versions (written at prebuild by +// _build_scripts/update-config-versions.js; same source as ||site.weaviate_version||). +import versionsConfig from '@site/versions-config.json'; + // Accordion components function AccordionItem({ title, summary, children, description }) { return ( @@ -167,7 +171,41 @@ function WeaviateConfigurator() { // Load parameters useEffect(() => { try { - setParameters(parametersData.parameters); + // weaviate_version dropdown: the auto-fetched latest patches of the + // supported latest-3 MINORS (e.g. ["1.38.2","1.37.11","1.36.19"], written + // at prebuild by _build_scripts/update-config-versions.js) are PRIMARY; + // the static parameters.json options are the fallback if that array is + // ever missing/empty. + const auto = versionsConfig.weaviate_recent_versions; + const autoVersionOptions = + Array.isArray(auto) && auto.length + ? auto.map((v) => ({ + name: `v${v}`, + displayName: `v${v}`, + description: `See release notes at https://github.com/weaviate/weaviate/releases/tag/v${v}`, + })) + : null; + + // Resolve the version options ONCE so param.options and the default + // selection stay in sync (auto primary, static parameters.json fallback). + const staticVersionParam = parametersData.parameters.find( + (p) => p.name === 'weaviate_version', + ); + const versionOptions = + autoVersionOptions ?? (staticVersionParam?.options || []); + + const params = parametersData.parameters.map((param) => + param.name === 'weaviate_version' + ? { ...param, options: versionOptions } + : param, + ); + + setParameters(params); + // Default the selected version to the first of the resolved options. + setSelections((prev) => ({ + ...prev, + weaviate_version: versionOptions[0]?.name, + })); setLoading(false); } catch (err) { setError('Failed to load parameters'); diff --git a/versions-config.json b/versions-config.json index 1c3ba971e..6ea2e2907 100644 --- a/versions-config.json +++ b/versions-config.json @@ -1,12 +1,13 @@ { "COMMENT1": "These values are used for yarn local yarn builds", "COMMENT2": "Build time values are set in _build_scripts/update-config-versions.js", - "weaviate_version": "1.38.0", + "weaviate_version": "1.38.2", + "weaviate_recent_versions": ["1.38.2", "1.37.11", "1.36.19"], "helm_version": "17.8.1", "weaviate_cli_version": "3.4.1", "agents_python_version": "1.6.0", "agents_typescript_version": "1.5.0", - "python_client_version": "4.21.3", + "python_client_version": "4.22.0", "go_client_version": "5.7.2", "java_client_version": "6.2.0", "typescript_client_version": "3.13.1",