Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
432 commits
Select commit Hold shift + click to select a range
ffe143a
Add runtime metadata
drexed Aug 5, 2025
b030a00
Add correlate middleware
drexed Aug 5, 2025
0986e84
Fix missing details on combo har and soft call
drexed Aug 5, 2025
c87482f
Fix chain for standard errors
drexed Aug 5, 2025
8b7d2bc
Remove dead stuff
drexed Aug 5, 2025
e7db44d
Move locales
drexed Aug 5, 2025
74d7b28
Update i18n.rb
drexed Aug 5, 2025
884fc95
Dry up processor callback invocations
drexed Aug 5, 2025
565e920
Update processor.rb
drexed Aug 5, 2025
17ab66a
Event system
drexed Aug 5, 2025
af71305
Revert "Event system"
drexed Aug 6, 2025
e9b9dd7
Update configuration.rb
drexed Aug 6, 2025
add8ef3
Rubocop clean up
drexed Aug 6, 2025
b3dc799
Clean up
drexed Aug 6, 2025
55718ff
Clean up task builders
drexed Aug 6, 2025
155d4b0
Update support helpers
drexed Aug 6, 2025
6b361da
Setup some basic tests
drexed Aug 6, 2025
e58c292
Add basic specs
drexed Aug 6, 2025
4dbbe3e
Add attribute registry specs
drexed Aug 6, 2025
de0e774
Update prompts
drexed Aug 6, 2025
0ce45c2
Callback registry specs
drexed Aug 6, 2025
d87f2d0
More clean up
drexed Aug 6, 2025
1b29e39
Create coercion_registry_spec.rb
drexed Aug 6, 2025
716610c
Clean up
drexed Aug 6, 2025
3715637
Create middleware_registry_spec.rb
drexed Aug 6, 2025
ac63df9
Add specs
drexed Aug 6, 2025
15d5998
Update call_spec.rb
drexed Aug 6, 2025
9312965
Clean up
drexed Aug 6, 2025
ce31820
Revert
drexed Aug 6, 2025
21d56f0
Rubocop clean up
drexed Aug 6, 2025
b6a7b02
Rename to task to work
drexed Aug 6, 2025
6ba40be
Rename processor to worker
drexed Aug 6, 2025
59e2f96
Create condition_spec.rb
drexed Aug 6, 2025
78f2bfe
Update condition_spec.rb
drexed Aug 6, 2025
d72f519
Add format util specs
drexed Aug 6, 2025
5e2bbbe
Create array_spec.rb
drexed Aug 6, 2025
7c99dad
Create big_decimal_spec.rb
drexed Aug 6, 2025
c9543c5
Create boolean_spec.rb
drexed Aug 6, 2025
2b83d22
Create complex_spec.rb
drexed Aug 6, 2025
6da92c3
Add specs
drexed Aug 6, 2025
066c776
Update specs
drexed Aug 6, 2025
45fabf1
More specs
drexed Aug 6, 2025
6fe7cb9
More specs
drexed Aug 6, 2025
71b87a8
More specs
drexed Aug 6, 2025
6b70671
Create rational_spec.rb
drexed Aug 6, 2025
5a0dfe6
Create string_spec.rb
drexed Aug 6, 2025
626c193
Create symbol_spec.rb
drexed Aug 6, 2025
09bc476
Create time_spec.rb
drexed Aug 6, 2025
b60e2c7
Create exclusion_spec.rb
drexed Aug 6, 2025
4086610
Clean up
drexed Aug 6, 2025
9fe17a7
Create inclusion_spec.rb
drexed Aug 6, 2025
eb00558
Create length_spec.rb
drexed Aug 6, 2025
9096a4e
Create numeric_spec.rb
drexed Aug 6, 2025
334bbb9
Create presence_spec.rb
drexed Aug 6, 2025
676c02c
Create json_spec.rb
drexed Aug 6, 2025
12eaae3
Clean up formatters
drexed Aug 6, 2025
8f02987
Create json_spec.rb
drexed Aug 7, 2025
84edddc
Update condition_spec.rb
drexed Aug 7, 2025
ad1c3c0
Create key_value_spec.rb
drexed Aug 7, 2025
d76edc7
Clean up
drexed Aug 7, 2025
4755b11
Create logstash_spec.rb
drexed Aug 7, 2025
24ab256
Clean up
drexed Aug 7, 2025
09b3dd1
Create correlate_spec.rb
drexed Aug 7, 2025
791cd43
Create runtime_spec.rb
drexed Aug 7, 2025
9c00567
Create timeout_spec.rb
drexed Aug 7, 2025
4dfc796
Add middleware specs
drexed Aug 7, 2025
feb1752
Create chain_spec.rb
drexed Aug 7, 2025
d4b1366
Create configuration_spec.rb
drexed Aug 7, 2025
09b954f
Fix issue with context
drexed Aug 7, 2025
f23a3fd
more specs
drexed Aug 7, 2025
e789923
Clean up breakpoints settings
drexed Aug 7, 2025
311057c
Rename deprecator condemn
drexed Aug 7, 2025
a9b76b8
Create deprecator_spec.rb
drexed Aug 7, 2025
67380b1
Update deprecator_spec.rb
drexed Aug 7, 2025
b7a4ca5
More specs
drexed Aug 7, 2025
b438f93
Create faults_spec.rb
drexed Aug 7, 2025
5f999cf
Create freezer_spec.rb
drexed Aug 7, 2025
ffa1698
Create identifier_spec.rb
drexed Aug 7, 2025
54375e0
Create locale_spec.rb
drexed Aug 7, 2025
a5fd933
Clean up
drexed Aug 7, 2025
9d8ed86
Fix issue
drexed Aug 11, 2025
7fce2de
Clean up
drexed Aug 11, 2025
15bdf86
More clean up
drexed Aug 11, 2025
1c43961
Clean up faults
drexed Aug 11, 2025
efdad19
Update result.rb
drexed Aug 11, 2025
cfe7329
Add more specs
drexed Aug 11, 2025
387bbe6
Add context matcher
drexed Aug 11, 2025
7eaff3f
More specs
drexed Aug 12, 2025
a153604
Update specs
drexed Aug 12, 2025
1ae1f3d
Update specs
drexed Aug 12, 2025
483286f
Clean up specs
drexed Aug 12, 2025
3b42d43
Create workflow_spec.rb
drexed Aug 12, 2025
b21d84d
Create worker_spec.rb
drexed Aug 12, 2025
875ab05
Update deprecator_spec.rb
drexed Aug 12, 2025
b135bcb
Create task_spec.rb
drexed Aug 12, 2025
6ee921d
Create result_spec.rb
drexed Aug 12, 2025
bbfdcbd
Create attribute_spec.rb
drexed Aug 12, 2025
d15e4af
More specs
drexed Aug 12, 2025
6051a61
Clean up
drexed Aug 12, 2025
f93371c
Update attribute_value_spec.rb
drexed Aug 12, 2025
47ce1ce
Update specs
drexed Aug 12, 2025
36bc0bb
Update specs
drexed Aug 12, 2025
5b86fad
Update call_spec.rb
drexed Aug 12, 2025
482efe5
Update specs
drexed Aug 12, 2025
401bb94
Rubocop clean up
drexed Aug 12, 2025
5e85c4e
Update format_spec.rb
drexed Aug 12, 2025
ef2c5c0
Update specs
drexed Aug 12, 2025
874881e
Update attribute_value_spec.rb
drexed Aug 12, 2025
75aeb9c
Update attribute_spec.rb
drexed Aug 12, 2025
b36dde4
Clean up
drexed Aug 12, 2025
213a793
Clean up
drexed Aug 12, 2025
bf97d48
Update callback_registry_spec.rb
drexed Aug 12, 2025
b6da14e
Update coercion_registry_spec.rb
drexed Aug 12, 2025
48e5454
Update middleware_registry_spec.rb
drexed Aug 12, 2025
d196c25
Update validator_registry_spec.rb
drexed Aug 12, 2025
d65bb41
Update chain_spec.rb
drexed Aug 12, 2025
ff06fb5
Update
drexed Aug 12, 2025
3828159
Update deprecator_spec.rb
drexed Aug 12, 2025
f873d56
Update freezer_spec.rb
drexed Aug 12, 2025
941e58c
Clean up
drexed Aug 12, 2025
3f1da76
Clean up
drexed Aug 12, 2025
f9c7bbb
Update workflow_spec.rb
drexed Aug 12, 2025
dbebfb9
Update worker_spec.rb
drexed Aug 12, 2025
db07b29
Update worker_spec.rb
drexed Aug 12, 2025
7f97713
Update faults_spec.rb
drexed Aug 12, 2025
5ec649b
Update result_spec.rb
drexed Aug 12, 2025
9b18356
Clean up
drexed Aug 12, 2025
9001c40
Clean up
drexed Aug 12, 2025
142d239
Update condition_spec.rb
drexed Aug 12, 2025
2866693
Update length_spec.rb
drexed Aug 12, 2025
a3b340e
Clean up
drexed Aug 12, 2025
4bdb6e8
Update attribute_registry_spec.rb
drexed Aug 12, 2025
eb96872
Update deprecator_spec.rb
drexed Aug 12, 2025
9cbd453
Update attribute_value_spec.rb
drexed Aug 12, 2025
431e0e7
Update task_spec.rb
drexed Aug 12, 2025
b3ccf76
Update task_spec.rb
drexed Aug 12, 2025
417c024
Update task_spec.rb
drexed Aug 12, 2025
5d9f694
Clean up
drexed Aug 12, 2025
e5a3724
Update attribute_value_spec.rb
drexed Aug 12, 2025
af016e7
Clean up
drexed Aug 12, 2025
bc636b6
Update chain_spec.rb
drexed Aug 12, 2025
51ba43d
tag specs
drexed Aug 13, 2025
7b21258
Add specs
drexed Aug 13, 2025
93c3533
Update attribute.rb
drexed Aug 13, 2025
c0c951e
Clean up
drexed Aug 13, 2025
6f4cb6f
Clean up
drexed Aug 13, 2025
384752c
symbolize attribute name
drexed Aug 13, 2025
51d8af3
Add attribute removal
drexed Aug 13, 2025
e273673
Simplify attribute define method
drexed Aug 13, 2025
e62c069
Add deregister methods
drexed Aug 14, 2025
9bcb7e6
Reorg specs
drexed Aug 15, 2025
5a10fad
Update attributes_spec.rb
drexed Aug 15, 2025
5fcba29
Add more attribute specs
drexed Aug 15, 2025
1e374af
Update description
drexed Aug 15, 2025
35869fd
More specs
drexed Aug 15, 2025
76e2f4d
Add more specs
drexed Aug 15, 2025
4effa2b
Update attributes_spec.rb
drexed Aug 15, 2025
58c0b38
Add coercion yardocs
drexed Aug 15, 2025
185093e
Add validator yardocs
drexed Aug 15, 2025
845cf17
add docs
drexed Aug 15, 2025
a9ef55e
Clean up
drexed Aug 15, 2025
b9fee5d
Clean up
drexed Aug 15, 2025
4716bf1
docs
drexed Aug 15, 2025
d8835da
More docs
drexed Aug 15, 2025
ca48217
More clean up
drexed Aug 15, 2025
4f66588
Update attribute_value.rb
drexed Aug 15, 2025
d796f50
Update result.rb
drexed Aug 15, 2025
9d8586d
Update task.rb
drexed Aug 15, 2025
a01e275
Clean up
drexed Aug 15, 2025
f42c20a
More specs
drexed Aug 15, 2025
08d9da7
Update specs
drexed Aug 16, 2025
cf0e057
Clean up docs
drexed Aug 18, 2025
87a4b8d
Update docs
drexed Aug 18, 2025
9004851
Update getting_started.md
drexed Aug 18, 2025
aa29dd0
More docs clean up
drexed Aug 18, 2025
e74bee3
Rename
drexed Aug 18, 2025
e796e78
Update getting_started.md
drexed Aug 18, 2025
84ce504
Add task logger options back
drexed Aug 18, 2025
d5d4b6e
Clean up docs
drexed Aug 18, 2025
2b1b718
Update setup.md
drexed Aug 18, 2025
d7620ea
Clean up
drexed Aug 18, 2025
6ed06c9
Clean up docs
drexed Aug 18, 2025
0d7bfce
More clean up
drexed Aug 18, 2025
b82063d
More clean up
drexed Aug 18, 2025
8950d65
Update context.md
drexed Aug 18, 2025
3e066bb
Update context.md
drexed Aug 18, 2025
9e448c7
More clean up
drexed Aug 18, 2025
c34a800
Update chain.md
drexed Aug 18, 2025
4c32556
Update chain.md
drexed Aug 18, 2025
81a9794
Clean up
drexed Aug 18, 2025
528a607
Update docs
drexed Aug 18, 2025
2e46a95
Update halt.md
drexed Aug 18, 2025
8cac25e
Update context.md
drexed Aug 18, 2025
950d595
Update faults.md
drexed Aug 18, 2025
d32a51a
More clean up
drexed Aug 19, 2025
94864a7
More clean up
drexed Aug 19, 2025
a5382fb
Update result.md
drexed Aug 19, 2025
62cb581
Update docs
drexed Aug 19, 2025
82828c8
Clean up
drexed Aug 19, 2025
3f2d56e
Update internationalization.md
drexed Aug 19, 2025
eb144d9
Clean up
drexed Aug 19, 2025
e163b6c
Update docs.md
drexed Aug 19, 2025
a7055bb
Update internationalization.md
drexed Aug 19, 2025
c53ff66
Upadte docs
drexed Aug 19, 2025
7de1ae3
Improve deprecation docs
drexed Aug 19, 2025
8b06de5
Update ci
drexed Aug 19, 2025
3789cf1
Clean up callbacks docs
drexed Aug 19, 2025
c7de396
Clean up
drexed Aug 19, 2025
2546798
Update middlewares.md
drexed Aug 19, 2025
ab01828
Update logging.md
drexed Aug 19, 2025
adc7091
Update docs
drexed Aug 19, 2025
1bf8cdf
Update callbacks.md
drexed Aug 19, 2025
0dba17a
Update deprecation.md
drexed Aug 19, 2025
4765b00
Update logging.md
drexed Aug 19, 2025
d329e60
Update middlewares.md
drexed Aug 19, 2025
729cbce
More clean up
drexed Aug 19, 2025
fe355a1
Update result.md
drexed Aug 19, 2025
b65c4f6
Clean up
drexed Aug 19, 2025
ff1b498
Update coercions.md
drexed Aug 19, 2025
02cc2a0
Update coercions.md
drexed Aug 19, 2025
092bb72
Update coercions.md
drexed Aug 20, 2025
9b455e7
Update coercions.md
drexed Aug 20, 2025
a0931eb
More docs
drexed Aug 20, 2025
d3e9081
Update validations.md
drexed Aug 20, 2025
913d82e
Allow format to accept a regexp directly
drexed Aug 20, 2025
4575747
Update format.rb
drexed Aug 20, 2025
5cb6ae1
Update defaults.md
drexed Aug 20, 2025
e270cc5
Rename
drexed Aug 20, 2025
fa4fd5f
update
drexed Aug 20, 2025
b467dc7
More clean up
drexed Aug 20, 2025
c20467a
Update naming.md
drexed Aug 20, 2025
a208819
Update naming.md
drexed Aug 20, 2025
6c7c034
More cleaning
drexed Aug 20, 2025
e7a9a35
Update definitions.md
drexed Aug 20, 2025
18efd05
Update definitions.md
drexed Aug 20, 2025
4c80e7d
Update logging.md
drexed Aug 20, 2025
fdcd8e0
Update definitions.md
drexed Aug 20, 2025
0ffce56
Clean up
drexed Aug 20, 2025
e4ab97c
Add styleguide
drexed Aug 20, 2025
a873cfa
Fix navigations
drexed Aug 20, 2025
e64644a
Update CHANGELOG.md
drexed Aug 20, 2025
e9d5572
CI clean up
drexed Aug 20, 2025
71dc291
Fix issues with frame
drexed Aug 20, 2025
26f72d6
Min ruby version 3.2
drexed Aug 20, 2025
0ea793d
Linter fixes
drexed Aug 20, 2025
5f5ecf0
Clean up
drexed Aug 20, 2025
f7b2cec
Ruby 3.2 ready
drexed Aug 20, 2025
581dc1c
Ruby 3.1 ready
drexed Aug 20, 2025
97a88bb
Back to latest
drexed Aug 20, 2025
d1fb434
Remove 3.1 from ci matrix
drexed Aug 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified .DS_Store
Binary file not shown.
5 changes: 4 additions & 1 deletion .cursor/prompts/docs.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Update the file in context using the following guidelines:
You are a senior Ruby developer with expert knowledge of CMDx and writing documentation.

