77 Commits
Author SHA1 Message Date
Brooke Kuhlmann 9fb95fb752 Updated to Ruby 4.0.3
link:https://www.ruby-lang.org/en/news/2026/04/21/ruby-4-0-3-released/[Details].

Milestone: patch
2026-04-21 08:06:28 -06:00
Brooke Kuhlmann 90bc5cc148 Updated version
Milestone: minor
0.7.0
2026-04-08 15:00:32 -06:00
Brooke Kuhlmann cd3875506f Updated QR code filter to handle responsive or fixed view
Necessary to allow the SVG output of QR code generation to be used in responsive design so folks can allow these images to shrink/grow as desired.

The `standalone` key was dropped since this is default behavior so no need to be explicit.

The test suite was updated to account for the new `view` attribute by using REXML to acquire all attributes of the resulting SVG image. This allows each test to be explicit while improving readability.

RuboCop was updated to account for this change. We can't fix until customers are migrated to the new functionality and then we can come back and fix these violations.

Issue: 17
Milestone: minor
2026-04-08 15:00:08 -06:00
Brooke Kuhlmann 5e37ac5b85 Updated version
Milestone: minor
0.6.0
2026-04-06 09:04:28 -06:00
Brooke Kuhlmann b80b000b67 Removed deprecated build environment
This has been deprecated for a while so is safe to remove.

Milestone: minor
2026-04-06 09:01:35 -06:00
Brooke Kuhlmann f5584067d3 Updated to Liquid 5.12.0
link:https://github.com/Shopify/liquid/releases/tag/v5.12.0[Details].

Milestone: minor
2026-03-19 08:30:03 -06:00
Brooke Kuhlmann 78aa7a717e Updated to Ruby 4.0.2
link:https://www.ruby-lang.org/en/news/2026/03/16/ruby-4-0-2-released/[Details].

Milestone: patch
2026-03-17 08:12:01 -06:00
Brooke Kuhlmann 4f758b8cd5 Updated version
Necessary to bump the version and update the documentation to reflect recent changes.

Milestone: minor
0.5.0
2026-02-05 10:15:43 -07:00
Brooke Kuhlmann 756fc34205 Added Milestoner configuration
Necessary to configure Milestoner (via Gemsmith) so that the Git tags point to the organization.

Milestone: minor
2026-02-05 10:15:31 -07:00
Brooke Kuhlmann a91dec61e5 Added locale date and ordinalize support for special words
Necessary to match link:https://shopify.github.io/liquid/filters/date[Liquid Date] behavior where you can use special words (i.e. "now" or "today") to equate to `Time.now`.

The specs use regular expressions because we are dealing with relative dates which would cause build failures if using exact string matches.

Milestone: minor
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann 4db5febbb3 Refactored date/times to use Time
This simplfies the date/time logic so only `Time` is used since `DateTime` is more of a relic because it's less performant, doesn't handle daylight savings time, and isn't based on the Gregorian calendar (which is what is most used these days).

These changes allow us to reach 95% line coverage as a minimum. The reason branch converage isn't there is because of all of the fallback logic which still needs to be addressed.

Milestone: patch
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann c2e3f802f1 Added filters missing test coverage
Ensures specs exist so more lines of code (and conditional logic) is tested. This does not cover the fallback logic as of yet (more on that soon).

Milestone: minor
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann 490a89737c Fixed Reek issues
Added configuration, fixes issues where possible, and left code comments for addressing later when time allows.

Milestone: patch
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann 81d0af81cd Fixed RuboCop issues
This fixes all remaining RuboCop issues. For the rest, I've left RuboCop TODO comments around the troublesome code so we can quickly find and fix further when time allows.

The Rakefile is also updated to ensure these checks run locally and in CI.

Milestone: patch
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann db34dd671c Added RuboCop configuration
Necessary to ensure RuboCop picks up the link:https://alchemists.io/projects/caliber[Caliber] defaults.

Milestone: minor
2026-02-04 14:39:36 -07:00
Brooke Kuhlmann dd1d62fefe Added implementation initializer
The design of this gem is to build an instance (i.e. environment) which is fully encapsulated. The fact that an environment is the type returned is more of an implementation detail.

Use of `.build_environment` still works but you'll now get deprecation warnings. We can completely remove support after a few more versions have rolled out and people have had time to upgrade accordingly.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann 6b660b6ff4 Added missing memory system specs
Necessary to document behavior and have test coverage.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann a2514481fa Refactored file system as memory system
Necessary to clearly identify what _kind_ of file system this is.

Milestone: patch
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann 8614d5c02f Added feature loader
Necessary to be explicit about loading Rails functionality (i.e. optional feature). This provides the following benefits:

* Forces you to use the Rails stack when loading Rails functionality.
* Removes the conditional logic used to _implicilty_ load the Rails environment in favor of being _explicit_.
* Removes the nested `Filters::Helpers` class which is also a link:https://alchemists.io/articles/ruby_antipatterns#_nested_classes[Nested Class] antipattern. This is now handled by the recently added `RailsHelpers` module.

There's still a link:https://alchemists.io/articles/connascence#_name[CoN] issue with so many hard coded constants in the `Filters` module. Hope to clean that up soon too.

RSpec has been updated to load everything prior to running the test suite in order to ensure the environment is fully loaded for testing purposes.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann 7778352d99 Added Rails helpers
Necessary to extract from the `Filters` module since the current implementation uses a nested class. There's a couple of reasons why this is important:

* Use of a class is unnecessary and wasteful since there is no state. This is also known as the link:https://alchemists.io/articles/ruby_antipatterns#_nonclasses[Nonclass] antipattern.
* Due to the class having no state, the functionalitity can be fully encapsulated within a module as purely functional methods.
* Modules are the most lightweight and performant objects in Ruby.

We'll soon be able to replace the nested `Filters` class with this implementation.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann 23c59d1953 Added missing implementation specs
Necessary to test top level configuration.

Note that `TRMNL::Liquid::FileSystem` is injected instead of being hard coded. This was done to allow building of the environment to be flexible in case someone wanted to swap our in-memory file system out with a better implementation or something altogether different.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann 409b4dee76 Removed GitHub Actions configuration
No longer necessary since we've switched to using Circle CI. This also makes things much easier to debug because GitHub Action images are very hard to use locally.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann db1c28e8b5 Added Circle CI configuration
Necessary to switch over to Circle CI for this in order to be consistent with how we build both the TRMNL i18n and TRMNL API gems.

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann d38421a2ee Added Rake, RSpec, and RuboCop bin stubs
Necessary to provide developer conveniences (but will also be used by CI).

Milestone: minor
2026-02-02 08:30:16 -07:00
Brooke Kuhlmann b5dd99b002 Fixed auto correctable RuboCop issues
Ran RuboCop auto correct to clean all this up which reduced a ton of issues. ~19 offenses remain which require manual intervention to fix.

Milestone: patch
2026-01-29 08:46:03 -07:00