import React, { useState, useEffect } from 'react'
import { window } from 'browser-monads'
import Link from '../components/link'
import { InlineCode } from '../components/code'
import { Label, H3 } from '../components/typography'
import { Table, Tr, Th, Td } from '../components/table'
import Infobox from '../components/infobox'
import { repo } from '../components/util'
function formatReleases(json) {
return Object.values(json)
.filter(release => release.name)
.map(release => ({
title:
release.name.split(': ').length === 2 ? release.name.split(': ')[1] : release.name,
url: release.html_url,
date: release.published_at.split('T')[0],
tag: release.tag_name,
pre: release.prerelease,
}))
}
const Changelog = () => {
const [initialized, setInitialized] = useState(false)
const [isLoading, setIsLoading] = useState(false)
const [isError, setIsError] = useState(true)
const [releases, setReleases] = useState([])
const [prereleases, setPrereleases] = useState([])
useEffect(() => {
window.dispatchEvent(new Event('resize')) // scroll position for progress
if (!initialized && repo) {
setIsError(false)
setIsLoading(true)
fetch(`https://api.github.com/repos/${repo}/releases`)
.then(res => res.json())
.then(json => {
const releases = formatReleases(json)
setReleases(releases.filter(release => !release.pre))
setPrereleases(releases.filter(release => release.pre))
setIsLoading(false)
})
.catch(err => {
setIsLoading(false)
setIsError(true)
console.error(err)
})
setInitialized(true)
}
}, [initialized])
const error = (
Please see the
releases page
instead.
| Date | Version | Title |
|---|---|---|
|
|
{title} |
Pre-releases include alpha and beta versions, as well as release candidates. They
are not intended for production use. You can download spaCy pre-releases via the{' '}
{prereleases.map(({ title, date, url, tag }) => (
<>