Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
99 changes: 82 additions & 17 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,92 @@
# Changelog

All notable changes to this project are documented in this file.
All notable changes to this project will be documented in this file.
## [1.0.0] - 2026-07-03

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).
### Added

- feat(matchable): let the request override case sensitivity
- feat(matchable): add whitelisted partial matching
- feat(concern): hand a call context to context-aware filters
- feat(attachable): expand the image shortcut in the type key
- feat(attachable): add ActiveStorage pre-filtering sugar
- feat(target): cross polymorphic belongs_to with a declared concrete type
- feat(target): filter through declared association paths
- feat(concern): add declarative default filters
- feat(togglable): toggle on a bare key
- feat(scopable): delegate filters to declared model scopes
- feat(concern): add applied_filters introspection
- feat(rangeable): add whitelisted numeric bound filtering
- feat(validator): add declarations validator for specs
- feat(equatable): add whitelisted equality filtering

### Build

- build(deps): add activestorage to the test harness

### CI

- ci: align CI with ci-workflows canonical setup (per README)

### Documentation

- docs(yard): hide method source from the published documentation
- docs(readme): document the matchable DSL
- docs(readme): document the filter call context
- docs(readme): document the image type shortcut
- docs(readme): document the attachable DSL
- docs(readme): document ActiveStorage attachment paths
- docs(readme): document association targets
- docs(readme): document default filters
- docs(validator): complete the initialize YARD doc
- docs(readme): document the scopable and togglable DSLs
- docs(readme): document applied_filters introspection
- docs(readme): document the rangeable DSL
- docs(readme): document the declarations validator
- docs(readme): document the equatable DSL

### Fixed

- fix(datable): ignore non-hash bounds instead of raising
- fix(concerns): inherit datable/sortable declarations in subclasses

### Other

## [Unreleased]
- chore(gemspec): credit Jonathan PHILIPPE as author
- chore(deps): manage dev dependencies via bundle add

### Refactored

- refactor(attachable): derive blob associations from the reflection macro
- refactor(attachable): resolve attachments through the reflection registry
- refactor(equatable): extract value normalization into its own module
- refactor(filters): share the skip decision between call and applied

### Style

- style(concern): keep the class_methods DSL, scope BlockLength instead

### Tests

- test(activestorage): prove association targets through attachments

## [0.1.0] - 2026-06-23

### Added

- Initial extraction from the ledger-back codebase.
- `Filterable::Concern` — the filtering engine: `add_filter` to register filters
and `filterable(params)` to fold them over a relation.
- `Filterable::Concerns::Datable` — `datable` DSL plus the after/before/since/range
date filters.
- `Filterable::Concerns::Sortable` — `sortable` DSL plus `+/-` ordering from
`filters[sort]`.
- `Filterable::Railtie` — auto-includes the engine into `ActiveRecord::Base` via
`on_load(:active_record)`, so Rails models need no explicit `include`.
- feat(railtie): auto-include the engine into ActiveRecord

### CI

- ci: add the Fluence gem CI workflow stack

### Other

- chore(deps): bump actions/checkout from 6 to 7
- chore(release): bump version to 0.2.0
- chore: initial commit — extract filterable from ledger-back

### Changed
### Reverted

- Dropped the Zeitwerk dependency in favour of explicit `require_relative`s,
matching the other Fluence gems and keeping the guarded Railtie require clean.
- revert: roll back version bump, return to 0.1.0

[Unreleased]: https://github.com/fluence-eu/filterable-ruby/commits/main
2 changes: 1 addition & 1 deletion lib/filterable/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# frozen_string_literal: true

module Filterable
VERSION = '0.1.0'
VERSION = '1.0.0'
end
Loading