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
29 changes: 27 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
# Changelog

## [1.1.0](https://github.com/rtCamp/rt-carousel/compare/v1.0.4...v1.1.0) (2026-04-08)


### Bug Fixes

* add initialized state to CarouselContext to track carousel initialization ([#92](https://github.com/rtCamp/rt-carousel/issues/92)) ([71de050](https://github.com/rtCamp/rt-carousel/commit/71de050aae8ff55f82b61a02440f8ccd42b63d76))
* exclude composer.json and composer.lock from distribution package ([#99](https://github.com/rtCamp/rt-carousel/issues/99)) ([a1308c6](https://github.com/rtCamp/rt-carousel/commit/a1308c6581faa68e7b68a4c2e29c78110a1670f9))
* restore vertical scroll for Query Loop carousel ([#104](https://github.com/rtCamp/rt-carousel/issues/104)) ([1d16ee6](https://github.com/rtCamp/rt-carousel/commit/1d16ee6f6ac068524998f33c20fdab39638ead3f))
* **controls:** block toolbar persists when selected block moves out of view in carousel ([#106](https://github.com/rtCamp/rt-carousel/issues/106)) ([dec79c8](https://github.com/rtCamp/rt-carousel/commit/dec79c8))


### Features

* add support for the carousel progress bar ([#88](https://github.com/rtCamp/rt-carousel/issues/88)) ([edc8699](https://github.com/rtCamp/rt-carousel/commit/edc8699))
* support vertical alignment on carousel slide ([#87](https://github.com/rtCamp/rt-carousel/issues/87)) ([f73890e](https://github.com/rtCamp/rt-carousel/commit/f73890e))
* add wp-env configuration for WP development setup ([#109](https://github.com/rtCamp/rt-carousel/issues/109)) ([dcccaf7](https://github.com/rtCamp/rt-carousel/commit/dcccaf79747cf84811a7907e68df01d2aaeb7030))


### Refactors

* rename plugin from "Carousel Kit" to "rtCarousel" with automatic block content migration ([#101](https://github.com/rtCamp/rt-carousel/pull/101)) ([9788ed7](https://github.com/rtCamp/rt-carousel/commit/9788ed7))


## [1.0.4](https://github.com/rtCamp/carousel-kit/compare/v1.0.3...v1.0.4) (2026-03-09)

Comment thread
theMasudRana marked this conversation as resolved.
### Bug Fixes
Expand Down Expand Up @@ -60,14 +85,14 @@
* slide appender and setup ([a42331d](https://github.com/rtCamp/carousel-kit/commit/a42331d10b225379408ddf8c0649e83484496a1e))


# [1.0.1](https://github.com/rtCamp/carousel-kit/compare/v1.0.0...v1.0.1) (2026-02-16)
## [1.0.1](https://github.com/rtCamp/carousel-kit/compare/v1.0.0...v1.0.1) (2026-02-16)

### Bug Fixes

* **carousel:** resolve spacing issues in loop mode where gaps were missing between last and first slide
* **carousel:** allow infinite loop in editor viewport to match frontend behavior

# 1.0.0 (2026-02-03)
## 1.0.0 (2026-02-03)


### Bug Fixes
Expand Down
22 changes: 11 additions & 11 deletions examples/data/rt-carousel.xml

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/patterns/hero-carousel.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
?>

<!-- wp:rt-carousel/carousel {"loop":true,"autoplay":true,"autoplayDelay":5000,"ariaLabel":"Hero Carousel","metadata":{"categories":["rt-carousel"],"patternName":"rt-carousel/hero-carousel","name":"rtCarousel: Hero Carousel"},"align":"wide","className":"wp-block-carousel-carousel"} -->
<div class="wp-block-rt-carousel-carousel alignwide rt-carousel wp-block-carousel-carousel" role="region" aria-roledescription="carousel" aria-label="Hero Carousel" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:{&quot;delay&quot;:5000,&quot;stopOnInteraction&quot;:true,&quot;stopOnMouseEnter&quot;:false},&quot;isPlaying&quot;:true,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:0px"><!-- wp:rt-carousel/carousel-viewport {"className":"wp-block-carousel-carousel-viewport"} -->
<div class="wp-block-rt-carousel-carousel alignwide rt-carousel wp-block-carousel-carousel" role="region" aria-roledescription="carousel" aria-label="Hero Carousel" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:{&quot;delay&quot;:5000,&quot;stopOnInteraction&quot;:true,&quot;stopOnMouseEnter&quot;:false},&quot;isPlaying&quot;:true,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;scrollProgress&quot;:0,&quot;slideCount&quot;:0,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:0px"><!-- wp:rt-carousel/carousel-viewport {"className":"wp-block-carousel-carousel-viewport"} -->
<div class="wp-block-rt-carousel-carousel-viewport embla wp-block-carousel-carousel-viewport">
<div class="embla__container"><!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:cover {"url":"<?php echo esc_url( $hero_slide_one ); ?>","dimRatio":30,"minHeight":600,"minHeightUnit":"px"} -->
Expand Down
2 changes: 1 addition & 1 deletion examples/patterns/logo-showcase.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
?>

<!-- wp:rt-carousel/carousel {"loop":true,"autoplayDelay":3000,"autoplayStopOnInteraction":false,"ariaLabel":"Partner Logos","metadata":{"categories":["rt-carousel"],"patternName":"rt-carousel/logo-showcase","name":"rtCarousel: Logo Showcase"},"className":"wp-block-carousel-carousel is-style-columns-3"} -->
<div class="wp-block-rt-carousel-carousel rt-carousel wp-block-carousel-carousel is-style-columns-3" role="region" aria-roledescription="carousel" aria-label="Partner Logos" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:false,&quot;isPlaying&quot;:false,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:0px"><!-- wp:heading {"textAlign":"center","style":{"spacing":{"margin":{"bottom":"69px"}}}} -->
<div class="wp-block-rt-carousel-carousel rt-carousel wp-block-carousel-carousel is-style-columns-3" role="region" aria-roledescription="carousel" aria-label="Partner Logos" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:false,&quot;isPlaying&quot;:false,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;scrollProgress&quot;:0,&quot;slideCount&quot;:0,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:0px"><!-- wp:heading {"textAlign":"center","style":{"spacing":{"margin":{"bottom":"69px"}}}} -->
<h2 class="wp-block-heading has-text-align-center" style="margin-bottom:69px">Trusted By Leading Companies</h2>
<!-- /wp:heading -->

Expand Down
2 changes: 1 addition & 1 deletion examples/patterns/query-loop.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
?>

<!-- wp:rt-carousel/carousel {"ariaLabel":"rtCarousel: Query Loop Carousel","slideGap":16,"metadata":{"name":"rtCarousel: Query Loop Carousel","categories":["rt-carousel"],"patternName":"rt-carousel/query-loop-carousel"},"align":"wide","className":"wp-block-carousel-carousel is-style-default"} -->
<div class="wp-block-rt-carousel-carousel alignwide rt-carousel wp-block-carousel-carousel is-style-default" role="region" aria-roledescription="carousel" aria-label="rtCarousel: Query Loop Carousel" dir="ltr" data-axis="x" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:false,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:false,&quot;isPlaying&quot;:false,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:16px"><!-- wp:rt-carousel/carousel-viewport {"className":"wp-block-carousel-carousel-viewport"} -->
<div class="wp-block-rt-carousel-carousel alignwide rt-carousel wp-block-carousel-carousel is-style-default" role="region" aria-roledescription="carousel" aria-label="rtCarousel: Query Loop Carousel" dir="ltr" data-axis="x" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:false,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;start&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:false,&quot;isPlaying&quot;:false,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;scrollProgress&quot;:0,&quot;slideCount&quot;:0,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:16px"><!-- wp:rt-carousel/carousel-viewport {"className":"wp-block-carousel-carousel-viewport"} -->
<div class="wp-block-rt-carousel-carousel-viewport embla wp-block-carousel-carousel-viewport">
<div class="embla__container"><!-- wp:rt-carousel/carousel-slide {"className":"wp-block-carousel-carousel-slide"} -->
<div class="wp-block-rt-carousel-carousel-slide embla__slide wp-block-carousel-carousel-slide" role="group" aria-roledescription="slide" data-wp-interactive="rt-carousel/carousel" data-wp-class--is-active="callbacks.isSlideActive" data-wp-bind--aria-current="callbacks.isSlideActive"><!-- wp:query {"queryId":18,"query":{"perPage":10,"pages":0,"offset":0,"postType":"post","order":"desc","orderBy":"date","author":"","search":"","exclude":[],"sticky":"exclude","inherit":false},"metadata":{"categories":["posts"],"patternName":"core/query-grid-posts","name":"Grid"}} -->
Expand Down
2 changes: 1 addition & 1 deletion examples/patterns/testimonial-carousel.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
?>

<!-- wp:rt-carousel/carousel {"loop":true,"carouselAlign":"center","autoplay":true,"ariaLabel":"Customer Testimonials","slideGap":32,"metadata":{"categories":["rt-carousel"],"patternName":"rt-carousel/testimonial-carousel","name":"rtCarousel: Testimonial Carousel"},"className":"wp-block-carousel-carousel"} -->
<div class="wp-block-rt-carousel-carousel rt-carousel wp-block-carousel-carousel" role="region" aria-roledescription="carousel" aria-label="Customer Testimonials" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:{&quot;delay&quot;:4000,&quot;stopOnInteraction&quot;:true,&quot;stopOnMouseEnter&quot;:false},&quot;isPlaying&quot;:true,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:32px"><!-- wp:heading {"textAlign":"center","className":"is-style-default","fontSize":"x-large"} -->
<div class="wp-block-rt-carousel-carousel rt-carousel wp-block-carousel-carousel" role="region" aria-roledescription="carousel" aria-label="Customer Testimonials" dir="ltr" data-axis="x" data-loop="true" data-wp-interactive="rt-carousel/carousel" data-wp-context="{&quot;options&quot;:{&quot;loop&quot;:true,&quot;dragFree&quot;:false,&quot;align&quot;:&quot;center&quot;,&quot;containScroll&quot;:&quot;trimSnaps&quot;,&quot;direction&quot;:&quot;ltr&quot;,&quot;axis&quot;:&quot;x&quot;,&quot;slidesToScroll&quot;:1},&quot;autoplay&quot;:{&quot;delay&quot;:4000,&quot;stopOnInteraction&quot;:true,&quot;stopOnMouseEnter&quot;:false},&quot;isPlaying&quot;:true,&quot;timerIterationId&quot;:0,&quot;selectedIndex&quot;:-1,&quot;scrollSnaps&quot;:[],&quot;canScrollPrev&quot;:false,&quot;canScrollNext&quot;:false,&quot;scrollProgress&quot;:0,&quot;slideCount&quot;:0,&quot;ariaLabelPattern&quot;:&quot;Go to slide %d&quot;}" data-wp-init="callbacks.initCarousel" style="--rt-carousel-gap:32px"><!-- wp:heading {"textAlign":"center","className":"is-style-default","fontSize":"x-large"} -->
<h2 class="wp-block-heading has-text-align-center is-style-default has-x-large-font-size">What Our Customers Say</h2>
<!-- /wp:heading -->

Expand Down
1 change: 1 addition & 0 deletions inc/Migration.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ private static function migrate_post_content(): bool {
// LIKE matched but REPLACE changed nothing — likely a collation mismatch.
// Break rather than return false to avoid infinite retries across requests.
if ( 0 === $result ) {
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log -- Important debug info for a migration failure that would otherwise cause infinite retries.
error_log( 'rt_carousel migration: LIKE matched posts but REPLACE changed nothing — possible collation mismatch.' );
break;
}
Expand Down
22 changes: 16 additions & 6 deletions languages/rt-carousel.pot
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,22 @@
# This file is distributed under the GPL-2.0-or-later.
msgid ""
msgstr ""
"Project-Id-Version: rtCarousel 1.0.4\n"
"Project-Id-Version: rtCarousel 1.1.0\n"
"Report-Msgid-Bugs-To: https://github.com/rtCamp/rt-carousel/issues\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2026-04-02T06:47:23+00:00\n"
"POT-Creation-Date: 2026-04-08T10:11:10+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: rt-carousel\n"

#. Plugin Name of the plugin
#: rt-carousel.php
#: inc/Plugin.php:81
#: inc/Plugin.php:120
#: inc/Plugin.php:97
#: inc/Plugin.php:137
msgid "rtCarousel"
msgstr ""

Expand Down Expand Up @@ -45,11 +45,11 @@ msgstr ""
msgid "rtCarousel: The Composer autoloader was not found. If you installed the plugin from the GitHub source code, make sure to run `composer install`."
msgstr ""

#: inc/Plugin.php:62
#: inc/Plugin.php:78
msgid "The old \"Carousel Kit\" plugin has been deactivated. rtCarousel is its replacement."
msgstr ""

#: inc/Plugin.php:121
#: inc/Plugin.php:138
msgid "Pre-configured carousel patterns for various use cases."
msgstr ""

Expand Down Expand Up @@ -328,3 +328,13 @@ msgstr ""
msgctxt "block description"
msgid "Viewport container for carousel slides."
msgstr ""

#: src/blocks/carousel/progress/block.json
msgctxt "block title"
msgid "Carousel Progress"
msgstr ""

#: src/blocks/carousel/progress/block.json
msgctxt "block description"
msgid "Progress bar for the carousel."
msgstr ""
Loading
Loading