cmdx 1.1.2 → 1.5.0
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.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/.cursor/prompts/docs.md +4 -1
- data/.cursor/prompts/llms.md +20 -0
- data/.cursor/prompts/rspec.md +4 -1
- data/.cursor/prompts/yardoc.md +3 -2
- data/.cursor/rules/cursor-instructions.mdc +56 -1
- data/.irbrc +6 -0
- data/.rubocop.yml +29 -18
- data/CHANGELOG.md +5 -133
- data/LLM.md +3317 -0
- data/README.md +68 -44
- data/docs/attributes/coercions.md +162 -0
- data/docs/attributes/defaults.md +90 -0
- data/docs/attributes/definitions.md +281 -0
- data/docs/attributes/naming.md +78 -0
- data/docs/attributes/validations.md +309 -0
- data/docs/basics/chain.md +56 -249
- data/docs/basics/context.md +56 -289
- data/docs/basics/execution.md +114 -0
- data/docs/basics/setup.md +37 -334
- data/docs/callbacks.md +89 -467
- data/docs/deprecation.md +91 -174
- data/docs/getting_started.md +212 -202
- data/docs/internationalization.md +11 -647
- data/docs/interruptions/exceptions.md +23 -198
- data/docs/interruptions/faults.md +71 -151
- data/docs/interruptions/halt.md +109 -186
- data/docs/logging.md +44 -256
- data/docs/middlewares.md +113 -426
- data/docs/outcomes/result.md +81 -228
- data/docs/outcomes/states.md +33 -221
- data/docs/outcomes/statuses.md +21 -311
- data/docs/tips_and_tricks.md +120 -70
- data/docs/workflows.md +99 -283
- data/lib/cmdx/.DS_Store +0 -0
- data/lib/cmdx/attribute.rb +229 -0
- data/lib/cmdx/attribute_registry.rb +94 -0
- data/lib/cmdx/attribute_value.rb +193 -0
- data/lib/cmdx/callback_registry.rb +69 -77
- data/lib/cmdx/chain.rb +56 -73
- data/lib/cmdx/coercion_registry.rb +52 -68
- data/lib/cmdx/coercions/array.rb +19 -18
- data/lib/cmdx/coercions/big_decimal.rb +20 -24
- data/lib/cmdx/coercions/boolean.rb +26 -25
- data/lib/cmdx/coercions/complex.rb +21 -22
- data/lib/cmdx/coercions/date.rb +25 -23
- data/lib/cmdx/coercions/date_time.rb +24 -25
- data/lib/cmdx/coercions/float.rb +25 -22
- data/lib/cmdx/coercions/hash.rb +31 -32
- data/lib/cmdx/coercions/integer.rb +30 -24
- data/lib/cmdx/coercions/rational.rb +29 -24
- data/lib/cmdx/coercions/string.rb +19 -22
- data/lib/cmdx/coercions/symbol.rb +37 -0
- data/lib/cmdx/coercions/time.rb +26 -25
- data/lib/cmdx/configuration.rb +49 -108
- data/lib/cmdx/context.rb +222 -44
- data/lib/cmdx/deprecator.rb +61 -0
- data/lib/cmdx/errors.rb +42 -252
- data/lib/cmdx/exceptions.rb +39 -0
- data/lib/cmdx/faults.rb +78 -39
- data/lib/cmdx/freezer.rb +51 -0
- data/lib/cmdx/identifier.rb +30 -0
- data/lib/cmdx/locale.rb +52 -0
- data/lib/cmdx/log_formatters/json.rb +21 -22
- data/lib/cmdx/log_formatters/key_value.rb +20 -22
- data/lib/cmdx/log_formatters/line.rb +15 -22
- data/lib/cmdx/log_formatters/logstash.rb +22 -23
- data/lib/cmdx/log_formatters/raw.rb +16 -22
- data/lib/cmdx/middleware_registry.rb +70 -74
- data/lib/cmdx/middlewares/correlate.rb +90 -54
- data/lib/cmdx/middlewares/runtime.rb +58 -0
- data/lib/cmdx/middlewares/timeout.rb +48 -68
- data/lib/cmdx/railtie.rb +12 -45
- data/lib/cmdx/result.rb +229 -314
- data/lib/cmdx/task.rb +194 -366
- data/lib/cmdx/utils/call.rb +49 -0
- data/lib/cmdx/utils/condition.rb +71 -0
- data/lib/cmdx/utils/format.rb +61 -0
- data/lib/cmdx/validator_registry.rb +63 -72
- data/lib/cmdx/validators/exclusion.rb +38 -67
- data/lib/cmdx/validators/format.rb +48 -49
- data/lib/cmdx/validators/inclusion.rb +43 -74
- data/lib/cmdx/validators/length.rb +91 -154
- data/lib/cmdx/validators/numeric.rb +87 -162
- data/lib/cmdx/validators/presence.rb +37 -50
- data/lib/cmdx/version.rb +1 -1
- data/lib/cmdx/worker.rb +178 -0
- data/lib/cmdx/workflow.rb +85 -81
- data/lib/cmdx.rb +19 -13
- data/lib/generators/cmdx/install_generator.rb +14 -13
- data/lib/generators/cmdx/task_generator.rb +25 -50
- data/lib/generators/cmdx/templates/install.rb +11 -46
- data/lib/generators/cmdx/templates/task.rb.tt +3 -2
- data/lib/locales/en.yml +18 -4
- data/src/cmdx-logo.png +0 -0
- metadata +32 -116
- data/docs/ai_prompts.md +0 -393
- data/docs/basics/call.md +0 -317
- data/docs/configuration.md +0 -344
- data/docs/parameters/coercions.md +0 -396
- data/docs/parameters/defaults.md +0 -335
- data/docs/parameters/definitions.md +0 -446
- data/docs/parameters/namespacing.md +0 -378
- data/docs/parameters/validations.md +0 -405
- data/docs/testing.md +0 -553
- data/lib/cmdx/callback.rb +0 -53
- data/lib/cmdx/chain_inspector.rb +0 -56
- data/lib/cmdx/chain_serializer.rb +0 -63
- data/lib/cmdx/coercion.rb +0 -57
- data/lib/cmdx/coercions/virtual.rb +0 -29
- data/lib/cmdx/core_ext/hash.rb +0 -83
- data/lib/cmdx/core_ext/module.rb +0 -98
- data/lib/cmdx/core_ext/object.rb +0 -125
- data/lib/cmdx/correlator.rb +0 -122
- data/lib/cmdx/error.rb +0 -67
- data/lib/cmdx/fault.rb +0 -140
- data/lib/cmdx/immutator.rb +0 -52
- data/lib/cmdx/lazy_struct.rb +0 -246
- data/lib/cmdx/log_formatters/pretty_json.rb +0 -40
- data/lib/cmdx/log_formatters/pretty_key_value.rb +0 -38
- data/lib/cmdx/log_formatters/pretty_line.rb +0 -41
- data/lib/cmdx/logger.rb +0 -49
- data/lib/cmdx/logger_ansi.rb +0 -68
- data/lib/cmdx/logger_serializer.rb +0 -116
- data/lib/cmdx/middleware.rb +0 -70
- data/lib/cmdx/parameter.rb +0 -312
- data/lib/cmdx/parameter_evaluator.rb +0 -231
- data/lib/cmdx/parameter_inspector.rb +0 -66
- data/lib/cmdx/parameter_registry.rb +0 -106
- data/lib/cmdx/parameter_serializer.rb +0 -59
- data/lib/cmdx/result_ansi.rb +0 -71
- data/lib/cmdx/result_inspector.rb +0 -71
- data/lib/cmdx/result_logger.rb +0 -59
- data/lib/cmdx/result_serializer.rb +0 -104
- data/lib/cmdx/rspec/matchers.rb +0 -28
- data/lib/cmdx/rspec/result_matchers/be_executed.rb +0 -42
- data/lib/cmdx/rspec/result_matchers/be_failed_task.rb +0 -94
- data/lib/cmdx/rspec/result_matchers/be_skipped_task.rb +0 -94
- data/lib/cmdx/rspec/result_matchers/be_state_matchers.rb +0 -59
- data/lib/cmdx/rspec/result_matchers/be_status_matchers.rb +0 -57
- data/lib/cmdx/rspec/result_matchers/be_successful_task.rb +0 -87
- data/lib/cmdx/rspec/result_matchers/have_bad_outcome.rb +0 -51
- data/lib/cmdx/rspec/result_matchers/have_caused_failure.rb +0 -58
- data/lib/cmdx/rspec/result_matchers/have_chain_index.rb +0 -59
- data/lib/cmdx/rspec/result_matchers/have_context.rb +0 -86
- data/lib/cmdx/rspec/result_matchers/have_empty_metadata.rb +0 -54
- data/lib/cmdx/rspec/result_matchers/have_good_outcome.rb +0 -52
- data/lib/cmdx/rspec/result_matchers/have_metadata.rb +0 -114
- data/lib/cmdx/rspec/result_matchers/have_preserved_context.rb +0 -66
- data/lib/cmdx/rspec/result_matchers/have_received_thrown_failure.rb +0 -64
- data/lib/cmdx/rspec/result_matchers/have_runtime.rb +0 -78
- data/lib/cmdx/rspec/result_matchers/have_thrown_failure.rb +0 -76
- data/lib/cmdx/rspec/task_matchers/be_well_formed_task.rb +0 -62
- data/lib/cmdx/rspec/task_matchers/have_callback.rb +0 -85
- data/lib/cmdx/rspec/task_matchers/have_cmd_setting.rb +0 -68
- data/lib/cmdx/rspec/task_matchers/have_executed_callbacks.rb +0 -92
- data/lib/cmdx/rspec/task_matchers/have_middleware.rb +0 -46
- data/lib/cmdx/rspec/task_matchers/have_parameter.rb +0 -181
- data/lib/cmdx/task_deprecator.rb +0 -58
- data/lib/cmdx/task_processor.rb +0 -246
- data/lib/cmdx/task_serializer.rb +0 -57
- data/lib/cmdx/utils/ansi_color.rb +0 -73
- data/lib/cmdx/utils/log_timestamp.rb +0 -36
- data/lib/cmdx/utils/monotonic_runtime.rb +0 -34
- data/lib/cmdx/utils/name_affix.rb +0 -52
- data/lib/cmdx/validator.rb +0 -57
- data/lib/generators/cmdx/templates/workflow.rb.tt +0 -7
- data/lib/generators/cmdx/workflow_generator.rb +0 -84
- data/lib/locales/ar.yml +0 -35
- data/lib/locales/cs.yml +0 -35
- data/lib/locales/da.yml +0 -35
- data/lib/locales/de.yml +0 -35
- data/lib/locales/el.yml +0 -35
- data/lib/locales/es.yml +0 -35
- data/lib/locales/fi.yml +0 -35
- data/lib/locales/fr.yml +0 -35
- data/lib/locales/he.yml +0 -35
- data/lib/locales/hi.yml +0 -35
- data/lib/locales/it.yml +0 -35
- data/lib/locales/ja.yml +0 -35
- data/lib/locales/ko.yml +0 -35
- data/lib/locales/nl.yml +0 -35
- data/lib/locales/no.yml +0 -35
- data/lib/locales/pl.yml +0 -35
- data/lib/locales/pt.yml +0 -35
- data/lib/locales/ru.yml +0 -35
- data/lib/locales/sv.yml +0 -35
- data/lib/locales/th.yml +0 -35
- data/lib/locales/tr.yml +0 -35
- data/lib/locales/vi.yml +0 -35
- data/lib/locales/zh.yml +0 -35
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de49105a37f479ac8172f6329536b45a976adbb4e09c43b9351e329dbf662760
|
4
|
+
data.tar.gz: 7b100f2619d36ae0ac287c108bbab114168d87528beb1751951ac1282dbc37d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: becbfc6dcc4657b16697559c91bac79a2416610655f2831cef74745d30720ac6e0f64991b442229384c8c98259f3b9dc0df706b60c988c01462a8a02eb8ee097
|
7
|
+
data.tar.gz: e0dc0122625d710048768d0a31b39a1081ef800206e331f7e842b483c4639108177dbe83a6e1b47cbd08328ddfc5899e5d5b682ce65ec90287035b8e17a7d8f3
|
data/.DS_Store
CHANGED
Binary file
|
data/.cursor/prompts/docs.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
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
|
+
```
|
data/.cursor/prompts/rspec.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
|
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
|
data/.cursor/prompts/yardoc.md
CHANGED
@@ -1,10 +1,11 @@
|
|
1
|
-
|
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,59 @@ description:
|
|
3
3
|
globs:
|
4
4
|
alwaysApply: true
|
5
5
|
---
|
6
|
-
|
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
|
61
|
+
|
data/.irbrc
ADDED
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/
|
18
|
-
|
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
|
-
|
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/
|
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/
|
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/
|
80
|
-
|
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,19 @@
|
|
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
|
-
|
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.0] - 2025-08-21
|
15
10
|
|
16
|
-
|
11
|
+
### Changes
|
12
|
+
- BREAKING - Revamp CMDx for clarity, transparency, and higher performance
|
17
13
|
|
18
14
|
## [1.1.2] - 2025-07-20
|
19
15
|
|
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
16
|
### Changed
|
58
|
-
-
|
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
|
85
|
-
|
86
|
-
### Removed
|
87
|
-
- Removed deprecated `task_timeout` and `batch_timeout` configuration settings
|
88
|
-
|
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
|
135
|
-
|
136
|
-
### 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
|
17
|
+
- All items between versions `0.1.0` and `1.1.2` should be reviewed within its own tag
|
146
18
|
|
147
19
|
## [0.1.0] - 2025-03-07
|
148
20
|
|