Update the active tab using the following guidelines:

- Follow best practices and implementation
- Use a consistent professional voice
Expand All @@ -7,3 +9,4 @@ Update the file in context using the following guidelines:
- Examples should not cross boundaries or focus
- Docs must cover both typical use cases, including invalid inputs and error conditions
- Use GitHub flavored markdown, including alerts to emphasize critical information (https://github.com/orgs/community/discussions/16925)
- Optimize for LLM's including coding and AI agents
5 changes: 4 additions & 1 deletion .cursor/prompts/rspec.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
Add tests for the file in context using the following guidelines:
You are a senior Ruby developer with expert knowledge of RSpec.

Add tests for the active tab using the following guidelines:

- Expectations should be concise, non-repetitive, and realistic (how it would be used in the real world)
- Follow best practices and implementation
Expand All @@ -18,4 +20,5 @@ Add tests for the file in context using the following guidelines:
- Keep test code concise; avoid unnecessary complexity or duplication
- Tests must cover both typical cases and edge cases, including invalid inputs and error conditions
- Consider all possible scenarios for each method or behavior and ensure they are tested
- Do NOT include integration or real world examples
- Verify all specs are passing
5 changes: 3 additions & 2 deletions .cursor/prompts/yardoc.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
Add yardoc to the file in context using the following guidelines:
You are a senior Ruby developer with expert knowledge of YARDoc.

Add yardoc to the active tab using the following guidelines:

- Follow best practices and implementation
- New documentation should be consistent with current `lib/cmdx` documentation
- Examples should be concise, non-repetitive, and realistic
- Avoid unnecessary complexity or duplication
- Consider all possible scenarios for each method or behavior and ensure they are tested.
- Update any pre-existing documentation to match stated rules
- Do NOT include `CMDx` module level docs
- Module level docs description should NOT include `@example`
Expand Down
57 changes: 56 additions & 1 deletion .cursor/rules/cursor-instructions.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,59 @@ description:
globs:
alwaysApply: true
---
Use instructions found in [copilot-instructions.md](mdc:.github/copilot-instructions.md)

# Ruby Coding Standards

Follow the official Ruby gem guides for best practices.
Reference the guides outlined in https://guides.rubygems.org

## Project Context
CMDx provides a framework for designing and executing complex
business logic within service/command objects.

## Technology Stack
- Ruby 3.4+
- RSpec 3.1+

## Code Style and Structure
- Write concise, idiomatic Ruby code with accurate examples
- Follow Ruby conventions and best practices
- Use object-oriented and functional programming patterns as appropriate
- Prefer iteration and modularization over code duplication
- Use descriptive variable and method names (e.g., user_signed_in?, calculate_total)
- Write comprehensive code documentation using the Yardoc format

## Naming Conventions
- Use snake_case for file names, method names, and variables
- Use CamelCase for class and module names

## Syntax and Formatting
- Follow the Ruby Style Guide (https://rubystyle.guide/)
- Follow Ruby style conventions (2-space indentation, snake_case methods)
- Use Ruby's expressive syntax (e.g., unless, ||=, &.)
- Prefer double quotes for strings
- Respect my Rubocop options

## Performance Optimization
- Use memoization for expensive operations

## Testing
- Follow the RSpec Style Guide (https://rspec.rubystyle.guide/)
- Write comprehensive tests using RSpec
- It's ok to put multiple assertions in the same example
- Include both BDD and TDD based tests
- Create test objects to share across tests
- Do NOT make tests for obvious or reflective expectations
- Prefer real objects over mocks. Use `instance_double` if necessary; never `double`
- Don't test declarative configuration
- Use appropriate matchers
- Update tests and update Yardocs after you write code

## Documentation
- Utilize the YARDoc format when documenting Ruby code
- Follow these best practices:
- Avoid redundant comments that merely restate the code
- Keep comments up-to-date with code changes
- Keep documentation consistent
- Update CHANGELOG.md with any changes

4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ jobs:
strategy:
fail-fast: false
matrix:
ruby-version: ['3.4']
ruby-version: ['3.2', '3.3', '3.4']
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: Set up Ruby ${{ matrix.ruby-version }}
uses: ruby/setup-ruby@v1
with:
Expand Down
5 changes: 4 additions & 1 deletion .irbrc
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
# frozen_string_literal: true

require "cmdx"
require "pp"

# To reload the gem, you must exit and restart the IRB session
require_relative "lib/cmdx" unless defined?(CMDx)
47 changes: 29 additions & 18 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ AllCops:
NewCops: enable
DisplayCopNames: true
DisplayStyleGuide: true
TargetRubyVersion: 3.1
Gemspec/DevelopmentDependencies:
EnforcedStyle: gemspec
Layout/EmptyLinesAroundAttributeAccessor:
Expand All @@ -14,22 +15,25 @@ Layout/EmptyLinesAroundClassBody:
EnforcedStyle: empty_lines_except_namespace
Layout/EmptyLinesAroundModuleBody:
EnforcedStyle: empty_lines_except_namespace
Layout/ExtraSpacing:
Exclude:
- 'lib/generators/cmdx/templates/install.rb'
Layout/FirstHashElementIndentation:
EnforcedStyle: consistent
Layout/LineLength:
Enabled: false
Lint/MissingSuper:
Exclude:
- 'lib/cmdx/middlewares/**/*'
- 'spec/**/**/*'
Lint/ShadowedException:
Enabled: false
Lint/UnusedMethodArgument:
Exclude:
- 'lib/cmdx/coercions/**/*'
- 'lib/cmdx/log_formatters/**/*'
- 'lib/cmdx/middlewares/**/*'
- 'lib/cmdx/validators/**/*'
Metrics/AbcSize:
Enabled: false
Metrics/BlockLength:
Exclude:
- 'lib/cmdx/rspec/**/*'
- 'spec/**/**/*'
- '*.gemspec'
Enabled: false
Metrics/ClassLength:
Enabled: false
Metrics/CyclomaticComplexity:
Expand All @@ -42,43 +46,50 @@ Metrics/PerceivedComplexity:
Enabled: false
Naming/MethodParameterName:
Enabled: false
RSpec/AnyInstance:
Enabled: false
RSpec/DescribeClass:
Exclude:
- 'spec/integrations/**/*'
RSpec/ExampleLength:
Enabled: false
RSpec/IndexedLet:
Enabled: false
RSpec/MessageSpies:
EnforcedStyle: receive
RSpec/MultipleExpectations:
Enabled: false
RSpec/MultipleMemoizedHelpers:
Enabled: false
RSpec/MultipleExpectations:
Enabled: false
RSpec/NestedGroups:
Enabled: false
RSpec/SpecFilePathFormat:
CustomTransform:
CMDx: cmdx
RSpec/StubbedMock:
Enabled: false
RSpec/SubjectStub:
Enabled: false
RSpec/VerifiedDoubles:
RSpec/StubbedMock:
Enabled: false
RSpec/VerifiedDoubleReference:
Enabled: false
Style/ArgumentsForwarding:
Exclude:
- 'lib/cmdx/utils/call.rb'
Style/CaseEquality:
Enabled: false
Style/DocumentDynamicEvalDefinition:
Enabled: false
Style/Documentation:
Enabled: false
Style/FormatStringToken:
Style/DoubleNegation:
Enabled: false
Style/FrozenStringLiteralComment:
Enabled: true
EnforcedStyle: always_true
SafeAutoCorrect: true
Style/OpenStructUse:
Enabled: false
Style/ModuleFunction:
EnforcedStyle: extend_self
Style/OptionalBooleanParameter:
Enabled: false
Style/StringConcatenation:
Enabled: false
Style/StringLiterals:
EnforcedStyle: double_quotes
143 changes: 12 additions & 131 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,143 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [TODO]

- Rebuild parameters to use a less magical approach
- Revert deprecator to use old options
- Validators to add errors directly instead of raising errors
- Coercions to add errors directly instead of raising errors
- Update procs to call with object as first item
- Move I18n to own ruby gem
### Required
- Create `cmdx-i18n` gem with all locales
- Create `cmdx-rspec` gem with RSpec matchers
- Create `cmdx-minitest` gem with Minitest matchers

## [Unreleased]
### Optional
- Create `cmdx-jobs` gem with background job integration
- Create `cmdx-parallel` gem with parallel workflow task execution

## [1.1.2] - 2025-07-20

### Added
- Add `UnknownDeprecationError` for unknown deprecation type

## [1.1.1] - 2025-07-20

### Changed
- Updated all docs and specs
- Update deprecation key words

## [1.1.0] - 2025-07-17

### Added
- Added `CoercionRegistry` class for managing parameter coercions with support for custom type registration
- Added `ValidatorRegistry` class for managing parameter validators with support for custom validator registration
- Added `CallbackRegistry` class to take uninstantiated callback classes
- Added `Validator` and `Coercion` classes to build their respective handlers
- Added deprecation setting

### Changed
- Moved `Task::CALLBACKS` constant to `CallbackRegistry::TYPES`
- Updated `ParameterRegistry` class to not inherit from `Hash`
- Updated `MiddlewareRegistry` class to not inherit from `Hash`
- Updated `CallbackRegistry` class to not inherit from `Hash`

### Removed
- Removed task `register` class method
- Removed `Custom` validator since users can create and register a custom one

## [1.0.1] - 2025-07-07

### Added
- Added comprehensive internationalization support with 24 language locales
- Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek
- Hebrew, Hindi, Italian, Japanese, Korean, Norwegian, Polish, Portuguese
- Russian, Spanish, Swedish, Thai, Turkish, Vietnamese
- Added TLDR sections to documentation for improved accessibility

### Changed
- Improved configuration template with better defaults and examples

## [1.0.0] - 2025-07-03

### Added
- Added `Hook` class for flexible callback management
- Added `perform!` and `perform` method aliases for class-level `call!` and `call` methods
- Added comprehensive YARDoc documentation throughout codebase
- Added configuration-based hook registration system
- Added Cursor and GitHub Copilot configuration files for enhanced IDE support
- Added middleware support for tasks enabling extensible request/response processing
- Added pattern matching support for result objects
- Added support for direct instantiation of Task and Workflow objects
- Added Zeitwerk-based gem loading for improved performance and reliability

### Changed
- Changed `ArgumentError` to `TypeError` for type validation consistency
- Changed configuration from hash-based to PORO (Plain Old Ruby Object) class structure
- Improved documentation readability, consistency, and completeness
- Improved test suite readability, consistency, and coverage
- Renamed `Batch` to `Workflow` to better reflect functionality
- Renamed `Hook` to `Callback` for naming consistency
- Renamed `Parameters` to `ParameterRegistry` for clarity
- Renamed `Run` and associated components to `Chain` for better semantic meaning
- Updated `Chain` to use thread-based execution instead of context passing
- Updated `Immutator` to use `SKIP_CMDX_FREEZING` environment variable instead of `RACK_ENV`/`RAILS_ENV`
- Updated hooks from a hash structure to registry pattern
## [1.5.0] - 2025-08-20

### Removed
- Removed deprecated `task_timeout` and `batch_timeout` configuration settings
### Changes
- BREAKING Rebuild CMDx to be simpler, less magical, and more performant

## [0.5.0] - 2025-03-21

### Added
- Added `on_[state]` and `on_[status]` based result callback handlers
- Added `on_executed` state hook for task completion tracking
- Added `on_good` and `on_bad` status hooks for success/failure handling
- Added `state`, `status`, `outcome`, and `runtime` fields to run serializer
- Added `to_a` alias for array of hashes serializers

### Changed
- Reordered status and state hook execution for more predictable behavior

## [0.4.0] - 2025-03-17

### Added
- Added ANSI color utility for enhanced terminal output
- Added JSON string parsing support in array coercion
- Added JSON string parsing support in hash coercion

### Changed
- Improved ANSI escape sequence handling
- Improved run inspector output formatting

### Fixed
- Fixed log settings assignment when logger is nil to prevent errors

## [0.3.0] - 2025-03-14

### Added
- Added `LoggerSerializer` for standardized log output formatting
- Added `progname` support for logger instances

### Changed
- Removed `pid` (process ID) from result serializer output
- Reverted default log formatter from `PrettyLine` back to `Line`

### Fixed
- Fixed `call!` method not properly marking failure state as interrupted
- Fixed serialization issues with frozen run objects

## [0.2.0] - 2025-03-12

### Added
- Added `PrettyJson` log formatter for structured JSON output
- Added `PrettyKeyValue` log formatter for key-value pair output
- Added `PrettyLine` log formatter for enhanced line-based output
## [1.1.2] - 2025-07-20

### Changed
- Renamed `DatetimeFormatter` utility to `LogTimestamp` for better clarity
- Renamed `MethodName` utility to `NameAffix` for better clarity
- Renamed `Runtime` utility to `MonotonicRuntime` for better clarity
- Updated `PrettyLine` to be the default log formatter
- Updated result logger to be wrapped in `Logger#with_logger` block for better context

### Fixed
- Fixed error when logging non-hash values
- Fixed fault bubbling behavior with nested halted calls
- All items between versions `0.1.0` and `1.1.2` should be reviewed within its own tag

## [0.1.0] - 2025-03-07

Expand Down
Loading