Skip to content

Comments

Cli#391

Merged
Stivenjs merged 16 commits intomainfrom
cli
Dec 23, 2025
Merged

Cli#391
Stivenjs merged 16 commits intomainfrom
cli

Conversation

@Stivenjs
Copy link
Contributor

@Stivenjs Stivenjs commented Dec 23, 2025

Note

Highlights

  • Introduces @fasttify/liquid-forge-native (Rust + N-API) implementing high-perf filters (handleize, escape, truncate, append, prepend, strip_html, etc.) with benches and examples
  • Adds JS bridge lib/native-filters.ts and hybrid filters in base-filters.native.ts; engine now uses native filters when available with seamless fallback
  • Updates packages/liquid-forge to optionally depend on @fasttify/liquid-forge-native, switches filters export to native-aware variants, and exposes settings in render context via pipeline; adds labeler rule native
  • Adds theme converter tool under scripts/theme-converter (parsers, converters, validators, CLI theme-converter:convert, tests) to migrate Shopify themes to Fasttify
  • Monorepo/CI: includes new workspace, bumps pnpm version, adds baseline-browser-mapping, pnpm overrides tweak, improves GitHub Actions caching and removes pinned pnpm version

Written by Cursor Bugbot for commit 97b6471. This will update automatically on new commits. Configure here.

… converter scripts. Remove deprecated Shopify to Fasttify converter files.
…npm-lock.yaml

This commit introduces the baseline-browser-mapping package (version 2.9.7) to the project. Additionally, it updates the package.json to include an ignored built dependency for core-js and modifies the pnpm-lock.yaml to reflect the new dependency and its version. Unused comments have also been removed from various files for improved clarity.
…ersion and correct AWS SDK dependencies

This commit removes the deprecated baseline-browser-mapping@2.8.12 and updates the pnpm-lock.yaml to reflect the current version 2.9.7. Additionally, it corrects the AWS SDK client-sso-oidc dependency version to ensure compatibility with client-sts.
This commit enhances the DomainResolver class by introducing a more structured approach to domain resolution, including optimized caching mechanisms and improved error handling. Key changes include the addition of private methods for fetching stores by custom and default domains, as well as methods for validating store existence and activity. The caching strategy now differentiates between negative cache TTLs for not found and error scenarios, ensuring better performance and reliability.
…g data structure, and integrate theme settings into context

This commit introduces two new filters, `appendFilter` and `prependFilter`, which handle undefined and null values more robustly, replacing the native LiquidJS filters. Additionally, the `RenderingData` interface is updated to include `themeSettings`, and the context is enhanced to incorporate these settings during the rendering process. The data loading step is also modified to fetch theme settings in parallel, ensuring they are available for rendering.
…r improved code clarity and maintainability.
This commit updates the theme converter scripts to use a new directory structure under `packages/liquid-forge`. The paths for test and conversion scripts have been modified accordingly. Additionally, the `ARCHITECTURE.md` and `README.md` files, along with various converter implementations, have been removed to streamline the project and focus on the core functionality.
This commit introduces the `liquid-forge-native` package to the project. Updates include adding it to the workspace in `pnpm-workspace.yaml`, including it as an optional dependency in `liquid-forge/package.json`, and modifying the `package.json` to include it in the packages list. Additionally, the GitHub workflows are updated to set up Rust for building native filters, and the filters are adjusted to import from the new native implementation. The labeler configuration is also updated to include paths for the new package.
…ormatting

This commit adds a newline at the end of the `pnpm-workspace.yaml` file and standardizes the quotation marks in the GitHub workflow files to single quotes. These changes enhance readability and maintain consistency across configuration files.
…andardize quotation marks

This commit updates the GitHub workflow files by removing the explicit pnpm version specification from the installation step, enhancing flexibility. Additionally, it standardizes the quotation marks in the Node.js setup steps to double quotes for consistency across the workflows.
…ase builds

This commit introduces a new development build job for pull requests, optimizing the workflow for testing native filters on Linux. It also refines the existing release build job to ensure it only runs on the main branch. Additionally, the workflow steps are updated for consistency, including standardized quotation marks and improved caching for Rust dependencies.
…orkflows for pnpm version and quotation consistency

This commit deletes the `CODE_OF_CONDUCT.md` file and removes several outdated GitHub workflow files related to Rust checks and native filters. Additionally, it updates the remaining workflow files to specify the pnpm version and standardizes quotation marks for consistency. These changes streamline the project and enhance workflow clarity.
…e end of files

This commit adds missing newlines at the end of the `build.yml` and `unit_test.yml` workflow files, improving adherence to best practices for file formatting.
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

tags: [],
},
custom: mappings.custom || {},
};
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incompatibility config is never loaded into conversion rules

The incompatible section from default-mappings.json (containing filters, tags, and features that are incompatible with Fasttify) is never loaded into ConversionRules. The ConversionRules type doesn't include an incompatible field, so the loader ignores it entirely. Additionally, the isIncompatible method for 'feature' type incorrectly checks custom.skipFiles (meant for file paths to skip) instead of the intended incompatible.features list. This means feature incompatibility detection will always return false or check the wrong data.

Additional Locations (1)

Fix in Cursor Fix in Web


// Buscar filtros en expresiones Liquid
// Patrón: | filter_name o | filter_name:param o | filter1 | filter2
const filterRegex = /\|\s*([a-z_][a-z0-9_]*)(?::[^|}]*(?:\|\s*[^}]+)?)?/gi;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filter regex consumes chained filters after parameters

The filter regex /\|\s*([a-z_][a-z0-9_]*)(?::[^|}]*(?:\|\s*[^}]+)?)?/gi incorrectly consumes subsequent chained filters when a filter has parameters. The trailing (?:\|\s*[^}]+)? greedily matches everything after the colon up to }}, including any following filters. For example, with {{ price | round: 2 | money_with_currency }}, the regex matches | round: 2 | money_with_currency as a single match, capturing only round as the filter name. The money_with_currency filter is consumed as part of the parameters and never gets its own conversion pass, so it won't be mapped even though it should convert to money.

Fix in Cursor Fix in Web

@Stivenjs Stivenjs merged commit 0ebd739 into main Dec 23, 2025
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant