aboutsummaryrefslogtreecommitdiff
path: root/CHANGELOG.adoc
diff options
context:
space:
mode:
Diffstat (limited to 'CHANGELOG.adoc')
-rw-r--r--CHANGELOG.adoc386
1 files changed, 386 insertions, 0 deletions
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
new file mode 100644
index 0000000..0eebde3
--- /dev/null
+++ b/CHANGELOG.adoc
@@ -0,0 +1,386 @@
+= gorankusu CHANGELOG
+:toc:
+:sectanchors:
+:sectlinks:
+
+
+[#v0_7_0]
+== gorankusu v0.7.0 (2024-09-07)
+
+[#v0_7_0__breaking_changes]
+=== Breaking changes
+
+all: refactoring form input for multipart form-data::
++
+This changes replace handling type for storing multipart form-data
+from "map[string][]byte" to [*multipart.Form] based on changes on
+module "pakakeh.go".
+
+[#v0_7_0__enhancements]
+=== Enhancements
+
+all: make HTTP Target Params works along with WithRawBody::
++
+Previously, if WithRawBody is true, the Params will not be rendered
+and parsed during Run.
+This changes makes the Params works along with WithRawBody.
+If Params are set it will be rendered along with text area for raw
+body.
+
+_www: support HTTP target with content type "text/html"::
++
+In the Target form, user can select to send body as "text/html".
+
+all: add git.sr.ht APIs into example::
++
+The APIs is created using https://man.sr.ht/git.sr.ht/api.md as
+reference.
+We also needs the API to create webhook since no other way to create
+it in current sourcehut web.
+
+[#v0_7_0__bug_fixes]
+=== Bug fixes
+
+_www: fix save on null Headers and Vars::
++
+If the user does not define the Headers, clicking Run on any HTTP
+Target will result in error when "save" function executed before it.
+
+_www: fix form input type file where content is binary::
++
+If the file in FormInput is binary, the conversion to
+"FormInput.value" will fail with an error like "invalid characters in
+String".
+
+all: use [route.Path] to generate parameters::
++
+Using [route.String] does not works if the parameter can be empty,
+while [route.Path] replace all keys and return the path as is.
+
+[#v0_7_0__chores]
+=== Chores
+
+all: add task to initialize the repository and tools::
++
+The task "init" include initializing git submodule, installing third
+party tools for linters, and installing node packages.
+
+
+[#v0_6_1]
+== gorankusu v0.6.1 (2024-04-06)
+
+This release replace "share" module with "pakakeh.go".
+The "share" module repository has been moved to SourceHut with new name
+"pakakeh.go".
+For more information about the changes see "pakakeh.go" project page at
+https://sr.ht/~shulhan/pakakeh.go.
+
+
+[#v0_6_0]
+== gorankusu v0.6.0 (2024-03-05)
+
+[#v0_6_0__breaking_changes]
+=== Breaking changes
+
+target: changes Opts to non-pointer::
++
+--
+Previously, we use pointer to indicated that the Target can be attacked
+or not.
+Since HTTPTarget now have AllowAttack, this options can be changes to
+non-pointer.
+--
+
+
+all: change the signature of default request/response dumper::
++
+--
+Instead of function that use the signature of HTTPRequestDumper/
+HTTPResponseDumper; change it to function that _return_ HTTPRequestDumper/
+HTTPResponseDumper.
+In this way, the documentation can show the clear relation between
+function and its type.
+--
+
+
+[#v0_6_0__new_features]
+=== New features
+
+all: add global HTTP headers for Target::
++
+--
+The Headers field on Target define the global headers that will be send
+along with all HTTPTarget or WebSocketTarget.
+The same header can also be defined on HTTPTarget that override the
+value of Target.
+--
+
+
+all: add default HTTPRunHandler::
++
+--
+Previously, the default HTTPRunHandler is hidden, called dynamically
+based on Run is nil or not.
+This changes make it exported as function that return HTTPRunHandler
+to show how define and create a custom HTTPRunHandler.
+--
+
+
+all: add default HTTPParamsConverter for [HTTPTarget.ParamsConverter]::
++
+--
+The DefaultParamsConverter define default function to convert
+[HTTPTarget.Params] to its equivalent parameters in HTTP, either as query
+in URL or as bytes in body.
+
+This changes introduce breaking changes in HTTPTarget where field
+ConvertParams renamed to ParamsConverter.
+--
+
+
+all: set default HTTPTarget Attack if its not set::
++
+--
+Previously, the function for Attack need to be coded manually.
+
+This changes introduce new function DefaultHTTPAttack that generate
+HTTPAttackHandler based on the HTTPTarget method, request type, and
+Params; if AllowAttack is true and Attack is nil.
+--
+
+
+[#v0_6_0__bug_fixes]
+=== Bug fixes
+
+all: fix null navigation links::
++
+--
+If the navLinks fields is empty, the HTTP API will return "null" and cause
+the rendering error.
+This changes fix this issue by allocating the slice navLinks with one
+capabilities to make JSON always return "[]" if its empty.
+--
+
+
+[#v0_5_0]
+== gorankusu v0.5.0 (2024-02-08)
+
+This release rename the project from "trunks" to "gorankusu".
+
+The original idea of "trunks" is because the core library that we
+use for load testing is named
+https://github.com/tsenart/vegeta/["vegeta"]
+(from Dragon Ball), and
+https://en.wikipedia.org/wiki/Vegeta[Vegeta]
+has a son named Trunks.
+In English, trunks also have multiple meanings.
+
+In order to have a unique name, we rename the project to "gorankusu",
+which is a combination of "go" (the main programming language
+that built the application) and "torankusu" the Hepburn of "Trunks".
+
+
+[#v0_5_0__breaking_changes]
+=== Breaking changes
+
+In order for making the code consistent and conform with linters, some
+exported types, fields, methods, and functions has been renamed.
+
+* In AttackResult type, field HttpTargetID renamed to HTTPTargetID
+* HttpConvertParams renamed to HTTPConvertParams
+* HttpRunHandler renamed to HTTPRunHandler
+* HttpAttackHandler renamed to HTTPAttackHandler
+* HttpPreAttackHandler renamed to HTTPPreAttackHandler
+* HttpTarget renamed to HTTPTarget
+
+and many more.
+
+[#v0_5_0__new_features]
+=== New features
+
+all: allow submit free form request body in HTTPTarget::
++
+--
+In HTTPTarget we add fields RawBody and WithRawBody.
+
+The field RawBody can be filled by anything by user.
+Those field can be activated by setting WithRawBody.
+
+Implements: https://todo.sr.ht/~shulhan/gorankusu/3
+--
+
+all: implement form input file::
++
+--
+The FormInput now can be set to FormInputKindFile that will rendered
+as "<input type='file' ...>" on the web user interface.
+
+Once submitted, the file name, type, size, and lastModification will
+be stored under FormInput Filename, Filetype, Filesize, and Filemodms.
+
+Implements: https://todo.sr.ht/~shulhan/trunks/1
+--
+
+
+all: add type to customize how to dump HTTP request and response::
++
+--
+The HTTPRequestDumper define an handler to convert [http.Request] into
+[RunResponse] DumpRequest.
+The HTTPResponseDumper define an handler to convert [http.Response]
+into [RunResponse] DumpResponse.
+
+In HTTPTarget we add fields RequestDumper and ResponseDumper that if its not
+nil it will be used to dump HTTP request and response to raw bytes.
+--
+
+
+all: support parameter binding in HTTP Path::
++
+If HTTP Path contains key, for example "/:book", and the Params contains
+the same key, the Path will be filled with value from Params.
+The same key in Params will be deleted and not send on query parameter
+or body.
+
+
+[#v0_5_0__enhancements]
+=== Enhancements
+
+_www: check HTTP response status greater or equal 400::
++
+Any HTTP status code below 400 are still processable and not an error.
+
+
+[#v0_4_1]
+== gorankusu v0.4.1 (2023-11-11)
+
+This release only have chores, it should not break anything.
+
+go.mod: update all dependencies::
++
+--
+This changes set minimum Go version to version 1.20.
+The vegeta module finally has some update to v12.11.1.
+--
+
+gitmodules: use https instead of git scheme::
++
+Using git scheme require private key to clone the remote repository.
+
+_www: update wui module::
++
+While at it reformat all files using default prettier.
+
+_www: setup eslint for linting TypeScript files::
++
+This changes also apply all eslint recommendations.
+
+Makefile: replace the Go linter and apply all their recommendations::
++
+--
+Previously, we use golangci-lint as linter.
+This linter does not provides any useful recommendation lately and the
+development is quite a mess, sometimes its break when using Go tip.
+
+In this changes we replace it with revive, fieldalignment, and shadow;
+and fix all of their recommendations.
+--
+
+
+[#v0_4_0]
+== gorankusu v0.4.0 (2023-05-16)
+
+[#v0_4_0__bug_fixes]
+=== Bug fixes
+
+all: fix panic when attacking HTTP due to nil Attack handler::
++
+In attack endpoint, check if the Attack is nil before we push the request
+to attack queue.
+
+[#v0_4_0__enhancements]
+=== Enhancements
+
+_www: replace WebSocket handlers with HTTP endpoints::
++
+The Attack and attack Cancel now call the HTTP endpoints.
+
+all: add boolean Kind for FormInput, FormInputKindBoolean::
++
+--
+The FormInputKindBoolean only used for convertion, for example
+ToJsonObject.
+In the WUI, it still rendered as string, not as checkbox.
+
+FormInput with this Kind will be converted to true in ToJsonObject if
+the Value is either "true", "yes", or "1".
+--
+
+all: check and call ConvertParams when running HttpTarget::
++
+If the ConvertParams field is set, use it to convert the parameters into
+desired type.
+
+[#v0_4_0__chores]
+=== Chores
+
+all: move the _doc directory under _www::
+
+all: convert the README from asciidoc to markdown::
+
+all: remove WebSocket server::
++
+Using WebSocket for communication in client require additional
+setup, especially if its behind proxy.
+For example, if we serve the gorankusu server under domain testing.local
+behind proxy, we need to setup route for the WebSocket too.
+
+go.mod: set Go version to 1.19 and update all dependencies::
+
+
+[#v0_3_0]
+== gorankusu v0.3.0 (2022-08-25)
+
+This release set the minimum Go version to 1.18 and update all modules.
+
+[#v0_3_0_chores]
+=== Chores
+
+all: group all documentations under directory _doc::
++
+The _doc directory provides an entry point for all documentation.
+While at it we reformat the README to use AsciiDoc markup.
+
+example: fix the HTTP POST handler::
++
+Remove call to ParseMultipartform since the request type is
+x-www-form-urlencoded not multipart/form-data.
+
+all: remove unused field Locker in RunRequest::
+
+all: fix all linter warnings::
++
+Some linter, govet, warns about possible copied Mutex on HttpRequest.
+To fix this we implement method clone and Stringer on HttpRequest.
+
+
+[#v0_2_0]
+== gorankusu v0.2.0 (2022-03-13)
+
+Release gorankusu under GPL 3.0 or later license.
+
+See https://kilabit.info/journal/2022/gpl for more information.
+
+
+[#v0_1_0]
+== gorankusu v0.1.0 (2022-02-05)
+
+Module gorankusu is a library and HTTP service that provide web user interface
+to test HTTP service, similar to Postman, and for load testing.
+
+For the load testing we use vegeta [1] as the backend.
+
+[1] https://github.com/tsenart/vegeta
+
+// SPDX-FileCopyrightText: 2021 M. Shulhan <ms@kilabit.info>
+// SPDX-License-Identifier: GPL-3.0-or-later