Skip to content

docs: add java sdk documentation#381

Merged
pratyush618 merged 21 commits into
masterfrom
docs/java-sdk
Jul 7, 2026
Merged

docs: add java sdk documentation#381
pratyush618 merged 21 commits into
masterfrom
docs/java-sdk

Conversation

@pratyush618

@pratyush618 pratyush618 commented Jul 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Adds the full Java SDK section to the docs site — 93 pages mirroring the existing per-SDK structure, every API detail derived from the Java source (never invented; honest adaptations where the surface differs, e.g. no circuit breakers, no per-task rate limit, static workflow analysis).

  • Getting started + core guides: installation (Maven Central org.byteveda:taskito, Java 17, annotation processor, bundled native library), quickstart, concepts, capabilities; tasks/workers/queues/enqueue-options/scheduling/execution-model/cancellation/streaming/predicates.
  • Reliability + resources: retries (default maxRetries 0), timeouts (no thread interrupt), error hierarchy, DLQ, idempotency, guarantees, concurrency, rate limiting (gate-based), locks (no auto-extend); resources with all five scopes incl. pooled, interception, signed proxies + sessions.
  • Workflows: builder, fan-out (10k cap), sub-workflows, conditions (incl. callable predicates), gates, sagas (wave-parallel rollback), caching, static analysis + Mermaid/DOT visualization, canvas.
  • Operations + extensibility: backends, picocli CLI, dashboard (bundled SPA + token auth), testing (taskito-test in-memory backend), inspection, mesh, autoscaling (in-process pool + Scaler/KEDA endpoint), GraalVM native-image, security, deployment (native loader, FFM fast path), troubleshooting; middleware/serializers/events/webhooks; Spring Boot 3 starter, Micrometer, Sentry.
  • API reference + examples: 17 reference pages with exact signatures; 10 examples incl. a Spring service.

Structural parity pass

Closed the remaining page-inventory gaps against the shared per-SDK structure. Ten new pages, each verified against the Java source before writing — features the Java surface does not expose (structured notes, dependsOn-on-enqueue, dashboard SSO / task-overrides, idempotent auto-derive) were deliberately not documented rather than invented.

  • API reference (5): overview (the five-layer model — TaskitoDefaultTaskitoCoreFacadeQueueBackendJniQueueBackend, plus the Queue per-named-queue handle vs. the Taskito client); canvas (link/chain/group/chord); saga (Step.compensate, WorkflowState/NodeStatus compensation states); batching (Batcher<T> + enqueueMany/enqueueAll, disambiguated from Worker.Builder.batchSize); testing (InMemoryTaskito / InMemoryQueueBackend, workflows unsupported, periodic registered-but-inert).
  • Guides (5): core/batching (producer Batcher vs. dequeue batchSize); resources/configuration (programmatic scope + PoolConfig tuning); resources/observability (resourceMetrics() / ResourceStat); resources/testing (same-API stub registration + register-once constraint); workflows/building (full Step.Builder knob table + NodeStatus lifecycle diagram).

Nav wired via the four affected meta.json files. Queue reference kept as a single page (the flat layout already carries the full surface); a directory split was deferred as it would duplicate the worker/webhooks guides.

Site wiring

  • sdk-registry.ts: java registered (label Java, binding JNI) — switcher/nav/boot derive from it.
  • Shared pages gain java variants at every SdkSwap/SdkOnly site (serialization, worker-pool, resources architecture, FAQ, comparison, arch/worker diagrams); scenario-finder maps guides to the active SDK generically.
  • Docs CI build gets NODE_OPTIONS=--max-old-space-size=8192 — three SDK trees prerender in one pass and the default heap OOMs.

