0.51  2025-10-04
    - Added startswith()/endswith() helpers for prefix and suffix checks on
      scalars and arrays of strings.
    - Documented the new functions and listed them in README and --help-functions output.
    - Added regression tests covering scalars, arrays, mixed values, and chained usage.

0.50  2025-10-04
    - Added trim() helper to remove leading/trailing whitespace from strings
      and array elements recursively.
    - Documented the new function and included it in the --help-functions
      listing and README feature table.
    - Added regression tests covering scalar, array, and mixed inputs.

0.49  2025-10-04
    - Added abs() helper to convert numbers (and arrays of numbers) to their
      absolute values.
    - Documented the new function and listed it in --help-functions output.
    - Added regression tests covering scalar and array usage.

0.48  2025-10-04
    - Updated the --help-functions listing to cover every built-in helper.
    - Bumped version number for the 0.48 release.

0.47  2025-10-04
    - Added upper()/lower() helpers for case conversion of scalars and arrays.
    - Documented the new functions and listed them in --help-functions output.
    - Added regression tests covering scalar, array, and pipeline scenarios.

0.46  2025-10-04
    - Added group_count(key) helper to tally grouped results.
    - Documented the new function and added regression tests.

0.45  2025-10-04
    - Added median() aggregation helper with numeric filtering using looks_like_number().
    - Documented the median function and added dedicated tests covering mixed numeric formats.
    - Updated MANIFEST and module documentation for the new release.

0.44  2025-10-04
    - Prepare release for version 0.44.
    - Added standalone LICENSE file and included it in MANIFEST for kwalitee compliance.

0.42  2025-04-28
    - Added new function: default(value)
      * default() returns the specified value if the current value is undef or null.

0.41  2025-04-28
    - Added new function: is_empty()
      * is_empty() returns true if a value is an empty array or an empty object.

0.40  2025-04-28
    - Added new function: path()
      * path() returns the keys of a hash or the indices of an array.
      * Returns an empty string for scalars or null values.
    - Bump version to 0.40

0.39  2025-04-27
    - Added compact() function to remove undef/null values from arrays

0.38  2025-04-27
    - Added del(key) function to delete specific keys from hash objects

0.37  2025-04-27
    - Added nth(n) function to extract the nth element from an array

0.36  2025-04-27
    - Added type() function to determine JSON value type (string, number, boolean, array, object, null)
    - Improved handling of undefined values in type() function
    - Added test file t/type.t

0.35  2025-04-16
    - Added flatten() function to explicitly flatten arrays (equivalent to .[])
    - flatten() performs 1-layer array flattening like jq
    - Added test file t/flatten.t

0.34  2025-04-15
    - Added --help-functions option to display supported built-in functions
    - Added values() function to extract values from hash references
    - Improved MANIFEST handling with MANIFEST.SKIP for cleaner packaging
    - Minor test adjustments and documentation updates

0.33  2025-04-14
    - Added empty() function (compatible with jq, discards all output)
    - Example: .users[] | select(.age > 25) | empty
    - Useful for pipelines where only side effects are needed

0.32  2025-04-13
    - Added support for sort_by(.key) function to sort arrays of objects
      Example: .users | sort_by(.age)
    - Fixed path handling in sort_by() (leading dot now handled correctly)
    - Improved internal comparison logic with _smart_cmp()
    - Added test script t/sort_by.t to verify sort_by() functionality

0.31  2025-04-13
    - Added support for join(", ") function
    - Allows joining array of strings with a custom separator

0.30  2025-04-12
    - Enhanced META information for CPAN Testers and MetaCPAN
    - Added MIN_PERL_VERSION and no_index to Makefile.PL
    - Included bugtracker and repository links

0.29  2025-04-12
    - Added count function to return the number of items in the result set
    - Example: .users | count  → returns array length
              .users[] | select(...) | count → counts matching items
    - Adjusted count logic to treat both arrays and flat result lists properly
    - Added test: t/count.t

0.28  2025-04-12
    - Added group_by(...) function to group arrays by a field
    - Example: .users | group_by(department)
    - Added test: t/group_by.t

0.27  2025-04-12
    - Added support for pipe-style queries using .[] (e.g. .[] | select(...) | .name)
    - Introduced 'flatten' as internal command for .[] handling
    - Improved run_query parsing to better support chained queries with select()
    - Added test: t/pipe_select_name.t

0.26  2025-04-06
    - Improved interactive mode: input prompt is now always displayed at the bottom of the screen
      to avoid being overwritten by JSON output. This improves readability and usability when working
      with large or deeply nested JSON files.

0.25  2025-04-07
    - Added support for aggregation functions:
        * add   - sum of numeric arrays
        * min   - minimum value of numeric arrays
        * max   - maximum value of numeric arrays
        * avg   - average of numeric arrays
    - Improved CLI argument parsing:
        * Queries no longer require a leading dot (e.g. 'map(...)' now works)
        * File arguments are more accurately distinguished from query strings
        * Interactive mode works even without a query when only a JSON file is provided
    - Confirmed compatibility of map(), select(), and arithmetic expressions across CLI and interactive modes
    - All previous features and test cases remain working and fully compatible

