cmdx 1.1.2 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.cursor/prompts/docs.md +4 -1
  4. data/.cursor/prompts/llms.md +20 -0
  5. data/.cursor/prompts/rspec.md +4 -1
  6. data/.cursor/prompts/yardoc.md +3 -2
  7. data/.cursor/rules/cursor-instructions.mdc +55 -1
  8. data/.irbrc +6 -0
  9. data/.rubocop.yml +29 -18
  10. data/CHANGELOG.md +11 -132
  11. data/LLM.md +3317 -0
  12. data/README.md +68 -44
  13. data/docs/attributes/coercions.md +162 -0
  14. data/docs/attributes/defaults.md +90 -0
  15. data/docs/attributes/definitions.md +281 -0
  16. data/docs/attributes/naming.md +78 -0
  17. data/docs/attributes/validations.md +309 -0
  18. data/docs/basics/chain.md +56 -249
  19. data/docs/basics/context.md +56 -289
  20. data/docs/basics/execution.md +114 -0
  21. data/docs/basics/setup.md +37 -334
  22. data/docs/callbacks.md +89 -467
  23. data/docs/deprecation.md +91 -174
  24. data/docs/getting_started.md +212 -202
  25. data/docs/internationalization.md +11 -647
  26. data/docs/interruptions/exceptions.md +23 -198
  27. data/docs/interruptions/faults.md +71 -151
  28. data/docs/interruptions/halt.md +109 -186
  29. data/docs/logging.md +44 -256
  30. data/docs/middlewares.md +113 -426
  31. data/docs/outcomes/result.md +81 -228
  32. data/docs/outcomes/states.md +33 -221
  33. data/docs/outcomes/statuses.md +21 -311
  34. data/docs/tips_and_tricks.md +120 -70
  35. data/docs/workflows.md +99 -283
  36. data/lib/cmdx/.DS_Store +0 -0
  37. data/lib/cmdx/attribute.rb +229 -0
  38. data/lib/cmdx/attribute_registry.rb +94 -0
  39. data/lib/cmdx/attribute_value.rb +193 -0
  40. data/lib/cmdx/callback_registry.rb +69 -77
  41. data/lib/cmdx/chain.rb +56 -73
  42. data/lib/cmdx/coercion_registry.rb +52 -68
  43. data/lib/cmdx/coercions/array.rb +19 -18
  44. data/lib/cmdx/coercions/big_decimal.rb +20 -24
  45. data/lib/cmdx/coercions/boolean.rb +26 -25
  46. data/lib/cmdx/coercions/complex.rb +21 -22
  47. data/lib/cmdx/coercions/date.rb +25 -23
  48. data/lib/cmdx/coercions/date_time.rb +24 -25
  49. data/lib/cmdx/coercions/float.rb +25 -22
  50. data/lib/cmdx/coercions/hash.rb +31 -32
  51. data/lib/cmdx/coercions/integer.rb +30 -24
  52. data/lib/cmdx/coercions/rational.rb +29 -24
  53. data/lib/cmdx/coercions/string.rb +19 -22
  54. data/lib/cmdx/coercions/symbol.rb +37 -0
  55. data/lib/cmdx/coercions/time.rb +26 -25
  56. data/lib/cmdx/configuration.rb +49 -108
  57. data/lib/cmdx/context.rb +222 -44
  58. data/lib/cmdx/deprecator.rb +61 -0
  59. data/lib/cmdx/errors.rb +42 -252
  60. data/lib/cmdx/exceptions.rb +39 -0
  61. data/lib/cmdx/faults.rb +78 -39
  62. data/lib/cmdx/freezer.rb +51 -0
  63. data/lib/cmdx/identifier.rb +30 -0
  64. data/lib/cmdx/locale.rb +52 -0
  65. data/lib/cmdx/log_formatters/json.rb +21 -22
  66. data/lib/cmdx/log_formatters/key_value.rb +20 -22
  67. data/lib/cmdx/log_formatters/line.rb +15 -22
  68. data/lib/cmdx/log_formatters/logstash.rb +22 -23
  69. data/lib/cmdx/log_formatters/raw.rb +16 -22
  70. data/lib/cmdx/middleware_registry.rb +70 -74
  71. data/lib/cmdx/middlewares/correlate.rb +90 -54
  72. data/lib/cmdx/middlewares/runtime.rb +58 -0
  73. data/lib/cmdx/middlewares/timeout.rb +48 -68
  74. data/lib/cmdx/railtie.rb +12 -45
  75. data/lib/cmdx/result.rb +229 -314
  76. data/lib/cmdx/task.rb +194 -366
  77. data/lib/cmdx/utils/call.rb +49 -0
  78. data/lib/cmdx/utils/condition.rb +71 -0
  79. data/lib/cmdx/utils/format.rb +61 -0
  80. data/lib/cmdx/validator_registry.rb +63 -72
  81. data/lib/cmdx/validators/exclusion.rb +38 -67
  82. data/lib/cmdx/validators/format.rb +48 -49
  83. data/lib/cmdx/validators/inclusion.rb +43 -74
  84. data/lib/cmdx/validators/length.rb +101 -162
  85. data/lib/cmdx/validators/numeric.rb +95 -170
  86. data/lib/cmdx/validators/presence.rb +37 -50
  87. data/lib/cmdx/version.rb +1 -1
  88. data/lib/cmdx/worker.rb +178 -0
  89. data/lib/cmdx/workflow.rb +85 -81
  90. data/lib/cmdx.rb +19 -13
  91. data/lib/generators/cmdx/install_generator.rb +14 -13
  92. data/lib/generators/cmdx/task_generator.rb +25 -50
  93. data/lib/generators/cmdx/templates/install.rb +11 -46
  94. data/lib/generators/cmdx/templates/task.rb.tt +3 -2
  95. data/lib/locales/en.yml +18 -4
  96. data/src/cmdx-logo.png +0 -0
  97. metadata +32 -116
  98. data/docs/ai_prompts.md +0 -393
  99. data/docs/basics/call.md +0 -317
  100. data/docs/configuration.md +0 -344
  101. data/docs/parameters/coercions.md +0 -396
  102. data/docs/parameters/defaults.md +0 -335
  103. data/docs/parameters/definitions.md +0 -446
  104. data/docs/parameters/namespacing.md +0 -378
  105. data/docs/parameters/validations.md +0 -405
  106. data/docs/testing.md +0 -553
  107. data/lib/cmdx/callback.rb +0 -53
  108. data/lib/cmdx/chain_inspector.rb +0 -56
  109. data/lib/cmdx/chain_serializer.rb +0 -63
  110. data/lib/cmdx/coercion.rb +0 -57
  111. data/lib/cmdx/coercions/virtual.rb +0 -29
  112. data/lib/cmdx/core_ext/hash.rb +0 -83
  113. data/lib/cmdx/core_ext/module.rb +0 -98
  114. data/lib/cmdx/core_ext/object.rb +0 -125
  115. data/lib/cmdx/correlator.rb +0 -122
  116. data/lib/cmdx/error.rb +0 -67
  117. data/lib/cmdx/fault.rb +0 -140
  118. data/lib/cmdx/immutator.rb +0 -52
  119. data/lib/cmdx/lazy_struct.rb +0 -246
  120. data/lib/cmdx/log_formatters/pretty_json.rb +0 -40
  121. data/lib/cmdx/log_formatters/pretty_key_value.rb +0 -38
  122. data/lib/cmdx/log_formatters/pretty_line.rb +0 -41
  123. data/lib/cmdx/logger.rb +0 -49
  124. data/lib/cmdx/logger_ansi.rb +0 -68
  125. data/lib/cmdx/logger_serializer.rb +0 -116
  126. data/lib/cmdx/middleware.rb +0 -70
  127. data/lib/cmdx/parameter.rb +0 -312
  128. data/lib/cmdx/parameter_evaluator.rb +0 -231
  129. data/lib/cmdx/parameter_inspector.rb +0 -66
  130. data/lib/cmdx/parameter_registry.rb +0 -106
  131. data/lib/cmdx/parameter_serializer.rb +0 -59
  132. data/lib/cmdx/result_ansi.rb +0 -71
  133. data/lib/cmdx/result_inspector.rb +0 -71
  134. data/lib/cmdx/result_logger.rb +0 -59
  135. data/lib/cmdx/result_serializer.rb +0 -104
  136. data/lib/cmdx/rspec/matchers.rb +0 -28
  137. data/lib/cmdx/rspec/result_matchers/be_executed.rb +0 -42
  138. data/lib/cmdx/rspec/result_matchers/be_failed_task.rb +0 -94
  139. data/lib/cmdx/rspec/result_matchers/be_skipped_task.rb +0 -94
  140. data/lib/cmdx/rspec/result_matchers/be_state_matchers.rb +0 -59
  141. data/lib/cmdx/rspec/result_matchers/be_status_matchers.rb +0 -57
  142. data/lib/cmdx/rspec/result_matchers/be_successful_task.rb +0 -87
  143. data/lib/cmdx/rspec/result_matchers/have_bad_outcome.rb +0 -51
  144. data/lib/cmdx/rspec/result_matchers/have_caused_failure.rb +0 -58
  145. data/lib/cmdx/rspec/result_matchers/have_chain_index.rb +0 -59
  146. data/lib/cmdx/rspec/result_matchers/have_context.rb +0 -86
  147. data/lib/cmdx/rspec/result_matchers/have_empty_metadata.rb +0 -54
  148. data/lib/cmdx/rspec/result_matchers/have_good_outcome.rb +0 -52
  149. data/lib/cmdx/rspec/result_matchers/have_metadata.rb +0 -114
  150. data/lib/cmdx/rspec/result_matchers/have_preserved_context.rb +0 -66
  151. data/lib/cmdx/rspec/result_matchers/have_received_thrown_failure.rb +0 -64
  152. data/lib/cmdx/rspec/result_matchers/have_runtime.rb +0 -78
  153. data/lib/cmdx/rspec/result_matchers/have_thrown_failure.rb +0 -76
  154. data/lib/cmdx/rspec/task_matchers/be_well_formed_task.rb +0 -62
  155. data/lib/cmdx/rspec/task_matchers/have_callback.rb +0 -85
  156. data/lib/cmdx/rspec/task_matchers/have_cmd_setting.rb +0 -68
  157. data/lib/cmdx/rspec/task_matchers/have_executed_callbacks.rb +0 -92
  158. data/lib/cmdx/rspec/task_matchers/have_middleware.rb +0 -46
  159. data/lib/cmdx/rspec/task_matchers/have_parameter.rb +0 -181
  160. data/lib/cmdx/task_deprecator.rb +0 -58
  161. data/lib/cmdx/task_processor.rb +0 -246
  162. data/lib/cmdx/task_serializer.rb +0 -57
  163. data/lib/cmdx/utils/ansi_color.rb +0 -73
  164. data/lib/cmdx/utils/log_timestamp.rb +0 -36
  165. data/lib/cmdx/utils/monotonic_runtime.rb +0 -34
  166. data/lib/cmdx/utils/name_affix.rb +0 -52
  167. data/lib/cmdx/validator.rb +0 -57
  168. data/lib/generators/cmdx/templates/workflow.rb.tt +0 -7
  169. data/lib/generators/cmdx/workflow_generator.rb +0 -84
  170. data/lib/locales/ar.yml +0 -35
  171. data/lib/locales/cs.yml +0 -35
  172. data/lib/locales/da.yml +0 -35
  173. data/lib/locales/de.yml +0 -35
  174. data/lib/locales/el.yml +0 -35
  175. data/lib/locales/es.yml +0 -35
  176. data/lib/locales/fi.yml +0 -35
  177. data/lib/locales/fr.yml +0 -35
  178. data/lib/locales/he.yml +0 -35
  179. data/lib/locales/hi.yml +0 -35
  180. data/lib/locales/it.yml +0 -35
  181. data/lib/locales/ja.yml +0 -35
  182. data/lib/locales/ko.yml +0 -35
  183. data/lib/locales/nl.yml +0 -35
  184. data/lib/locales/no.yml +0 -35
  185. data/lib/locales/pl.yml +0 -35
  186. data/lib/locales/pt.yml +0 -35
  187. data/lib/locales/ru.yml +0 -35
  188. data/lib/locales/sv.yml +0 -35
  189. data/lib/locales/th.yml +0 -35
  190. data/lib/locales/tr.yml +0 -35
  191. data/lib/locales/vi.yml +0 -35
  192. data/lib/locales/zh.yml +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3dda80e40c4516ca1578dc67755ad2a5d97f55c3ce1137d80e2cee11460ab145
