Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

Releases: curioswitch/curiostack

curiostack-0.1.1

23 Nov 09:25
7006be5
Compare
Choose a tag to compare

Bug fixes

  • Fix crash when updating IntelliJ config due to switch to zulu

@curiostack/base-web-0.1.0

22 Nov 06:37
c714aa2
Compare
Choose a tag to compare

This is the first release of @curiostack/base-web 0.X.Y. To celebrate, let's review some of its features.

Notable Features

Initial versions of this framework were directly inspired by react-boilerplate. It's a great framework and base-web attempts to have similar features without keeping the boilerplate code in the user's repository.

  • Least amount of boilerplate for developing a React web client with best practices inspired by react-boilerplate. Even package.json scripts don't need to be set. Version upgrades will apply naturally as there is no boilerplate in user code to keep in sync
  • A webpack loader and react component for fully responsive images. Specify viewport widths for images and a variety of sizes will be automatically generated and served using a picture tag to give the best user experience
  • A fallback module resolver to reduce dependency problems in monorepos. Both webpack and normal node invocations (like jest) will respect the fallback definitions, and unlike other solutions that only allow defining a single alias, the fallback resolver can check a list of them in order (used to work around core-js 3 / 2 dependency conflicts)
  • Any site can be prerendered using a simple configuration of routes and globals.

Breaking changes

  • styled-components-ts dependency is not listed anymore. If you still use styled-components-ts, you can add it into your own package.json, but it's highly recommended to migrate to styled-components official typescript bindings which work out of the box
  • Significant prettier whitespace changes. You will probably want to run :yarn_run_fix first after upgrading before trying to build projects.

Bug fixes

  • The fix script (i.e., ./gradlew :yarn_run_fix) did not actually output fixes

@curiostack/base-web-0.0.52

15 Nov 05:26
6c5ab06
Compare
Choose a tag to compare

Bug Fixes

  • Fixes issue where resolution overrides did not work with top-level module imports

curiostack-0.1.0

14 Nov 09:57
6a463f4
Compare
Choose a tag to compare

Curiostack 0.1.0 is the first version to be published on the Gradle Plugin Portal. To celebrate, let's review some of its features.

