#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

- version: 0.9.0
  date: July 30, 2021
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.13
  zip_name: apache-nlpcraft-bin-0.9.0.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.9.0/apache-nlpcraft-incubating-bin-0.9.0.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.9.0/apache-nlpcraft-incubating-bin-0.9.0.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.9.0/apache-nlpcraft-incubating-bin-0.9.0.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.9.0.2
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.8.0
  date: June 7, 2021
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.8.0.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.8.0/apache-nlpcraft-incubating-bin-0.8.0.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.8.0/apache-nlpcraft-incubating-bin-0.8.0.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.8.0/apache-nlpcraft-incubating-bin-0.8.0.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.8.0
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.7.5
  date: Apr 30, 2021
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.5.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.7.5/apache-nlpcraft-incubating-bin-0.7.5.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.7.5/apache-nlpcraft-incubating-bin-0.7.5.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.7.5/apache-nlpcraft-incubating-bin-0.7.5.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.5
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: no

- version: 0.7.4
  date: Jan 31, 2021
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.4.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.7.4/apache-nlpcraft-incubating-bin-0.7.4.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.7.4/apache-nlpcraft-incubating-bin-0.7.4.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.7.4/apache-nlpcraft-incubating-bin-0.7.4.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.4
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.7.3
  date: Dec 31, 2020
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.3.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.7.3/apache-nlpcraft-incubating-bin-0.7.3.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.7.3/apache-nlpcraft-incubating-bin-0.7.3.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.7.3/apache-nlpcraft-incubating-bin-0.7.3.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.3
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: no

- version: 0.7.2
  date: Nov 19, 2020
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.2.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.7.2/apache-nlpcraft-incubating-bin-0.7.2.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.7.2/apache-nlpcraft-incubating-bin-0.7.2.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.7.2/apache-nlpcraft-incubating-bin-0.7.2.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.2
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.7.1
  date: Oct 29, 2020
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.1.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/v0.7.1/apache-nlpcraft-incubating-bin-0.7.1.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/v0.7.1/apache-nlpcraft-incubating-bin-0.7.1.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/v0.7.1/apache-nlpcraft-incubating-bin-0.7.1.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.1
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.7.0
  date: Sep 29, 2020
  sdk: <i class="fab fa-fw fa-java"></i>11 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.7.0.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.7.0/apache-nlpcraft-incubating-bin-0.7.0.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.7.0/apache-nlpcraft-incubating-bin-0.7.0.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.7.0/apache-nlpcraft-incubating-bin-0.7.0.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.7.0
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: no

- version: 0.6.2
  date: Jul 19, 2020
  sdk: <i class="fab fa-fw fa-java"></i>8 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.6.2.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.6.2/apache-nlpcraft-incubating-bin-0.6.2.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.6.2/apache-nlpcraft-incubating-bin-0.6.2.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.6.2/apache-nlpcraft-incubating-bin-0.6.2.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.6.2
  #  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

- version: 0.5.0
  date: Apr 29, 2020
  sdk: <i class="fab fa-fw fa-java"></i>8 - <div class="scala-16"></div>2.12
  zip_name: apache-nlpcraft-bin-0.5.0.zip
  zip_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.5.0/apache-nlpcraft-incubating-bin-0.5.0.zip
  sha256_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.5.0/apache-nlpcraft-incubating-bin-0.5.0.zip.sha256
  pgp_url: https://github.com/aradzinski/binstore/releases/download/apache-nlpcraft-v0.5.0/apache-nlpcraft-incubating-bin-0.5.0.zip.asc
  github_link: https://github.com/apache/incubator-nlpcraft/tree/v0.5.0
#  dockerhub_link: https://hub.docker.com/r/nlpcraftserver/server
  backward_compatible: yes

