diff options
| author | Shulhan <ms@kilabit.info> | 2025-02-03 19:08:34 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2025-02-03 20:11:07 +0700 |
| commit | 2e26d5517f8865aea7f6f7f1e3e7e9c6c89f0b4c (patch) | |
| tree | 8fe637203066399b5014f4f172356d785234a87e | |
| parent | a6d3b0944f80f7b84ac91f1904d23a312fbee098 (diff) | |
| download | gorankusu-2e26d5517f8865aea7f6f7f1e3e7e9c6c89f0b4c.tar.xz | |
_www/doc: move original CHANGELOG to root of repository
The idea is to allow developer who browse the repository to see the file
immediately.
The one in the doc/ directory now contains the symlink.
| -rw-r--r-- | CHANGELOG.adoc | 386 | ||||
| l---------[-rw-r--r--] | _www/doc/CHANGELOG.adoc | 387 |
2 files changed, 387 insertions, 386 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 diff --git a/_www/doc/CHANGELOG.adoc b/_www/doc/CHANGELOG.adoc index 0eebde3..dbe8cbb 100644..120000 --- a/_www/doc/CHANGELOG.adoc +++ b/_www/doc/CHANGELOG.adoc @@ -1,386 +1 @@ -= 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 +../../CHANGELOG.adoc
\ No newline at end of file |
