Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
53 changes: 42 additions & 11 deletions _build_scripts/update-config-versions.js
Original file line number Diff line number Diff line change
Expand Up @@ -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: {
Expand Down Expand Up @@ -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');
Expand Down
3 changes: 2 additions & 1 deletion _includes/release-history.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,18 @@ This table lists recent Weaviate Database versions and corresponding client libr

| Weaviate Database <br/><small>([GitHub][cWeaviate])</small> | First <br/>release date | Python <br/><small>([GitHub][cPython])</small> | TypeScript/ <br/>JavaScript <br/><small>([GitHub][cTypeScript])</small> | Go <br/><small>([GitHub][cGo])</small> | Java <br/><small>([GitHub][cJava])</small> | C# <br/><small>([GitHub][cCSharp])</small> |
| :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :--------------------------------------------------------------------------: | :-------------------------------------------------------------------------: | :-----------------------------------------------------------------: | :-----------------------------------------------------------------------------: |
| [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) | - |

<details>
<summary>Older releases</summary>

| Weaviate Database <br/><small>([GitHub][cWeaviate])</small> | First <br/>release date | Python <br/><small>([GitHub][cPython])</small> | TypeScript/ <br/>JavaScript <br/><small>([GitHub][cTypeScript])</small> | Go <br/><small>([GitHub][cGo])</small> | Java <br/><small>([GitHub][cJava])</small> |
| :------------------------------------------------------------------ | :---------------------- | :-------------------------------------------------------------------------------: | :------------------------------------------------------------------------: | :---------------------------------------------------------------------------: | :-----------------------------------------------------------------------------------------------------------------------------------------: |
| [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) |
Expand Down
10 changes: 5 additions & 5 deletions docs/weaviate/release-notes/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand All @@ -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",
},
];

<QuickLinks items={pythonCardsData} />
Expand Down
40 changes: 39 additions & 1 deletion src/components/WeaviateConfigurator/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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');
Expand Down
5 changes: 3 additions & 2 deletions versions-config.json
Original file line number Diff line number Diff line change
@@ -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",
Expand Down
Loading