diff --git a/CHANGELOG.md b/CHANGELOG.md index f914960..46f63f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/lib/filterable/version.rb b/lib/filterable/version.rb index 4846db8..ddfa227 100644 --- a/lib/filterable/version.rb +++ b/lib/filterable/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Filterable - VERSION = '0.1.0' + VERSION = '1.0.0' end