4
- data.tar.gz: a42b255005f0d6fd52053948b9ba7839af23ddcffea51bd2382400e02c820b8a
3
+ metadata.gz: bd6e2321faffcce3015989a0e58df96c87be1dbdc4755cc7b783546bc5ecbc4f
4
+ data.tar.gz: cc5f262ac3f329a308e8a0c25a0f200830830d09c3560c913f8a80ff5997aab8
5
5
  SHA512:
6
- metadata.gz: c5510e7d51eb74f5c4250ccfa6f84bf299b9cea0c5caa38f68c269381be0feb8914eb325307002e7f2d96cbc3677a442206a09ad69f81acb36248f6f5aa684d3
7
- data.tar.gz: 1f0073fbbfd2c578a3ea070fea968e1cbe92b152c1c7d9ffd2cd89729a4e5a017c12b1ce581bf3f61b37b426dc884ffb403f1247969ff7a766e75cf0799b483f
6
+ metadata.gz: 71e5f8a864f91b10ca26985bfbd7502fcc751e70117562bee62f606f340468bd517e329a05de5f80d495ff7bb0aaf0195564ceaa95267b9bfdba6d3c424c0698
7
+ data.tar.gz: 2d560416d0838761e481952a5d759e05db859fef027e74a5c6c5bb65e49756ab041a35f7725d88ba40746b93f2726bee65e317b7c89d5e56291dd9767c99603f
data/.DS_Store CHANGED
Binary file
@@ -1,4 +1,6 @@
1
- Update the file in context using the following guidelines:
1
+ You are a senior Ruby developer with expert knowledge of CMDx and writing documentation.
2
+
3
+ Update the active tab using the following guidelines:
2
4
 