Test plan

  • pnpm typecheck, pnpm lint
  • Full pnpm build — java routes prerendered under build/client/java/** (all 10 new pages included)

Summary by CodeRabbit

  • New Features
    • Added full Java SDK documentation across getting started, guides, and API reference, including new resource/serialization/execution details and updated architecture diagrams.
    • Enabled Java-aware docs routing/guide resolution and expanded SDK support in the docs registry.
    • Added Java syntax highlighting and a Java hero content pane.
  • Bug Fixes
    • Increased docs build memory allocation to reduce out-of-memory build failures.
  • UI Changes
    • Removed the global SDK switcher from the docs sidebar and replaced it with an SDK language dropdown in the top navigation.

@coderabbitai

coderabbitai Bot commented Jul 6, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Adds Java as a supported SDK across docs navigation, architecture pages, guides, API reference, and runnable examples. Also updates cross-SDK comparison/FAQ content and increases the docs build Node heap limit.

Changes

Docs Build Configuration

Layer / File(s) Summary
Docs build memory setting
.github/workflows/docs.yml
Adds NODE_OPTIONS: --max-old-space-size=8192 to the docs build step.

Java Docs Platform and Navigation

Layer / File(s) Summary
SDK registry and routing
docs/app/lib/sdk-registry.ts, docs/app/components/landing/scenario-finder.tsx
Registers java in the SDK registry and extends scenario guide URL resolution for multiple SDKs.
Diagrams and landing content
docs/app/components/diagrams/*, docs/app/components/landing/hero.tsx, docs/app/lib/highlight-lite.ts, docs/app/lib/landing-content.ts
Adds Java variants to diagrams, landing hero content, and syntax highlighting.
Top navigation and sidebar
docs/app/components/docs/sidebar.tsx, docs/app/components/ui/site-nav.tsx, docs/app/styles/docs.css
Replaces the sidebar SDK switcher with a top navigation SDK dropdown and updates related styles.
Cross-SDK comparison and FAQ
docs/content/docs/resources/{comparison,faq}.mdx
Adds Java wording and examples to existing comparison and FAQ content.

Java Documentation Content

Layer / File(s) Summary
Cross-SDK architecture
ARCHITECTURE.md, docs/content/docs/architecture/{resources,serialization,worker-pool}.mdx
Updates architecture docs for Java resources, serializers, worker execution, and binding boundaries.
Docs metadata and getting started
docs/content/docs/java/meta.json, docs/content/docs/java/guides/*/meta.json, docs/content/docs/java/getting-started/*, docs/content/docs/java/guides/index.mdx
Creates the Java docs tree metadata and adds getting-started pages and guide indexes.
Java API reference
docs/content/docs/java/api-reference/*
Adds Java API reference pages for CLI, context, errors, queue, resources, result, serializers, task, worker, and workflows.
Core guides
docs/content/docs/java/guides/core/*
Adds Java guides for tasks, queues, workers, execution model, enqueue options, predicates, scheduling, cancellation, and streaming.
Reliability guides
docs/content/docs/java/guides/reliability/*
Adds Java guides for concurrency, dead-letter queues, error handling, guarantees, idempotency, locks, rate limiting, retries, and timeouts.
Extensibility and resources guides
docs/content/docs/java/guides/{extensibility,resources}/*
Adds Java guides for events, middleware, serializers, webhooks, dependency injection, interception, and proxies.
Workflows guides
docs/content/docs/java/guides/workflows/*
Adds Java guides for analysis, caching, canvas, conditions, fan-out/fan-in, gates, saga compensation, and sub-workflows.
Operations guides
docs/content/docs/java/guides/operations/*
Adds Java guides for backends, CLI, dashboard, deployment, GraalVM, inspection, mesh, security, testing, and troubleshooting.
Observability and integrations
docs/content/docs/java/guides/{observability,integrations}/*
Adds observability pages and integration pages for Spring Boot, Micrometer, and Sentry.
Runnable examples
docs/content/docs/java/more/examples/*
Adds Java examples for benchmarking, bulk emails, ETL, notifications, predicate gating, saga checkout, Spring service, web scraping, and workflow recipes.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related PRs

  • ByteVeda/taskito#279: Shares the same scenario-finder URL rewriting area and SDK-aware guide resolution.
  • ByteVeda/taskito#324: Overlaps with the SDK registry, navigation, and diagram rendering updates used to add Java support.
  • ByteVeda/taskito#296: Aligns with the Java architecture and binding-boundary documentation updates.

Suggested labels: docs

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding the Java SDK documentation section to the docs site.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/java-sdk

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 19

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/content/docs/java/api-reference/context.mdx`:
- Around line 6-25: The handler docs currently say it receives “exactly one
argument,” which conflicts with `@TaskHandler` methods that also accept injected
`@Resource(...)` parameters. Reword the opening of the `Resources.use` section
to distinguish the required payload argument from optional injected resources,
and keep the later note about `@Resource("smtp")`/the generated companion
aligned with that description. Update the wording near the handler example so
readers understand the payload is always the first argument while resources are
resolved separately by `Resources.use` or parameter injection.

In `@docs/content/docs/java/api-reference/resources.mdx`:
- Around line 31-34: The ResourceContext description in the Java resources docs
needs to mention the pooled-resource exception, because pooled factories are not
governed by the same-or-longer-lived rule. Update the wording around
ResourceContext, scope(), and use(name) to either narrow the general rule or add
a pooled-specific note stating that pooled factories may only depend on WORKER
resources, while non-pooled factories keep the existing lifetime restriction.

In `@docs/content/docs/java/getting-started/capabilities.mdx`:
- Line 57: The KEDA table link in the capabilities docs points to a page that
does not exist in the Java docs tree, so update the link target in the
capabilities entry to an existing autoscaling guide or add the missing KEDA page
first. Locate the markdown row in the capabilities document and fix the href
used for the KEDA label so it resolves correctly.

In `@docs/content/docs/java/getting-started/concepts.mdx`:
- Around line 12-17: Make the job lifecycle terminology consistent between the
diagram and the surrounding prose in the concepts document. Update the text
around the lifecycle description to match the state sequence shown in the
diagram, or adjust the diagram labels in the affected flow so both references
use the same states; use the lifecycle content near the diagram and the
enqueue/getResult examples as the anchors when editing.

In `@docs/content/docs/java/getting-started/installation.mdx`:
- Around line 68-70: The `taskito.native.workdir` example is shown as an empty
value, which makes the documented flag look incomplete; update the installation
docs text so the `taskito.native.workdir` example uses a concrete placeholder
path or is explicitly marked as truncated. Keep the surrounding explanation tied
to the `-Dtaskito.native.lib` and `-Dtaskito.native.workdir` options so readers
can copy the example as-is.

In `@docs/content/docs/java/guides/core/execution-model.mdx`:
- Around line 51-54: The KEDA reference in the execution model text points to a
non-existent destination, so update the link used in the surrounding prose about
queue-depth scaling and KEDA to the existing autoscaling guide. Keep the change
localized to the markdown content in this section and ensure the updated link
target matches the autoscaling page that already covers KEDA, preserving the
rest of the sentence and related references like mesh(options).

In `@docs/content/docs/java/guides/core/predicates.mdx`:
- Around line 57-58: The predicates table entry conflates defer(delay) and
deferUntil(instant), and the wording “scheduled after delay” only applies to
defer(delay). Split the combined row in the predicates guide table and update
the deferUntil(instant) description in the relevant table cell to reflect
absolute-time scheduling, keeping the surrounding Job id presence/exception
behavior unchanged.

In `@docs/content/docs/java/guides/operations/dashboard.mdx`:
- Around line 57-60: Add a warning in the dashboard auth docs near the token
bootstrap explanation that `/?token=<token>` can leak via browser history,
referrers, and proxy/access logs; note that this flow should be used only over
HTTPS with log redaction, or recommend replacing it with a non-URL bootstrap if
available. Keep the update centered on the existing `taskito_token`/shared-token
description so readers see the risk immediately.

In `@docs/content/docs/java/guides/operations/testing.mdx`:
- Around line 46-52: The latch example in the task setup uses an undefined
identifier in the Taskito worker chain, so update the
`taskito.worker().handle(...)` snippet to reference the actual task name as a
quoted string or the correct defined symbol instead of `echo`. Keep the rest of
the `Worker` and `CountDownLatch done` example unchanged so the `handle` call
compiles as shown.

In `@docs/content/docs/java/guides/reliability/guarantees.mdx`:
- Around line 6-9: The reliability guarantee wording in the guarantees doc is
too strong and should be narrowed to match at-least-once delivery semantics.
Update the text in the guarantees section to say that every enqueued job is
attempted at least once, and adjust the surrounding explanation in the
guarantees content to reflect that retries may be exhausted or jobs may
dead-letter without completing. Keep the guidance in the same place and align
the wording with the existing Taskito guarantee description.

In `@docs/content/docs/java/guides/reliability/retries.mdx`:
- Around line 34-39: The retry logging example in the Java guide uses an invalid
logger call in the worker setup chain. Update the EventName.RETRY handler inside
the worker() example to use Java string concatenation for the retry message,
matching the rest of the guide’s logging style, so the snippet compiles cleanly
and stays consistent with the other Java examples.

In `@docs/content/docs/java/guides/resources/proxies.mdx`:
- Around line 16-17: The proxy key lookup in the Proxies example should be
guarded because System.getenv("TASKITO_PROXY_KEY") may return null before the
SDK can report a clear configuration problem. Update the sample around the
Proxies initialization to explicitly handle the missing-key case before creating
the byte[] key, and keep the logic centered on the TASKITO_PROXY_KEY lookup so
readers can see how to fail fast with a clear configuration error instead of a
null dereference.

In `@docs/content/docs/java/guides/workflows/gates.mdx`:
- Around line 64-70: The gate example uses an undefined runId in the
approve/reject snippets, making the sample inconsistent with the earlier
run.runId() usage. Update the example around worker.approveGate and
worker.rejectGate to reference the same run identifier from the preceding run
variable (or otherwise define the variable before use) so the sample is
self-contained and consistent.

In `@docs/content/docs/java/guides/workflows/saga.mdx`:
- Around line 20-25: The saga examples use orderId in
Workflow.named(...).step(...) and Step.of(...) without defining where it comes
from, so make both snippets self-contained by adding the workflow input
declaration or showing how orderId is supplied before the WorkflowRun
submission. Update the Java guide examples around the checkout workflow so the
reserve, charge, and ship steps clearly reference a declared orderId value.

In `@docs/content/docs/java/more/examples/benchmark.mdx`:
- Around line 28-65: The benchmark example in the Taskito builder setup is using
a fixed sqlite filename, which lets old jobs leak into later runs. Update the
benchmark snippet to create a per-invocation database path under the temp
directory before calling Taskito.builder().sqlite(...).open(), and use that
unique path for the whole run. Keep the rest of the benchmark flow the same, but
ensure the database is isolated so stats().completed and the latency sample only
reflect the current execution.

In `@docs/content/docs/java/more/examples/notifications.mdx`:
- Around line 121-124: The worker example is incomplete because the lambda
handlers in Worker/taskito.worker reference emailProvider, smsProvider, and
buildAndFanOutDigests() without any definitions in the page. Add the missing
helper or bean definitions near the notifications example, or update the .handle
calls to invoke concrete methods that are already defined in this doc so the
sample is runnable as written.

In `@docs/content/docs/java/more/examples/predicate-gated-jobs.mdx`:
- Around line 26-34: The sample in Policies and App uses unresolved dependencies
(`usage`, `flags`, and `isBusinessHours()`), so readers cannot copy it into a
project as written. Add the missing scaffolding or initialization for those
dependencies in the sample, or clearly mark the affected blocks as pseudocode,
and make sure the `Policies` and `App` examples are self-contained enough to
compile or intentionally non-compilable.

In `@docs/content/docs/resources/comparison.mdx`:
- Line 6: Update the Java variant in the comparison TL;DR so it uses a
consistent, non-contradictory description; the `SdkSwap` in the comparison.mdx
content currently maps `java` to “a brokered task queue,” which conflicts with
“without the broker.” Adjust the `SdkSwap` usage to match the surrounding Python
and Node phrasing by changing the Java value to a simple “a task queue,” keeping
the sentence coherent.

In `@docs/content/docs/resources/faq.mdx`:
- Around line 184-198: The Java FAQ example in the `SdkOnly` block uses `urls`
after it has only been introduced as the `.handle(fetchUrls, urls -> ...)`
lambda parameter, so the later `queue.enqueue(fetchUrls, urls)` is referencing
an out-of-scope variable. Update this snippet by declaring the input payload
before the `try` block (or otherwise binding it in scope) and then pass that
variable into both `queue.enqueue(...)` and any related calls; while you are
there, consider replacing the raw `queue.getResult(id, List.class)` usage with a
typed reference consistent with `Task<List<String>> fetchUrls`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7b9b06d4-4e7b-48d4-8960-b8142d62ac05

📥 Commits

Reviewing files that changed from the base of the PR and between d6791b4 and 6c5e4da.

📒 Files selected for processing (107)
  • .github/workflows/docs.yml
  • docs/app/components/diagrams/arch-stack.tsx
  • docs/app/components/diagrams/worker-fork.tsx
  • docs/app/components/landing/scenario-finder.tsx
  • docs/app/lib/sdk-registry.ts
  • docs/content/docs/architecture/resources.mdx
  • docs/content/docs/architecture/serialization.mdx
  • docs/content/docs/architecture/worker-pool.mdx
  • docs/content/docs/java/api-reference/cli.mdx
  • docs/content/docs/java/api-reference/context.mdx
  • docs/content/docs/java/api-reference/errors.mdx
  • docs/content/docs/java/api-reference/index.mdx
  • docs/content/docs/java/api-reference/meta.json
  • docs/content/docs/java/api-reference/queue.mdx
  • docs/content/docs/java/api-reference/resources.mdx
  • docs/content/docs/java/api-reference/result.mdx
  • docs/content/docs/java/api-reference/serializers.mdx
  • docs/content/docs/java/api-reference/task.mdx
  • docs/content/docs/java/api-reference/worker.mdx
  • docs/content/docs/java/api-reference/workflows.mdx
  • docs/content/docs/java/getting-started/capabilities.mdx
  • docs/content/docs/java/getting-started/concepts.mdx
  • docs/content/docs/java/getting-started/installation.mdx
  • docs/content/docs/java/getting-started/meta.json
  • docs/content/docs/java/getting-started/quickstart.mdx
  • docs/content/docs/java/guides/core/cancellation.mdx
  • docs/content/docs/java/guides/core/enqueue-options.mdx
  • docs/content/docs/java/guides/core/execution-model.mdx
  • docs/content/docs/java/guides/core/index.mdx
  • docs/content/docs/java/guides/core/meta.json
  • docs/content/docs/java/guides/core/predicates.mdx
  • docs/content/docs/java/guides/core/queues.mdx
  • docs/content/docs/java/guides/core/scheduling.mdx
  • docs/content/docs/java/guides/core/streaming.mdx
  • docs/content/docs/java/guides/core/tasks.mdx
  • docs/content/docs/java/guides/core/workers.mdx
  • docs/content/docs/java/guides/extensibility/events.mdx
  • docs/content/docs/java/guides/extensibility/index.mdx
  • docs/content/docs/java/guides/extensibility/meta.json
  • docs/content/docs/java/guides/extensibility/middleware.mdx
  • docs/content/docs/java/guides/extensibility/serializers.mdx
  • docs/content/docs/java/guides/extensibility/webhooks.mdx
  • docs/content/docs/java/guides/index.mdx
  • docs/content/docs/java/guides/integrations/index.mdx
  • docs/content/docs/java/guides/integrations/meta.json
  • docs/content/docs/java/guides/integrations/micrometer.mdx
  • docs/content/docs/java/guides/integrations/sentry.mdx
  • docs/content/docs/java/guides/integrations/spring.mdx
  • docs/content/docs/java/guides/meta.json
  • docs/content/docs/java/guides/observability/index.mdx
  • docs/content/docs/java/guides/observability/logging.mdx
  • docs/content/docs/java/guides/observability/meta.json
  • docs/content/docs/java/guides/observability/monitoring.mdx
  • docs/content/docs/java/guides/operations/autoscaling.mdx
  • docs/content/docs/java/guides/operations/backends.mdx
  • docs/content/docs/java/guides/operations/cli.mdx
  • docs/content/docs/java/guides/operations/dashboard.mdx
  • docs/content/docs/java/guides/operations/deployment.mdx
  • docs/content/docs/java/guides/operations/graalvm.mdx
  • docs/content/docs/java/guides/operations/index.mdx
  • docs/content/docs/java/guides/operations/inspection.mdx
  • docs/content/docs/java/guides/operations/mesh.mdx
  • docs/content/docs/java/guides/operations/meta.json
  • docs/content/docs/java/guides/operations/security.mdx
  • docs/content/docs/java/guides/operations/testing.mdx
  • docs/content/docs/java/guides/operations/troubleshooting.mdx
  • docs/content/docs/java/guides/reliability/concurrency.mdx
  • docs/content/docs/java/guides/reliability/dead-letter.mdx
  • docs/content/docs/java/guides/reliability/error-handling.mdx
  • docs/content/docs/java/guides/reliability/guarantees.mdx
  • docs/content/docs/java/guides/reliability/idempotency.mdx
  • docs/content/docs/java/guides/reliability/index.mdx
  • docs/content/docs/java/guides/reliability/locks.mdx
  • docs/content/docs/java/guides/reliability/meta.json
  • docs/content/docs/java/guides/reliability/rate-limiting.mdx
  • docs/content/docs/java/guides/reliability/retries.mdx
  • docs/content/docs/java/guides/reliability/timeouts.mdx
  • docs/content/docs/java/guides/resources/dependency-injection.mdx
  • docs/content/docs/java/guides/resources/index.mdx
  • docs/content/docs/java/guides/resources/interception.mdx
  • docs/content/docs/java/guides/resources/meta.json
  • docs/content/docs/java/guides/resources/proxies.mdx
  • docs/content/docs/java/guides/workflows/analysis.mdx
  • docs/content/docs/java/guides/workflows/caching.mdx
  • docs/content/docs/java/guides/workflows/canvas.mdx
  • docs/content/docs/java/guides/workflows/conditions.mdx
  • docs/content/docs/java/guides/workflows/fan-out.mdx
  • docs/content/docs/java/guides/workflows/gates.mdx
  • docs/content/docs/java/guides/workflows/index.mdx
  • docs/content/docs/java/guides/workflows/meta.json
  • docs/content/docs/java/guides/workflows/saga.mdx
  • docs/content/docs/java/guides/workflows/sub-workflows.mdx
  • docs/content/docs/java/meta.json
  • docs/content/docs/java/more/examples/benchmark.mdx
  • docs/content/docs/java/more/examples/bulk-emails.mdx
  • docs/content/docs/java/more/examples/data-pipeline.mdx
  • docs/content/docs/java/more/examples/index.mdx
  • docs/content/docs/java/more/examples/meta.json
  • docs/content/docs/java/more/examples/notifications.mdx
  • docs/content/docs/java/more/examples/predicate-gated-jobs.mdx
  • docs/content/docs/java/more/examples/saga-checkout.mdx
  • docs/content/docs/java/more/examples/spring-service.mdx
  • docs/content/docs/java/more/examples/web-scraper.mdx
  • docs/content/docs/java/more/examples/workflows.mdx
  • docs/content/docs/java/more/meta.json
  • docs/content/docs/resources/comparison.mdx
  • docs/content/docs/resources/faq.mdx

Comment thread docs/content/docs/java/api-reference/context.mdx Outdated
Comment thread docs/content/docs/java/api-reference/resources.mdx
Comment thread docs/content/docs/java/getting-started/capabilities.mdx Outdated
Comment thread docs/content/docs/java/getting-started/concepts.mdx
Comment thread docs/content/docs/java/getting-started/installation.mdx Outdated
Comment thread docs/content/docs/java/more/examples/benchmark.mdx Outdated
Comment thread docs/content/docs/java/more/examples/notifications.mdx Outdated
Comment thread docs/content/docs/java/more/examples/predicate-gated-jobs.mdx
Comment thread docs/content/docs/resources/comparison.mdx Outdated
Comment thread docs/content/docs/resources/faq.mdx

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
docs/app/components/ui/site-nav.tsx (1)

70-151: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Listbox lacks arrow-key roving focus; add keyboard support to match the declared ARIA pattern.

role="listbox"/role="option" implies the WAI-ARIA Listbox pattern, which expects arrow keys (and typically Home/End) to move focus among options with a single tab stop, not per-option <button> tabbing. Currently every option is independently focusable via Tab and there's no ArrowUp/ArrowDown handling, and Escape doesn't return focus to the trigger button. A similar arrow-key pattern already exists for tabs in docs/app/components/mdx/sdk.tsx's onKeyDown, so a consistent implementation here is straightforward.

♿ Sketch of arrow-key + focus-return handling
   function onKeyDown(event: KeyboardEvent) {
     if (event.key === "Escape") {
       setOpen(false);
+      triggerRef.current?.focus();
     }
   }

Consider wiring ArrowDown/ArrowUp on the menu container to move focus between .sdk-dd-opt buttons (roving tabindex or focus() calls), consistent with the existing tab-navigation pattern in mdx/sdk.tsx.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/app/components/ui/site-nav.tsx` around lines 70 - 151, The SDK picker in
SdkSelect declares a listbox/option pattern but still allows each .sdk-dd-opt
button to be tabbed separately and has no arrow-key navigation. Update SdkSelect
to use roving focus or a single tab stop with ArrowUp/ArrowDown (and Home/End if
appropriate) moving focus among options, matching the keyboard pattern already
used in docs/app/components/mdx/sdk.tsx. Also make Escape close the menu and
return focus to the trigger button so the interaction matches the declared ARIA
behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Nitpick comments:
In `@docs/app/components/ui/site-nav.tsx`:
- Around line 70-151: The SDK picker in SdkSelect declares a listbox/option
pattern but still allows each .sdk-dd-opt button to be tabbed separately and has
no arrow-key navigation. Update SdkSelect to use roving focus or a single tab
stop with ArrowUp/ArrowDown (and Home/End if appropriate) moving focus among
options, matching the keyboard pattern already used in
docs/app/components/mdx/sdk.tsx. Also make Escape close the menu and return
focus to the trigger button so the interaction matches the declared ARIA
behavior.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6d64379d-c71a-4834-9050-5d4d4012bbfe

📥 Commits

Reviewing files that changed from the base of the PR and between 79b1651 and 2af3871.

📒 Files selected for processing (6)
  • docs/app/components/docs/sidebar.tsx
  • docs/app/components/landing/hero.tsx
  • docs/app/components/ui/site-nav.tsx
  • docs/app/lib/highlight-lite.ts
  • docs/app/lib/landing-content.ts
  • docs/app/styles/docs.css

@pratyush618 pratyush618 merged commit 1c80eed into master Jul 7, 2026
16 checks passed
@pratyush618 pratyush618 deleted the docs/java-sdk branch July 7, 2026 04:28
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