From 8f8ca56ec856477416239e4a083a19accc1ad788 Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Fri, 6 Nov 2026 14:50:57 +0000 Subject: [PATCH 1/2] DOC-7267 Add ioredis to the API Methods tab dropdown The ioredis entries rebuilt in #4496 were never shown: the API Methods tab builds its dropdown from a fixed client order in api-methods-tab.html, and that list named every client with a mappingClientId except ioredis (RedisVL and Ruby are also absent and are left alone here). ioredis now sits after Node.js in both the dropdown order and the localStorage tab-sync order. It also gets genericCall="call", which ioredis defines in RedisCommander.d.ts, so a command listed generic_only in the status file would say how to send it. Coverage is thin: 159 of 527 commands have an ioredis list, 62 are empty and 306 have no ioredis key, against about 470 for redis-py, Jedis and go-redis. Those commands show the default "No method signature available for this client." No ioredis status entries were added, because most of the gap is typed methods that were never mapped (EVAL, HGET), not commands ioredis cannot call. Learned: a client with a mappingClientId in config.toml still does not appear in the tab unless it is in both clientOrder lists in api-methods-tab.html Directive: add a client to the tab in both $clientOrder and $jsClientOrder, and give it a genericCall Gaps: 306 commands have no ioredis entry, so the new option shows the default message for most of the command set Gaps: built with content/develop/clients ignored, checked SET, EVAL and ACL in the output Ticket: DOC-7267 Co-Authored-By: Claude Sonnet 5.5 --- config.toml | 2 +- layouts/partials/components/api-methods-tab.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config.toml b/config.toml index f1a18dab72..211908eeb0 100644 --- a/config.toml +++ b/config.toml @@ -104,7 +104,7 @@ rdi_current_version = "2.2.1" # mappingClientId maps to keys in data/command-api-mapping.json for method signatures "Python"={quickstartSlug="redis-py", langId="python", clientId="redis-py", clientName="redis-py", mappingClientId="redis_py", genericCall="execute_command"} "Node.js"={quickstartSlug="nodejs", langId="javascript", clientId="node-redis", clientName="node-redis", mappingClientId="node_redis", genericCall="sendCommand"} -"ioredis"={quickstartSlug="ioredis", langId="javascript", clientId="ioredis", clientName="ioredis", mappingClientId="ioredis"} +"ioredis"={quickstartSlug="ioredis", langId="javascript", clientId="ioredis", clientName="ioredis", mappingClientId="ioredis", genericCall="call"} "Java-Sync"={quickstartSlug="jedis", langId="java", clientId="jedis", clientName="Jedis", mappingClientId="jedis", genericCall="sendCommand"} "Lettuce-Sync"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_sync", genericCall="dispatch"} "Java-Async"={quickstartSlug="lettuce", langId="java", clientId="lettuce", clientName="Lettuce", mappingClientId="lettuce_async", genericCall="dispatch"} diff --git a/layouts/partials/components/api-methods-tab.html b/layouts/partials/components/api-methods-tab.html index 7fc9222fea..dad3345ad3 100644 --- a/layouts/partials/components/api-methods-tab.html +++ b/layouts/partials/components/api-methods-tab.html @@ -22,10 +22,10 @@ {{/* Define client order explicitly */}} {{/* $clientOrder controls the dropdown UI and signature rendering - one entry per mappingClientId */}} -{{ $clientOrder := slice "Python" "Node.js" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "PHP" "Rust-Sync" "Rust-Async" }} +{{ $clientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "PHP" "Rust-Sync" "Rust-Async" }} {{/* $jsClientOrder also includes SE.Redis variants so the localStorage tab-sync works when a user has a SE.Redis tab selected on a content page and then visits a command reference page */}} -{{ $jsClientOrder := slice "Python" "Node.js" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "C#-Sync (SE.Redis)" "C#-Async (SE.Redis)" "PHP" "Rust-Sync" "Rust-Async" }} +{{ $jsClientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "C#-Sync (SE.Redis)" "C#-Async (SE.Redis)" "PHP" "Rust-Sync" "Rust-Async" }}
{{/* Client selector */}} From 72326333c71a1bb16e83ccc5953bf67155ac6e9e Mon Sep 17 00:00:00 2001 From: Andy Stark Date: Fri, 6 Nov 2026 15:22:23 +0000 Subject: [PATCH 2/2] DOC-7267 Add Ruby to the API Methods tab dropdown Ruby has a mappingClientId (redis_rb) in config.toml and 217 of 527 commands have a redis_rb list, but the tab's fixed client order omitted it, so that data was never shown. Ruby now sits after PHP in both the dropdown order and the localStorage tab-sync order, and gets genericCall="call", which redis-rb v6.0.0 documents as the public way to send any command (Redis::Commands#call, which delegates to send_command). The other 310 commands have no redis_rb key and show the default message. RedisVL stays out of the dropdown on purpose, because it is handled differently from the other clients. Directive: do not add RedisVL to the API Methods tab client order, the docs team decided it is handled differently Gaps: built with content/develop/clients ignored, checked SET, EVAL and ACL in the output Ticket: DOC-7267 Co-Authored-By: Claude Sonnet 5.5 --- config.toml | 2 +- layouts/partials/components/api-methods-tab.html | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/config.toml b/config.toml index 211908eeb0..0850c4850c 100644 --- a/config.toml +++ b/config.toml @@ -117,7 +117,7 @@ rdi_current_version = "2.2.1" "C#-Async (SE.Redis)"={quickstartSlug="dotnet", langId="csharp", clientId="stackexchange-redis", clientName="StackExchange.Redis", mappingClientId="nredisstack_async", genericCall="ExecuteAsync"} "RedisVL"={quickstartSlug="redis-vl", langId="python", clientId="redis-vl", clientName="RedisVL", mappingClientId="redisvl"} "PHP"={quickstartSlug="php", langId="php", clientId="predis", clientName="Predis", mappingClientId="php", genericCall="executeRaw"} -"Ruby"={quickstartSlug="redis-rb", langId="ruby", clientId="redis-rb", clientName="redis-rb", mappingClientId="redis_rb"} +"Ruby"={quickstartSlug="redis-rb", langId="ruby", clientId="redis-rb", clientName="redis-rb", mappingClientId="redis_rb", genericCall="call"} "Rust-Sync"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_sync", genericCall="redis::cmd"} "Rust-Async"={quickstartSlug="rust", langId="rust", clientId="redis-rs", clientName="redis-rs", mappingClientId="redis_rs_async", genericCall="redis::cmd"} "Python (Iris)"={quickstartSlug="", langId="python", clientId="iris-python", clientName="Python (Iris)", mappingClientId=""} diff --git a/layouts/partials/components/api-methods-tab.html b/layouts/partials/components/api-methods-tab.html index dad3345ad3..dca8499f2d 100644 --- a/layouts/partials/components/api-methods-tab.html +++ b/layouts/partials/components/api-methods-tab.html @@ -22,10 +22,10 @@ {{/* Define client order explicitly */}} {{/* $clientOrder controls the dropdown UI and signature rendering - one entry per mappingClientId */}} -{{ $clientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "PHP" "Rust-Sync" "Rust-Async" }} +{{ $clientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "PHP" "Ruby" "Rust-Sync" "Rust-Async" }} {{/* $jsClientOrder also includes SE.Redis variants so the localStorage tab-sync works when a user has a SE.Redis tab selected on a content page and then visits a command reference page */}} -{{ $jsClientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "C#-Sync (SE.Redis)" "C#-Async (SE.Redis)" "PHP" "Rust-Sync" "Rust-Async" }} +{{ $jsClientOrder := slice "Python" "Node.js" "ioredis" "Java-Sync" "Lettuce-Sync" "Java-Async" "Java-Reactive" "Go" "C#-Sync (NRedisStack)" "C#-Async (NRedisStack)" "C#-Sync (SE.Redis)" "C#-Async (SE.Redis)" "PHP" "Ruby" "Rust-Sync" "Rust-Async" }}
{{/* Client selector */}}