Notable Features

  • Only dependency is bash. It is possible to for any Curiostack repository to be built with no extra setup on Linux and Mac OS X. Windows also works after install Git (which comes with bash) or MSYS64 (an even better Windows bash). Even native binaries, such as cgo binaries, can be built without extra setup.

  • Automatic configuration of IntelliJ. All that is required to onboard a new developer is a single command ./gradlew setup

  • Tools, like terraform, compilers, and such, are all downloaded automatically. Even OpenJDK used for building is. There is no effort in keeping a team's tool versions up to sync since the build manages it.

  • Monorepo-aware continuous build support. Curiostack builds will only build projects that were changed, allowing large monorepos to still have reasonable build time.

  • Tightly integrated server framework. All servers are automatically built, pushed to docker registry, and deployed to Kubernetes as part of the continuous build. There is almost no boilerplate in defining a gRPC-based server and client. Server framework by default follows best practices, such as zero-trust, TLS-only, and observability.

  • The ability to easily deploy static sites to app engine and firebase, along with support for building codelabs along the way.

  • A suite of Armeria-based libraries for accessing GCP. Users that deal with large payloads will benefit from armeria-google-cloud-storage and armeria-google-cloud-pubsub which support operating on payloads without copying to the heap.

  • Continuous build run on Linux, Windows, and Mac (if you need this, you may want to check out our workflow

Breaking Changes

Settings Plugin

Curiostack plugin takes advantage of new features in Gradle 6.0 and has migrated to being a settings plugin instead of a project plugin. This means it should be applied to your top level settings.gradle and removed from build.gradle. Previous build cache configuration is handled by the plugin now, and plugin management is not needed anymore. Your settings.gradle.kts should look something like

plugins {
    id("org.curioswitch.gradle-curiostack-plugin").version("0.1.0")
}

configure<CuriostackExtension> {
    buildCacheBucket.set("curioswitch-gradle-build-cache")
}
  • Gradle 6 + OpenJDK 13 require IntelliJ 2019.3 (currently BETA) to work with

  • The gRPC plugin's extension has been modernized to use Gradle's Property. This should only affect web projects. In web projects, switch from e.g., web = true to web.set(true).

  • Previously deprecated curio-static-site-plugin has been removed, rename to static-site-plugin

Reference from a plugins block in build.gradle must be removed.

New Features

  • Mac OS SDK is now automatically downloaded. Native builds, like cgo, will run correctly without any user action on a fresh Mac OS installation.

  • Conda, previously disabled on Windows, is used on Windows. Native builds work correctly on Windows too without any user action.

Dependencies

Notable dependency updates are Gradle 5.X -> 6.0 and JDK 12.x -> 13. While migrating JDK, we also migrated from AdoptOpenJDK to Zulu JDK because the latter downloads much faster.

@curiostack/base-web-0.0.51

14 Nov 08:19
a580bc8
Compare
Choose a tag to compare

Bug Fixes

  • Fixes core-js resolution workaround to apply to webpack in addition to normal nodejs (e.g., jest)

New features

  • Module resolution can be overridden by setting curiostack.resolveOverrides in package.json
{
  "curiostack": {
    "resolveOverrides": {
      "redux-saga": ["redux-saga-old"]
    }
  },
  "dependencies": {
    "redux-saga-old": "npm:redux-saga:0.0.1"
  }
}

This allows you to use yarn's npm aliases to have multiple versions of the same library in node_modules. Having multiple entries will check them in order (useful for working around issues like the core-js API breakage) but it's more normal to have a single entry pointing to a desired version for a project (e.g., old redux-saga for use with react-admin). This should generally work with less issues than nohoist.

curiostack-0.0.187

15 Oct 04:32
48b1d31
Compare
Choose a tag to compare

Breaking Changes

Mockito

Mockito has been updated to 3.x and its Junit5 extension is automatically enabled. This means it follows the new default mockito behavior of using STRICT_STUBS. With strict stubs, the pattern of using when in a @BeforeEach method and verify in a test does not work anymore, mockito requires all declarations of when to match a call - in exchange, there is no need to verify calls anymore since mockito automatically does.

Before

@BeforeEach() void setUp() {
  when(foo).bar(any()).thenReturn("cat");
}

@Test void test() {
  assertThat(foo.bar("dog")).isEqualTo("cat");
  verify(foo).bar("dog");
}

After

@Test void test() {
  when(foo.bar("dog")).thenReturn("cat");
  assertThat(foo.bar("dog")).isEqualTo("cat");
  // No need to verify
}

Migrating all tests is very tedious, but due to the way Junit5 automatic extensions work there isn't a good way of making this configurable. To opt-out of STRICT_STUBS, add @MockitoSettings(strictness = LENIENT) to your test class. You should probably start by adding this to all your test classes using IntelliJ's structural replace functionality.

Armeria

Deprecations

  • new *Builder() pattern replaced in Armeria with *.builder(). e.g., new GrpcServiceBuilder() -> GrpcService.builder().

New features

  • It is now possible to exclude packages from checkNodeResolutions. If you currently disable checkNodeResolutions to manually manage a package, it is strongly encouraged to reenable it and exclude instead.
nodeSetup {
 excludes.add("redux")
}
  • Default server base image upgraded to Java 13. Base image can be controlled using server.baseImage property.

Bugfixes

  • Task download cache not enabled when Gradle cache is not enabled

@curiostack/base-web-0.0.50

14 Oct 06:11
b543aed
Compare
Choose a tag to compare

New Features

  • core-js dependency conflicts between v3 and v2 are handled within base-web scripts now. You should make sure to include core-js resolutions in the top-level package.json with this release.

  • Favicons are injected into non-prerendered HTML

Breaking Changes

  • react/jsx-props-no-spreading is currently on due to an update to the react eslint config. This seems to hurt more than help and will be disabled in a future version. It is recommended to disable this rule in your local eslint config.

  • react-intl major version introduces some API breakages. In particular, you will need to replace all usages of InjectedIntlProps with WrappedComponentProps. You may also consider instead to migrate to hooks instead.

  • react-helmet types does not provide a default export - if you have any instances of import Helmet from 'react-helmet', they need to be replaced with import { Helmet } from 'react-helmet'

  • Jest has been upgrade to v24. Newer jest is known to cause issues with ts-jest - if your tests suffer strange failures with the upgrade, you may need to fix to the previous version in your top-level package.json

Cleanup

  • Remove legacy, unused tslint configs

curiostack-0.0.186

26 Aug 05:03
6d19385
Compare
Choose a tag to compare

This release contains several HTTP/2-related security fixes. It is recommended to upgrade as soon as possible. For more details, see https://github.com/Netflix/security-bulletins/blob/master/advisories/third-party/2019-002.md

New Features

  • It is now possible to specify dependencies between terraform projects. Contents of dependency terraform projects will be copied in from the build/terraform directory of that project.
terraform {
  dependency(":path:to:other:project")
}

Bugfixes

  • Fix an issue where terraform plugin wouldn't setup terraform correctly when applied to the root project

Dependencies

BOM files for Jackson, Google Cloud, Armeria, Dropwizard Metrics, gRPC, Netty, Apache Beam, log4j2, junit are now used instead of specifying versions for individual dependencies. This means that where previously only a hand-picked set of dependencies were managed for each of these projects, now all are.

  • jackson 2.9.9 -> 2.9.9.20190807
  • google-cloud (not bom) -> 0.105.0-alpha
  • armeria 0.87 -> 0.90.3
  • gRPC 1.21 -> 1.23
  • Netty 4.1.34 -> 4.1.39
  • Apache beam 2.10.0 -> 2.14.0
  • log4j 2.11.2 -> 2.12.1
  • junit5 5.3.0 -> 5.5.1
  • protobuf 2.8.0 -> 2.9.1

And other miscellaneous dependencies

@curiostack/base-web-0.0.49

13 Aug 06:05
0c2c0c6
Compare
Choose a tag to compare

Bugfixes

  • Fixes all non-/ URLs get redirected to /

@curiostack/base-web-0.0.48

07 Aug 06:19
28d4a01
Compare
Choose a tag to compare

Bugfixes

Fixes incorrect type definition for action creator.