Skip to content

Releases: jexia/semaphore

v2.1.0

30 Apr 11:52
9a260c1
Compare
Choose a tag to compare

Quite a lot of new features and fixes were applied 🎉

These are the highlights:

  • Filter unused fields from schema in generation of OpenAPI3 contracts (#151)
  • Support service discovery servers to resolve service addresses - including a Consul implementation (#158)
  • GraphQL schema generation (#161)
  • Add a Semaphore header to generated files (#164)
  • Avro schema provider (#168)
  • JSON specs provider (#170)
  • Rewrite URLs - similar to nginx rewrite (#172)
  • Remove go-micro transport (#178)
  • OpenAPI3 config should not override the protobuf config (#182)
  • Fix OpenAPI3 generation for a flow without inputs (#185)

v2.0.1

21 Oct 10:52
3364c82
Compare
Choose a tag to compare

A small release containing a bug fix preventing from HTTP request bodies being sent to services.

v2.0.0

20 Oct 12:20
Compare
Choose a tag to compare

🎉 after a lot of hard work and 19 beta releases and 991 commits are we proud to release Semaphore v2.0.0. Feel free to check it out! If you have any questions feel free to open a new issue on Github or to reach out to the community on Discord.

v2.0.0-beta.19

04 Sep 10:23
454cece
Compare
Choose a tag to compare

Hi everyone, hope you are doing well. This release includes many features on which we have been working on really hard in the past months. Below did I include a couple of highlights of what to expect in this release:

  • Experimental OpenAPI3 and Protobuf generators (check out semaphore generate) (#100 & #107)
  • HTTP CORS headers (#102)
  • Define separate request and response codecs (#109)
  • www-form-urlencoded codec (#110)
  • Improved logging performance
  • Future improvements to test coverage (we are now at +- 85%)
  • Header performance improvements
  • Refactoring core packages and components
  • Experimental tracing improvements including more details (#121)

Feel free to reach out to us through issues or Discord if you have any issues or suggestions.

v2.0.0-beta.18

21 Jul 16:40
Compare
Choose a tag to compare

Changed project name to Semaphore

v2.0.0-beta.17

07 Jul 08:47
Compare
Choose a tag to compare

Small release fixing various bugs and exposing additional internal packages.

v2.0.0-beta.16

29 Jun 18:28
Compare
Choose a tag to compare
v2.0.0-beta.16 Pre-release
Pre-release

Happy Monday, we would like to release conditional logic and error handling to the public for you to try out. These will be the last features before the v2.0.0 release and we would love to get your feedback.

Conditions

Conditions could be wrapped around resources. The wrapped resources are executed if the condition results in a boolean which is true.
Conditions could be nested and resources inside a condition block could be referenced inside other resources and the output.

flow "condition" {
  input "schema.Object" {}

  if "{{ input:kind }} == 'INSERT'" {
    resource "insert" {}

    if "{{ insert:upgrade }} == true" {
      resource "upgrade" {}
    }
  }
}

Error Handling

Custom error messages, status codes and response objects could be defined inside your flows.
These objects could reference properties and be overriden with constant values.
Error handling consists out of two blocks. error which defines the custom response object.
These objects are returned to the user if the protocol allows for dynamic error objects (such as HTTP).
on_error allows for the definitions of parameters (params) and to override the message and status properties.
Optionally could a schema be defined. This schema is used to decode the received message.
The default error properties (message and status), error params and other resources could be referenced inside the on_error and error blocks.

flow "greeter" {
    on_error {
        message = "unexpected error"
        status = 500
    }

    resource "echo" {
        error "com.Schema" {
            message "meta" {
                status = "{{ error:status }}"
                trace = "{{ error.params:trace }}"
            }

            message = "{{ error:message }}"
        }

        on_error {
            schema = "com.Schema"
            message = "{{ echo.error:message }}"
            status = 401

            params {
                trace = "{{ echo.error:trace }}"
            }
        }
    }
}

If no error object is defined is the parent error object copied.

error "com.Schema" {
    message "meta" {
        status = "{{ error:status }}"
    }

    message = "{{ error:message }}"
}

flow "greeter" {
    # copies the global error object if not set

    resource "echo" {
        # copies the flow error object if not set
    }
}

v2.0.0-beta.15

20 Jun 09:23
Compare
Choose a tag to compare
v2.0.0-beta.15 Pre-release
Pre-release

This release includes bug fixes related to header referencing and referencing parsing.

v2.0.0-beta.14

19 Jun 07:37
Compare
Choose a tag to compare
v2.0.0-beta.14 Pre-release
Pre-release

This release includes a couple of bug improvements and extends the Github Actions workflow to include additional artifacts to the release.

v2.0.0-beta.13

22 May 12:04
Compare
Choose a tag to compare
v2.0.0-beta.13 Pre-release
Pre-release

This release includes a couple of bug fixes and quality of life improvements.