3
5
  - Follow best practices and implementation
4
6
  - Use a consistent professional voice
@@ -7,3 +9,4 @@ Update the file in context using the following guidelines:
7
9
  - Examples should not cross boundaries or focus
8
10
  - Docs must cover both typical use cases, including invalid inputs and error conditions
9
11
  - Use GitHub flavored markdown, including alerts to emphasize critical information (https://github.com/orgs/community/discussions/16925)
12
+ - Optimize for LLM's including coding and AI agents
@@ -0,0 +1,20 @@
1
+ Process the following instructions in the order given:
2
+
3
+ 1. Create an `LLM.md` file
4
+ 2. Append all files within `docs/**/*.md` into @LLM.md
5
+ 2a. Use order outlined in the table of contents of @README.md
6
+ 2b. Process one file at a time faster performance and improved accuracy
7
+ 2c. Remove the table of contents from the chunk
8
+ 2c. Remove the navigations below `---` from the chunk
9
+ 2d. Wrap the chunk the files GitHub url the top and a spacer at the bottom like so:
10
+ ```
11
+
12
+ ---
13
+ url: https://github.com/drexed/cmdx/blob/main/docs/callbacks.md
14
+ ---
15
+
16
+ {{ chunk }}
17
+
18
+ ---
19
+
20
+ ```
@@ -1,4 +1,6 @@
1
- Add tests for the file in context using the following guidelines:
1
+ You are a senior Ruby developer with expert knowledge of RSpec.
2
+
3
+ Add tests for the active tab using the following guidelines:
2
4
 
3
5
  - Expectations should be concise, non-repetitive, and realistic (how it would be used in the real world)
4
6
  - Follow best practices and implementation
@@ -18,4 +20,5 @@ Add tests for the file in context using the following guidelines:
18
20
  - Keep test code concise; avoid unnecessary complexity or duplication
19
21
  - Tests must cover both typical cases and edge cases, including invalid inputs and error conditions
20
22
  - Consider all possible scenarios for each method or behavior and ensure they are tested
23
+ - Do NOT include integration or real world examples
21
24
  - Verify all specs are passing
@@ -1,10 +1,11 @@
1
- Add yardoc to the file in context using the following guidelines:
1
+ You are a senior Ruby developer with expert knowledge of YARDoc.
2
+
3
+ Add yardoc to the active tab using the following guidelines:
2
4
 
3
5
  - Follow best practices and implementation
4
6
  - New documentation should be consistent with current `lib/cmdx` documentation
5
7
  - Examples should be concise, non-repetitive, and realistic
6
8
  - Avoid unnecessary complexity or duplication
7
- - Consider all possible scenarios for each method or behavior and ensure they are tested.
8
9
  - Update any pre-existing documentation to match stated rules
9
10
  - Do NOT include `CMDx` module level docs
10
11
  - Module level docs description should NOT include `@example`
@@ -3,4 +3,58 @@ description:
3
3
  globs:
4
4
  alwaysApply: true
5
5
  ---
6
- Use instructions found in [copilot-instructions.md](mdc:.github/copilot-instructions.md)
6
+
7
+ # Ruby Coding Standards
8
+
9
+ Follow the official Ruby gem guides for best practices.
10
+ Reference the guides outlined in https://guides.rubygems.org
11
+
12
+ ## Project Context
13
+ CMDx provides a framework for designing and executing complex
14
+ business logic within service/command objects.
15
+
16
+ ## Technology Stack
17
+ - Ruby 3.4+
18
+ - RSpec 3.1+
19
+
20
+ ## Code Style and Structure
21
+ - Write concise, idiomatic Ruby code with accurate examples
22
+ - Follow Ruby conventions and best practices
23
+ - Use object-oriented and functional programming patterns as appropriate
24
+ - Prefer iteration and modularization over code duplication
25
+ - Use descriptive variable and method names (e.g., user_signed_in?, calculate_total)
26
+ - Write comprehensive code documentation using the Yardoc format
27
+
28
+ ## Naming Conventions
29
+ - Use snake_case for file names, method names, and variables
30
+ - Use CamelCase for class and module names
31
+
32
+ ## Syntax and Formatting
33
+ - Follow the Ruby Style Guide (https://rubystyle.guide/)
34
+ - Follow Ruby style conventions (2-space indentation, snake_case methods)
35
+ - Use Ruby's expressive syntax (e.g., unless, ||=, &.)
36
+ - Prefer double quotes for strings
37
+ - Respect my Rubocop options
38
+
39
+ ## Performance Optimization
40
+ - Use memoization for expensive operations
41
+
42
+ ## Testing
43
+ - Follow the RSpec Style Guide (https://rspec.rubystyle.guide/)
44
+ - Write comprehensive tests using RSpec
45
+ - It's ok to put multiple assertions in the same example
46
+ - Include both BDD and TDD based tests
47
+ - Create test objects to share across tests
48
+ - Do NOT make tests for obvious or reflective expectations
49
+ - Prefer real objects over mocks. Use `instance_double` if necessary; never `double`
50
+ - Don't test declarative configuration
51
+ - Use appropriate matchers
52
+ - Update tests and update Yardocs after you write code
53
+
54
+ ## Documentation
55
+ - Utilize the YARDoc format when documenting Ruby code
56
+ - Follow these best practices:
57
+ - Avoid redundant comments that merely restate the code
58
+ - Keep comments up-to-date with code changes
59
+ - Keep documentation consistent
60
+ - Update CHANGELOG.md with any changes
data/.irbrc ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "pp"
4
+
5
+ # To reload the gem, you must exit and restart the IRB session
6
+ require_relative "lib/cmdx" unless defined?(CMDx)
data/.rubocop.yml CHANGED
@@ -6,6 +6,7 @@ AllCops:
6
6
  NewCops: enable
7
7
  DisplayCopNames: true
8
8
  DisplayStyleGuide: true
9
+ TargetRubyVersion: 3.1
9
10
  Gemspec/DevelopmentDependencies:
10
11
  EnforcedStyle: gemspec
11
12
  Layout/EmptyLinesAroundAttributeAccessor:
@@ -14,22 +15,25 @@ Layout/EmptyLinesAroundClassBody:
14
15
  EnforcedStyle: empty_lines_except_namespace
15
16
  Layout/EmptyLinesAroundModuleBody:
16
17
  EnforcedStyle: empty_lines_except_namespace
17
- Layout/ExtraSpacing:
18
- Exclude:
19
- - 'lib/generators/cmdx/templates/install.rb'
18
+ Layout/FirstHashElementIndentation:
19
+ EnforcedStyle: consistent
20
20
  Layout/LineLength:
21
21
  Enabled: false
22
22
  Lint/MissingSuper:
23
23
  Exclude:
24
- - 'lib/cmdx/middlewares/**/*'
25
24
  - 'spec/**/**/*'
25
+ Lint/ShadowedException:
26
+ Enabled: false
27
+ Lint/UnusedMethodArgument:
28
+ Exclude:
29
+ - 'lib/cmdx/coercions/**/*'
30
+ - 'lib/cmdx/log_formatters/**/*'
31
+ - 'lib/cmdx/middlewares/**/*'
32
+ - 'lib/cmdx/validators/**/*'
26
33
  Metrics/AbcSize:
27
34
  Enabled: false
28
35
  Metrics/BlockLength:
29
- Exclude:
30
- - 'lib/cmdx/rspec/**/*'
31
- - 'spec/**/**/*'
32
- - '*.gemspec'
36
+ Enabled: false
33
37
  Metrics/ClassLength:
34
38
  Enabled: false
35
39
  Metrics/CyclomaticComplexity:
@@ -42,43 +46,50 @@ Metrics/PerceivedComplexity:
42
46
  Enabled: false
43
47
  Naming/MethodParameterName:
44
48
  Enabled: false
45
- RSpec/AnyInstance:
46
- Enabled: false
47
49
  RSpec/DescribeClass:
48
50
  Exclude:
49
51
  - 'spec/integrations/**/*'
50
52
  RSpec/ExampleLength:
51
53
  Enabled: false
54
+ RSpec/IndexedLet:
55
+ Enabled: false
52
56
  RSpec/MessageSpies:
57
+ EnforcedStyle: receive
58
+ RSpec/MultipleExpectations:
53
59
  Enabled: false
54
60
  RSpec/MultipleMemoizedHelpers:
55
61
  Enabled: false
56
- RSpec/MultipleExpectations:
57
- Enabled: false
58
62
  RSpec/NestedGroups:
59
63
  Enabled: false
60
64
  RSpec/SpecFilePathFormat:
61
65
  CustomTransform:
62
66
  CMDx: cmdx
63
- RSpec/StubbedMock:
64
- Enabled: false
65
67
  RSpec/SubjectStub:
66
68
  Enabled: false
67
- RSpec/VerifiedDoubles:
69
+ RSpec/StubbedMock:
68
70
  Enabled: false
69
71
  RSpec/VerifiedDoubleReference:
70
72
  Enabled: false
73
+ Style/ArgumentsForwarding:
74
+ Exclude:
75
+ - 'lib/cmdx/utils/call.rb'
76
+ Style/CaseEquality:
77
+ Enabled: false
78
+ Style/DocumentDynamicEvalDefinition:
79
+ Enabled: false
71
80
  Style/Documentation:
72
81
  Enabled: false
73
- Style/FormatStringToken:
82
+ Style/DoubleNegation:
74
83
  Enabled: false
75
84
  Style/FrozenStringLiteralComment:
76
85
  Enabled: true
77
86
  EnforcedStyle: always_true
78
87
  SafeAutoCorrect: true
79
- Style/OpenStructUse:
80
- Enabled: false
88
+ Style/ModuleFunction:
89
+ EnforcedStyle: extend_self
81
90
  Style/OptionalBooleanParameter:
82
91
  Enabled: false
92
+ Style/StringConcatenation:
93
+ Enabled: false
83
94
  Style/StringLiterals:
84
95
  EnforcedStyle: double_quotes
data/CHANGELOG.md CHANGED
@@ -2,147 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
6
 
8
7
  ## [TODO]
9
8
 
10
- - Rebuild parameters to use a less magical approach
11
- - Revert deprecator to use old options
12
- - Validators to add errors directly instead of raising errors
13
- - Coercions to add errors directly instead of raising errors
14
- - Update procs to call with object as first item
9
+ ## [1.5.1] - 2025-08-21
15
10
 
16
- ## [Unreleased]
11
+ ### Changes
12
+ - Prefix I18n with `::` to play nice with `CMDx::I18n`
13
+ - Safe navigate length and numeric validators
14
+ - Update railtie file path points to correct directory
17
15
 
18
- ## [1.1.2] - 2025-07-20
19
-
20
- ### Added
21
- - Add `UnknownDeprecationError` for unknown deprecation type
22
-
23
- ## [1.1.1] - 2025-07-20
24
-
25
- ### Changed
26
- - Updated all docs and specs
27
- - Update deprecation key words
28
-
29
- ## [1.1.0] - 2025-07-17
30
-
31
- ### Added
32
- - Added `CoercionRegistry` class for managing parameter coercions with support for custom type registration
33
- - Added `ValidatorRegistry` class for managing parameter validators with support for custom validator registration
34
- - Added `CallbackRegistry` class to take uninstantiated callback classes
35
- - Added `Validator` and `Coercion` classes to build their respective handlers
36
- - Added deprecation setting
37
-
38
- ### Changed
39
- - Moved `Task::CALLBACKS` constant to `CallbackRegistry::TYPES`
40
- - Updated `ParameterRegistry` class to not inherit from `Hash`
41
- - Updated `MiddlewareRegistry` class to not inherit from `Hash`
42
- - Updated `CallbackRegistry` class to not inherit from `Hash`
43
-
44
- ### Removed
45
- - Removed task `register` class method
46
- - Removed `Custom` validator since users can create and register a custom one
47
-
48
- ## [1.0.1] - 2025-07-07
49
-
50
- ### Added
51
- - Added comprehensive internationalization support with 24 language locales
52
- - Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek
53
- - Hebrew, Hindi, Italian, Japanese, Korean, Norwegian, Polish, Portuguese
54
- - Russian, Spanish, Swedish, Thai, Turkish, Vietnamese
55
- - Added TLDR sections to documentation for improved accessibility
56
-
57
- ### Changed
58
- - Improved configuration template with better defaults and examples
59
-
60
- ## [1.0.0] - 2025-07-03
61
-
62
- ### Added
63
- - Added `Hook` class for flexible callback management
64
- - Added `perform!` and `perform` method aliases for class-level `call!` and `call` methods
65
- - Added comprehensive YARDoc documentation throughout codebase
66
- - Added configuration-based hook registration system
67
- - Added Cursor and GitHub Copilot configuration files for enhanced IDE support
68
- - Added middleware support for tasks enabling extensible request/response processing
69
- - Added pattern matching support for result objects
70
- - Added support for direct instantiation of Task and Workflow objects
71
- - Added Zeitwerk-based gem loading for improved performance and reliability
72
-
73
- ### Changed
74
- - Changed `ArgumentError` to `TypeError` for type validation consistency
75
- - Changed configuration from hash-based to PORO (Plain Old Ruby Object) class structure
76
- - Improved documentation readability, consistency, and completeness
77
- - Improved test suite readability, consistency, and coverage
78
- - Renamed `Batch` to `Workflow` to better reflect functionality
79
- - Renamed `Hook` to `Callback` for naming consistency
80
- - Renamed `Parameters` to `ParameterRegistry` for clarity
81
- - Renamed `Run` and associated components to `Chain` for better semantic meaning
82
- - Updated `Chain` to use thread-based execution instead of context passing
83
- - Updated `Immutator` to use `SKIP_CMDX_FREEZING` environment variable instead of `RACK_ENV`/`RAILS_ENV`
84
- - Updated hooks from a hash structure to registry pattern
16
+ ## [1.5.0] - 2025-08-21
85
17
 
86
- ### Removed
87
- - Removed deprecated `task_timeout` and `batch_timeout` configuration settings
18
+ ### Changes
19
+ - BREAKING - Revamp CMDx for clarity, transparency, and higher performance
88
20
 
89
- ## [0.5.0] - 2025-03-21
90
-
91
- ### Added
92
- - Added `on_[state]` and `on_[status]` based result callback handlers
93
- - Added `on_executed` state hook for task completion tracking
94
- - Added `on_good` and `on_bad` status hooks for success/failure handling
95
- - Added `state`, `status`, `outcome`, and `runtime` fields to run serializer
96
- - Added `to_a` alias for array of hashes serializers
97
-
98
- ### Changed
99
- - Reordered status and state hook execution for more predictable behavior
100
-
101
- ## [0.4.0] - 2025-03-17
102
-
103
- ### Added
104
- - Added ANSI color utility for enhanced terminal output
105
- - Added JSON string parsing support in array coercion
106
- - Added JSON string parsing support in hash coercion
107
-
108
- ### Changed
109
- - Improved ANSI escape sequence handling
110
- - Improved run inspector output formatting
111
-
112
- ### Fixed
113
- - Fixed log settings assignment when logger is nil to prevent errors
114
-
115
- ## [0.3.0] - 2025-03-14
116
-
117
- ### Added
118
- - Added `LoggerSerializer` for standardized log output formatting
119
- - Added `progname` support for logger instances
120
-
121
- ### Changed
122
- - Removed `pid` (process ID) from result serializer output
123
- - Reverted default log formatter from `PrettyLine` back to `Line`
124
-
125
- ### Fixed
126
- - Fixed `call!` method not properly marking failure state as interrupted
127
- - Fixed serialization issues with frozen run objects
128
-
129
- ## [0.2.0] - 2025-03-12
130
-
131
- ### Added
132
- - Added `PrettyJson` log formatter for structured JSON output
133
- - Added `PrettyKeyValue` log formatter for key-value pair output
134
- - Added `PrettyLine` log formatter for enhanced line-based output
21
+ ## [1.1.2] - 2025-07-20
135
22
 
136
23
  ### Changed
137
- - Renamed `DatetimeFormatter` utility to `LogTimestamp` for better clarity
138
- - Renamed `MethodName` utility to `NameAffix` for better clarity
139
- - Renamed `Runtime` utility to `MonotonicRuntime` for better clarity
140
- - Updated `PrettyLine` to be the default log formatter
141
- - Updated result logger to be wrapped in `Logger#with_logger` block for better context
142
-
143
- ### Fixed
144
- - Fixed error when logging non-hash values
145
- - Fixed fault bubbling behavior with nested halted calls
24
+ - All items between versions `0.1.0` and `1.1.2` should be reviewed within its own tag
146
25
 
147
26
  ## [0.1.0] - 2025-03-07
148
27