Changelog History
Page 1
-
v2.0.1 Changes
October 21, 2020๐ A small release containing a bug fix preventing from HTTP request bodies being sent to services.
-
v2.0.0 Changes
October 20, 2020๐ ๐ 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 Changes
September 04, 2020๐ 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.
- Experimental OpenAPI3 and Protobuf generators (check out
-
v2.0.0-beta.18 Changes
July 21, 2020๐ Changed project name to Semaphore
-
v2.0.0-beta.17 Changes
July 07, 2020๐ Small release fixing various bugs and exposing additional internal packages.
-
v2.0.0-beta.16 Changes
June 29, 2020๐ 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 themessage
andstatus
properties.
Optionally could aschema
be defined. This schema is used to decode the received message.
0๏ธโฃ The default error properties (message and status), error params and other resources could be referenced inside theon_error
anderror
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 = 401params { 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 setresource "echo" { # copies the flow error object if not set } }
-
v2.0.0-beta.15 Changes
June 20, 2020๐ This release includes bug fixes related to header referencing and referencing parsing.
-
v2.0.0-beta.14 Changes
June 19, 2020๐ 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 Changes
May 22, 2020๐ This release includes a couple of bug fixes and quality of life improvements.
-
v2.0.0-beta.12 Changes
May 21, 2020๐ This is a small release containing a bug fix when setting header values in a gRPC request. All header keys are converted to a lower case value before setting.