0.24  2025-04-06
    - Added support for numeric expressions inside select(), e.g.:
        select(.id + 5 > 20)
    - Enhanced run_query() to evaluate simple arithmetic operations (+, -, *, /, %) in filters
    - Improved CLI query parsing to allow function-style queries like:
        map(select(.id > 10))
      without requiring a leading dot ('.')
    - Verified compatibility with map(), length, sort, and select chaining
    - Added test cases for arithmetic expressions and map/select combinations

0.23  2025-04-06
    - Added support for `map(...)` query syntax.
      Allows jq-style mapping and filtering of arrays, e.g.:
        map(select(.id > 10))
        map(.name)
    - Improved CLI (jq-lite) to accept function-style queries like map(...)
    - Fixed command-line argument parsing to handle non-dot-prefixed queries
    - Added tests for map(select(...)) to verify behavior

0.22  2025-04-06
    - Added test files:
        t/contains.t
        t/first_last.t
        t/friends.t
        t/has.t
        t/limit.t
        t/match_i.t
        t/match.t
        t/reverse.t
        t/sort_unique.t

0.21  2025-04-06
    - Prefer JSON::MaybeXS as the default decoder if available
    - Added support for user-specified decoder module selection including JSON::MaybeXS
    - Updated internal decoder selection logic with fallback to Cpanel::JSON::XS, JSON::XS, and JSON::PP

0.20  2025-04-06
    - Improved POD documentation: Added full CLI and API usage, supported syntax, and examples.
    - Added support for reverse, sort, first, last, unique, and has functions.
    - Added --use and --debug options to jq-lite CLI.
    - Added interactive mode to CLI when no query is provided.
    - Internal refactoring for modular query processing.

0.19  2025-04-06
    - Added support for faster JSON decoding by conditionally using Cpanel::JSON::XS or JSON::XS.
      Falls back to JSON::PP when XS modules are not available.
    - Added --debug option to show which JSON module is being used.
    - Added --use <ModuleName> option to explicitly select JSON parser (e.g. --use JSON::PP).
    - Improved CLI behavior and internal flexibility.

0.18  2025-04-06
    - Moved CLI script from script/jq-lite to bin/jq-lite for MetaCPAN visibility
    - Updated Makefile.PL to include EXE_FILES => ['bin/jq-lite']

0.17  2025-04-05
    - Added --color option to jq-lite CLI script to enable colorized JSON output.
      Keys are cyan, strings green, numbers yellow, and booleans/null magenta.
    - Updated help and usage examples to reflect the new --color option.
    - Improved CLI usability by simplifying option name (from --color-output to --color).

0.16  2025-04-05
    - Added --version (-v) option to the jq-lite CLI script.
      It displays the installed version of JQ::Lite.

0.14  2025-04-05
    - Fixed: --raw-output (-r) now pretty-prints objects and arrays,
             and outputs scalars as plain text, matching jq behavior.
    - Improved: Output formatting now distinguishes between scalars and structures.
    - Updated: Interactive mode preserves output consistency with command-line usage.

0.13  2025-04-05
    - Added real-time interactive mode: users can now type queries character-by-character
      and see results update immediately without pressing Enter.
    - Retains previous valid results on incomplete or invalid query input.
    - Displays full JSON on startup in interactive mode using '.' as default query.
    - Automatically enters interactive mode when reading JSON from STDIN without a query.
    - No non-core modules required: implemented raw terminal mode using 'stty'.

0.12 2025-04-05
    [Enhancement]
    - Added fallback behavior to show help message when jq-lite is executed with no arguments.
      This prevents the script from hanging waiting on STDIN and improves user experience.

0.11  2025-04-05
    - Added interactive mode to jq-lite command-line tool
      * Launches when no query is given
      * Accepts queries from /dev/tty
      * Clears screen before printing each result
      * Supports --raw-output (-r) in interactive mode
    - Improved argument parsing to allow: jq-lite users.json
    - Enhanced usability and documentation in README.md
0.10  2025-03-30
    - Added match operator for regular expressions (e.g. match "Bob")

0.09  2025-03-30
    - Added support for case-insensitive match (e.g. match "bob"i)
    - Added limit(n) operator to restrict number of results

0.08  2025-03-29
    - Added 'has' operator: select(.meta has "key")
    - Added 'first' and 'last' operators for arrays
    - Added 'reverse' operator to reverse array order
    - JQ-compatible enhancements for improved filtering and data navigation

0.07  2025-03-29
    - Removed use of eval in _evaluate_condition for better performance and stability.
    - Refactored _traverse for readability and maintainability.
    - Added support for multi-level array traversal (e.g., .users[].friends[].name).





