Skip to content

Conversation

@vnikolova
Copy link
Collaborator

@vnikolova vnikolova commented Sep 18, 2025

Note: All new topics and sections have been individually reviewed and approved for technical correctness.

Details:

  • Update Ktor version to 3.3.0 and Kotlin version to 2.2.10.
  • Add release details in Releases.
  • Add a warning about Getty compatibility with Jetty 12 in WAR.
  • Mention regression in What's new in 3.2.3.
  • New sections:
    • Limitations section in Auto-reload.
    • HTTP/2 without TLS section in HTTP/2.
    • Response buffering section in client's Server-Sent Events.
    • Custom fallback section in Serving static content.
  • New topics:
    • OpenAPI specification generation
    • WebRTC client
    • What's new in Ktor 3.3.0

Preview on staging:

What's new
OpenAPI specification generation
WebRTC client
Releases

@coderabbitai
Copy link

coderabbitai bot commented Sep 18, 2025

Walkthrough

Repository-wide version upgrades (Kotlin, Ktor, Gradle/plug-ins), many snippet build files and version catalogs updated; selective snippet modules commented out; new/updated documentation and TOC entries (WebRTC, OpenAPI, 3.3.0 release); static-files snippet adds fallback and caching examples; site metadata/labels and Gradle wrapper updated.

Changes

Cohort / File(s) Summary
Global version & site metadata
codeSnippets/gradle.properties, v.list, help-versions.json, project.ihp
Bumped Kotlin 2.1.20 → 2.2.10 and Ktor 3.2.3 → 3.3.0; updated docs/site version entries.
Gradle wrapper
codeSnippets/gradle/wrapper/gradle-wrapper.properties
Update distribution to Gradle 9.0.0 and add validateDistributionUrl=true.
Settings adjustments
codeSnippets/settings.gradle.kts
Commented-out module inclusions: jetty-war, tomcat-war, tomcat-war-ssl.
Kotlin serialization plugin bumps (many snippets)
codeSnippets/snippets/**/build.gradle.kts
Update kotlin("plugin.serialization") / org.jetbrains.kotlin.plugin.serialization 2.1.20 → 2.2.10 across many snippet build scripts.
Ktor Gradle plugin bumps (many snippets)
codeSnippets/snippets/**/build.gradle.kts
Update id("io.ktor.plugin") 3.2.3 → 3.3.0 across multiple snippet build scripts.
Mixed plugin bumps & repo addition
codeSnippets/snippets/.../build.gradle.kts (e.g., tutorial-server-websockets, tutorial-server-restful-api, server-websockets-sharedflow)
Combined Ktor plugin and Kotlin serialization bumps; one snippet added JetBrains EAP repo.
Gretty plugin bumps
`codeSnippets/snippets/(jetty-war
tomcat-war-ssl)/build.gradle.kts`
Version catalogs & libs files
codeSnippets/snippets/.../gradle/libs.versions.toml (full-stack-task-manager, tutorial-client-kmm, tutorial-full-stack-task-manager, tutorial-server-db-integration)
Update Kotlin and/or Ktor version entries (2.1.20 → 2.2.10, 3.2.3 → 3.3.0).
Migrating-express sample properties
codeSnippets/snippets/migrating-express-ktor/gradle.properties
Bump kotlin_version and ktor_version.
Maven sample
codeSnippets/snippets/tutorial-server-get-started-maven/pom.xml
Update Maven properties kotlin_version and ktor_version.
Static files snippet
codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt
Add imports; add fallback handler for staticFiles("/files", ...) and new staticFiles examples demonstrating ETag/LastModified and strong ETag.
Docs: new topics & TOC
`topics/(client-webrtc.md
openapi-spec-generation.md
Docs: modified topics
`topics/(client-server-sent-events.topic
server-auto-reload.topic
Site labels
labels.list
Add secondary label id="server-feature" (name "Server", color "purple").
Other misc. snippet edits
codeSnippets/snippets/**
Numerous additional per-snippet plugin/version updates (consistent, repetitive).

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~30 minutes

Possibly related PRs

Suggested labels

dependencies

Suggested reviewers

  • e5l
  • Stexxe
  • osipxd

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed The title is concise and accurately summarizes the primary changes in the changeset — adding documentation for the 3.3.0 release and updating Ktor/Kotlin versions — making it clear and useful for teammates scanning PR history.
Description Check ✅ Passed The PR description enumerates the version bumps, new topics and sections, and staging preview links which align with the provided file summaries and PR objectives, so it is related to the changeset and adequate for this lenient check.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 3.3.0

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f7e54aa and 5de8c44.

📒 Files selected for processing (1)
  • codeSnippets/snippets/tutorial-server-websockets/build.gradle.kts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • codeSnippets/snippets/tutorial-server-websockets/build.gradle.kts

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@vnikolova vnikolova marked this pull request as ready for review September 19, 2025 09:50
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (8)
codeSnippets/snippets/auth-oauth-google/build.gradle.kts (1)

15-18: Drop the Ktor EAP repo unless strictly needed.

3.3.0 artifacts are on Maven Central; keeping EAP increases resolution time and supply‑chain surface.

Apply:

 repositories {
     mavenCentral()
-    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
 }
codeSnippets/snippets/client-engine-js/build.gradle.kts (1)

9-13: Consider removing the Ktor EAP repository.

Unless a snippet truly depends on EAP, prefer stable repos only.

 repositories {
     mavenCentral()
     maven("https://maven.pkg.jetbrains.space/public/p/kotlinx-html/maven")
-    maven("https://maven.pkg.jetbrains.space/public/p/ktor/eap")
 }
codeSnippets/snippets/server-sse/build.gradle.kts (1)

15-18: Remove Ktor EAP repo unless required.

Keeps dependency resolution deterministic on stable releases.

 repositories {
     mavenCentral()
-    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
 }
codeSnippets/snippets/client-type-safe-requests/build.gradle.kts (1)

16-19: Prefer stable repos only.

Drop the Ktor EAP repository if not strictly needed by the snippet.

 repositories {
     mavenCentral()
-    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
 }
codeSnippets/snippets/cors/build.gradle.kts (1)

16-19: Remove EAP repo to avoid pre‑release artifacts.

Stable 3.3.0 does not require it.

 repositories {
     mavenCentral()
-    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
 }
codeSnippets/snippets/json-kotlinx-method-override/build.gradle.kts (1)

15-18: EAP repo likely unnecessary.

Prefer Central only for release docs/snippets.

 repositories {
     mavenCentral()
-    maven { url = uri("https://maven.pkg.jetbrains.space/public/p/ktor/eap") }
 }
topics/openapi-spec-generation.md (1)

100-115: Inconsistent tag name for external docs.

The table lists Tag “@externalDocs” but Format “@external …”. Make them consistent.

Apply one of:

  • Use “@externalDocs href”
  • Or rename Tag column to “@external
-| `@externalDocs` | `@external href`                                | External documentation links                    |
+| `@externalDocs` | `@externalDocs href`                             | External documentation links                    |
topics/whats-new-330.md (1)

164-169: Consider consistent list formatting.

The static analysis tool flagged inconsistent list formatting (mixing dashes and asterisks) and indentation issues. However, this appears to be intentional nested formatting within the OpenAPI features section and doesn't impact readability.

If you prefer consistent formatting, you could standardize the sub-bullets:

-    - Path, query, header, cookie, and body parameters
-    - Response codes and types  
-    - Security, descriptions, deprecations, and external documentation links
+    * Path, query, header, cookie, and body parameters
+    * Response codes and types
+    * Security, descriptions, deprecations, and external documentation links
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 408a47e and 9336810.

📒 Files selected for processing (70)
  • codeSnippets/gradle.properties (1 hunks)
  • codeSnippets/gradle/wrapper/gradle-wrapper.properties (1 hunks)
  • codeSnippets/settings.gradle.kts (2 hunks)
  • codeSnippets/snippets/auth-form-session-nested/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/auth-form-session/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/auth-jwt-hs256/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/auth-jwt-rs256/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/auth-oauth-google/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/aws-elastic-beanstalk/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-auth-oauth-google/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-engine-js/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-json-kotlinx/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-sse/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-testing-mock/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-type-safe-requests/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-validate-2xx-response/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/client-websockets-serialization/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/cors/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/deployment-ktor-plugin/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/engine-main-custom-environment/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/forwarded-header/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/full-stack-task-manager/gradle/libs.versions.toml (1 hunks)
  • codeSnippets/snippets/htmx-integration/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/jetty-war/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/json-kotlinx-method-override/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/json-kotlinx-openapi/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/json-kotlinx/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/legacy-interactive-website/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/migrating-express-ktor/5_send_response/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/migrating-express-ktor/7_receive_request/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/migrating-express-ktor/gradle.properties (1 hunks)
  • codeSnippets/snippets/proguard/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/request-validation/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/resource-routing/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/server-sse/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/server-websockets-serialization/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/server-websockets-sharedflow/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/session-cookie-client/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/session-cookie-server/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/session-header-server/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt (2 hunks)
  • codeSnippets/snippets/tomcat-war-ssl/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-client-kmm/gradle/libs.versions.toml (1 hunks)
  • codeSnippets/snippets/tutorial-full-stack-task-manager/gradle/libs.versions.toml (1 hunks)
  • codeSnippets/snippets/tutorial-server-db-integration/gradle/libs.versions.toml (1 hunks)
  • codeSnippets/snippets/tutorial-server-docker-compose/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-server-get-started-maven/pom.xml (1 hunks)
  • codeSnippets/snippets/tutorial-server-get-started/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-server-restful-api/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-server-routing-and-requests/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-server-web-application/build.gradle.kts (1 hunks)
  • codeSnippets/snippets/tutorial-server-websockets/build.gradle.kts (2 hunks)
  • codeSnippets/snippets/tutorial-website-static/build.gradle.kts (1 hunks)
  • help-versions.json (1 hunks)
  • ktor.tree (2 hunks)
  • labels.list (1 hunks)
  • project.ihp (1 hunks)
  • topics/client-server-sent-events.topic (2 hunks)
  • topics/client-webrtc.md (1 hunks)
  • topics/openapi-spec-generation.md (1 hunks)
  • topics/releases.md (1 hunks)
  • topics/server-auto-reload.topic (2 hunks)
  • topics/server-http2.md (1 hunks)
  • topics/server-openapi.md (1 hunks)
  • topics/server-static-content.md (7 hunks)
  • topics/server-swagger-ui.md (1 hunks)
  • topics/server-war.md (1 hunks)
  • topics/whats-new-320.md (2 hunks)
  • topics/whats-new-330.md (1 hunks)
  • v.list (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
codeSnippets/snippets/tutorial-server-restful-api/build.gradle.kts (1)
codeSnippets/snippets/cors/src/main/kotlin/com/example/Application.kt (1)
  • id (20-21)
🪛 markdownlint-cli2 (0.17.2)
topics/client-webrtc.md

47-47: Link fragments should be valid

(MD051, link-fragments)

topics/whats-new-320.md

21-21: Link fragments should be valid

(MD051, link-fragments)

topics/whats-new-330.md

10-10: Link fragments should be valid

(MD051, link-fragments)


11-11: Link fragments should be valid

(MD051, link-fragments)


12-12: Link fragments should be valid

(MD051, link-fragments)


13-13: Link fragments should be valid

(MD051, link-fragments)


164-164: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


165-165: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


166-166: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


166-166: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


167-167: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


167-167: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


168-168: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


168-168: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


169-169: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)

🔇 Additional comments (82)
codeSnippets/snippets/tutorial-server-routing-and-requests/build.gradle.kts (1)

8-8: Version update aligns with project-wide Ktor 3.3.0 upgrade.

This is a minor version update that provides backward-compatible new functionality and contains backward-compatible fixes. The update from 3.2.3 to 3.3.0 is part of the repository-wide version alignment documented in the PR objectives.

codeSnippets/snippets/request-validation/build.gradle.kts (1)

8-8: Kotlin serialization plugin version properly updated.

The update from 2.1.20 to 2.2.10 aligns with the global Kotlin version upgrade across the repository. This change is consistent with other build files in the PR.

codeSnippets/snippets/tutorial-website-static/build.gradle.kts (1)

8-8: LGTM! Ktor plugin version properly updated.

The update from 3.2.3 to 3.3.0 is consistent with the repository-wide upgrade to Ktor 3.3.0 mentioned in the PR objectives.

codeSnippets/snippets/tutorial-server-get-started-maven/pom.xml (1)

11-11: Maven properties properly aligned with repository-wide version upgrades.

Both Ktor (3.2.3 → 3.3.0) and Kotlin (2.1.20 → 2.2.10) version updates are consistent with the global version alignment across the repository.

Also applies to: 13-13

help-versions.json (1)

13-13: Documentation version correctly updated to reflect current release.

The update from 3.2.3 to 3.3.0 properly aligns the documentation version with the new Ktor release mentioned in the PR objectives.

codeSnippets/snippets/client-auth-oauth-google/build.gradle.kts (1)

9-9: Kotlin serialization plugin version correctly updated.

The version bump from 2.1.20 to 2.2.10 matches the repository-wide Kotlin upgrade pattern documented in other files.

codeSnippets/snippets/tutorial-server-docker-compose/build.gradle.kts (1)

11-11: Plugin versions properly synchronized with global upgrades.

Both the Ktor plugin (3.2.3 → 3.3.0) and Kotlin serialization plugin (2.1.20 → 2.2.10) updates are consistent with the repository-wide version alignment strategy.

Also applies to: 12-12

codeSnippets/snippets/jetty-war/build.gradle.kts (1)

8-8: Ignore for build — jetty-war module is commented out in settings.gradle.kts

The org.gretty update in codeSnippets/snippets/jetty-war/build.gradle.kts doesn't affect the multi-module build because settings.gradle.kts has module("snippets", "jetty-war") commented out; topics/server-war.md only references the snippet. Re-enable the module if you intend this change to be built, then verify Gretty 4.1.7 compatibility with Jetty 12.

Likely an incorrect or invalid review comment.

codeSnippets/snippets/auth-form-session-nested/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version updated consistently.

The Kotlin serialization plugin version has been updated to 2.2.10, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/json-kotlinx/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version updated consistently.

The Kotlin serialization plugin version has been updated to 2.2.10, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/client-json-kotlinx/build.gradle.kts (1)

9-9: LGTM! Kotlin serialization plugin version updated consistently.

The Kotlin serialization plugin version has been updated to 2.2.10, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/deployment-ktor-plugin/build.gradle.kts (1)

7-7: LGTM! Ktor plugin version updated consistently.

The Ktor plugin version has been updated to 3.3.0, which aligns with the repository-wide Ktor version upgrade as part of this PR.

codeSnippets/snippets/forwarded-header/build.gradle.kts (1)

7-7: LGTM! Ktor plugin version updated consistently.

The Ktor plugin version has been updated to 3.3.0, which aligns with the repository-wide Ktor version upgrade as part of this PR.

codeSnippets/snippets/session-header-server/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version updated consistently.

The Kotlin serialization plugin version has been updated to 2.2.10, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/session-cookie-server/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version updated consistently.

The Kotlin serialization plugin version has been updated to 2.2.10, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/tutorial-server-db-integration/gradle/libs.versions.toml (1)

5-6: LGTM! Version catalog updated consistently.

Both Kotlin and Ktor versions have been updated to 2.2.10 and 3.3.0 respectively, which aligns with the repository-wide version upgrade as part of this PR.

codeSnippets/snippets/client-sse/build.gradle.kts (1)

9-9: Version update looks appropriate for the repository-wide upgrade.

The Kotlin serialization plugin version update from 2.1.20 to 2.2.10 aligns with the latest stable Kotlin 2.2.20 release. This is part of a coordinated upgrade across the entire codebase.

codeSnippets/snippets/auth-form-session/build.gradle.kts (1)

8-8: LGTM - consistent version upgrade pattern.

This Kotlin serialization plugin version bump to 2.2.10 follows the same pattern as other modules in this PR and aligns with the current stable release.

codeSnippets/snippets/client-websockets-serialization/build.gradle.kts (1)

9-9: Version bump is consistent with repository upgrade.

The Kotlin serialization plugin version update to 2.2.10 matches the coordinated upgrade across all modules.

codeSnippets/snippets/engine-main-custom-environment/build.gradle.kts (1)

7-7: Same concern about Ktor 3.3.0 availability.

As noted in the proguard build script, please verify that Ktor plugin version 3.3.0 is officially released and available before proceeding with this change.

codeSnippets/snippets/json-kotlinx-openapi/build.gradle.kts (1)

9-9: Kotlin serialization version update is appropriate.

The update from 2.1.20 to 2.2.10 is consistent with the Kotlin 2.2.10 bug fix release and maintains alignment across the codebase.

codeSnippets/snippets/htmx-integration/build.gradle.kts (1)

7-7: Potential version availability issue.

The Ktor plugin version 3.3.0 update requires verification of availability, similar to other files in this PR. Ensure this version has been officially released.

codeSnippets/snippets/session-cookie-client/build.gradle.kts (1)

8-8: Kotlin serialization version update approved.

The version bump to 2.2.10 is consistent with the repository-wide upgrade and represents a stable release.

codeSnippets/snippets/proguard/build.gradle.kts (1)

20-20: Ktor 3.3.0 release verified — OK to keep

Ktor 3.3.0 was officially released on September 12, 2025 (ktor.io changelog).

    id("io.ktor.plugin") version "3.3.0"
codeSnippets/snippets/client-engine-js/build.gradle.kts (1)

6-6: Plugin upgrade to 2.2.10 — good. Ensure Kotlin MPP toolchain is on 2.2.10 too.

Avoid mixed Kotlin plugin versions between serialization and multiplatform/jvm.

v.list (1)

7-8: Version vars updated to Ktor 3.3.0 / Kotlin 2.2.10 — LGTM. Validate repo‑wide sync.

Ensure these values match all snippet properties/libs.versions and release notes.

Use the script shared in the first comment to detect any stale 3.2.3 / 2.1.20 references.

codeSnippets/snippets/server-sse/build.gradle.kts (1)

8-8: Kotlin serialization 2.2.10 — LGTM.

No issues spotted.

codeSnippets/snippets/client-type-safe-requests/build.gradle.kts (1)

9-9: Serialization plugin 2.2.10 — looks good.

Confirm kotlin("jvm") resolves to the same Kotlin version via pluginManagement.

codeSnippets/snippets/aws-elastic-beanstalk/build.gradle.kts (1)

6-6: Ktor Gradle plugin -> 3.3.0 — LGTM. Verify dependency version alignment.

This snippet uses versionless Ktor deps (e.g., ktor-server-core-jvm). Ensure the plugin or a BOM aligns them to 3.3.0; otherwise add an explicit version or configure the plugin’s version property.

Optionally make it explicit:

 plugins {
     application
     kotlin("jvm")
     id("io.ktor.plugin") version "3.3.0"
 }
+
+ktor {
+    version.set("3.3.0")
+}
codeSnippets/snippets/cors/build.gradle.kts (1)

9-9: Kotlin serialization 2.2.10 — approved.

All good here.

codeSnippets/snippets/json-kotlinx-method-override/build.gradle.kts (1)

8-8: Serialization plugin version bump — LGTM.

No functional risks identified.

codeSnippets/snippets/auth-oauth-google/build.gradle.kts (1)

8-8: Kotlin serialization plugin bumped to 2.2.10 — confirmed; align Kotlin plugin version repo‑wide.

Found kotlin("plugin.serialization").version("2.2.10") across codeSnippets/* (e.g. codeSnippets/snippets/auth-oauth-google/build.gradle.kts). No explicit kotlin("jvm"|"multiplatform").version(...) pins detected. pluginManagement blocks exist (e.g. codeSnippets/settings.gradle.kts); confirm pluginManagement resolutionStrategy pins Kotlin to 2.2.10 so kotlin("jvm") resolves to 2.2.10 and avoid mixed Kotlin plugin versions.

codeSnippets/snippets/client-validate-2xx-response/build.gradle.kts (1)

9-9: Kotlin serialization plugin version updated to align with repository-wide upgrade.

This change is part of a broader repository-wide upgrade to Ktor 3.3.0 and Kotlin 2.2.10, coordinated across multiple modules. The version update is consistent with the documented compatibility requirements.

codeSnippets/gradle.properties (1)

8-9: Version bumps are consistent with Ktor 3.3.0 release requirements.

Ktor 3.3.0 was released on September 11, 2025 and includes support for Kotlin 2.2. The updates to kotlin_version 2.2.10 and ktor_version 3.3.0 are appropriate and align with the release compatibility matrix.

codeSnippets/snippets/legacy-interactive-website/build.gradle.kts (1)

7-7: Ktor plugin version updated correctly for 3.3.0 release.

This change aligns with the repository-wide upgrade strategy and maintains consistency across build files.

codeSnippets/snippets/tutorial-server-web-application/build.gradle.kts (1)

8-8: Ktor plugin version consistently updated to 3.3.0.

The version update maintains consistency with the broader repository upgrade strategy.

codeSnippets/snippets/tutorial-full-stack-task-manager/gradle/libs.versions.toml (1)

16-16: Kotlin version updated in libs.versions.toml.

The Kotlin version update to 2.2.10 is consistent and will affect all references using version.ref = "kotlin" throughout this module.

codeSnippets/snippets/auth-jwt-rs256/build.gradle.kts (1)

8-8: Kotlin serialization plugin version updated consistently.

This change aligns with the repository-wide Kotlin version upgrade to 2.2.10.

codeSnippets/snippets/full-stack-task-manager/gradle/libs.versions.toml (1)

19-19: Ktor version updated to 3.3.0 in version catalog.

Ktor 3.3.0 was released on September 11, 2025, making this a current and stable version choice. The update will propagate to all Ktor dependencies referenced through version.ref = "ktor".

codeSnippets/settings.gradle.kts (1)

25-26: Confirm WAR modules intentionally disabled — verify compatibility and document reason

  • Findings: codeSnippets/snippets/{jetty-war,tomcat-war,tomcat-war-ssl} are present and use Gretty+WAR configs (jetty-war: org.gretty 4.1.7, servletContainer=jetty11; tomcat-war: org.gretty 4.0.3, servletContainer=tomcat10; tomcat-war-ssl: org.gretty 4.1.7, httpsEnabled). No TODO/FIXME notes found; topics/server-war.md and each module README still reference the samples and show ./gradlew ::run / :war commands.
  • Action (required): If these modules were commented out for compatibility, add an inline comment in codeSnippets/settings.gradle.kts (lines 25–26) referencing the issue/ticket and either (a) verify the samples build/run with the current Ktor/Gretty versions (:jetty-war:war, :tomcat-war:war, etc.) or (b) align/update Gretty/plugin versions before re-enabling. If there is no compatibility problem, re-enable the modules so docs/examples remain accurate.
codeSnippets/snippets/tutorial-server-get-started/build.gradle.kts (1)

8-8: LGTM! Plugin version update aligns with the repository-wide upgrade.

The update to Ktor Gradle plugin version 3.3.0 is consistent with the repository-wide migration to Ktor 3.3.0. This change ensures the build tooling is compatible with the latest Ktor features and improvements.

codeSnippets/snippets/auth-jwt-hs256/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin update aligns with project-wide version upgrade.

The update to Kotlin serialization plugin version 2.2.10 is part of the broader repository upgrade to Kotlin 2.2.10. This ensures compatibility with the latest Kotlin language features and improvements.

codeSnippets/snippets/tomcat-war-ssl/build.gradle.kts (1)

8-8: LGTM! Gretty plugin version update is appropriate.

The update to Gretty plugin version 4.1.7 aligns with the broader version updates across the repository. This ensures compatibility with the updated Kotlin and Ktor versions being used in the project.

topics/server-war.md (1)

93-97: LGTM! Important compatibility warning for Ktor 3.3.0 users.

The warning about Jetty 12 compatibility with Gretty is essential for users who rely on the Gretty plugin. Ktor 3.3.0 includes significant infrastructure changes including LLVM 19 updates, and the recommendation to use Ktor 3.2.3 until Gretty adds Jetty 12 support provides users with a practical workaround.

codeSnippets/snippets/resource-routing/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version update is consistent.

The update to Kotlin serialization plugin version 2.2.10 aligns with the repository-wide upgrade to Kotlin 2.2.10. This ensures compatibility with the latest Kotlin language features and serialization improvements.

codeSnippets/snippets/client-testing-mock/build.gradle.kts (1)

7-7: LGTM! Kotlin serialization plugin version update follows project standards.

The update to Kotlin serialization plugin version 2.2.10 is consistent with the repository-wide migration to Kotlin 2.2.10. This maintains version consistency across all build scripts and ensures access to the latest serialization features.

codeSnippets/snippets/tutorial-client-kmm/gradle/libs.versions.toml (1)

3-3: LGTM! Version catalog updates align with repository-wide upgrade.

The updates to kotlin = "2.2.10" and ktor = "3.3.0" are consistent with the repository-wide migration. Using version catalogs for dependency management is a best practice that ensures consistency across multi-module projects.

Also applies to: 5-5

codeSnippets/snippets/server-websockets-serialization/build.gradle.kts (1)

8-8: LGTM! Kotlin serialization plugin version update maintains consistency.

The update to Kotlin serialization plugin version 2.2.10 is part of the coordinated repository-wide upgrade to Kotlin 2.2.10. This ensures all WebSocket serialization functionality benefits from the latest Kotlin improvements and bug fixes.

codeSnippets/snippets/server-websockets-sharedflow/build.gradle.kts (1)

8-9: LGTM! Version updates are correct.

The Ktor plugin version update to 3.3.0 and Kotlin serialization plugin version update to 2.2.10 align with the broader version upgrade across the codebase for the 3.3.0 release.

topics/server-http2.md (1)

79-98: Clear documentation for HTTP/2 cleartext support.

The new h2c section provides comprehensive documentation for HTTP/2 without TLS, including proper configuration examples and important constraints. The requirement that enableHttp2 = true must be set and the incompatibility with SSL connectors are well-documented.

codeSnippets/gradle/wrapper/gradle-wrapper.properties (2)

3-3: Gradle 9.0.0 is a stable release.

The upgrade to Gradle 9.0.0 is appropriate as it's a stable major release. This version requires Java 17+ to run, uses Kotlin 2 and Groovy 4, and adopts Semantic Versioning (SemVer).


5-5: Good security practice.

Adding validateDistributionUrl=true is a security enhancement that validates the Gradle distribution URL, helping prevent supply chain attacks.

labels.list (1)

15-15: New server-feature label added appropriately.

The addition of the "Server" secondary label with purple color is consistent with the existing labeling scheme and aligns with the new server-related features being documented in 3.3.0.

codeSnippets/snippets/tutorial-server-restful-api/build.gradle.kts (1)

8-9: LGTM! Plugin versions updated correctly.

The Ktor plugin update to 3.3.0 and Kotlin serialization plugin update to 2.2.10 are consistent with the version bumps across the entire codebase for the 3.3.0 release.

codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt (2)

6-8: New imports added for enhanced static file handling.

The imports for respond, respondFile, and respondRedirect are correctly added to support the new fallback functionality.


25-32: Well-implemented custom fallback logic.

The new fallback block demonstrates different response patterns:

  • Absolute vs relative redirects (.php and .kt extensions)
  • Custom HTTP status codes (HTTP 410 Gone for .xml)
  • Default file serving for other cases

The implementation showcases the flexibility of the new custom fallback feature in Ktor 3.3.0.

topics/whats-new-320.md (3)

20-23: Important regression warning properly highlighted.

The warning about auto-reload compatibility with blocking function references is appropriately placed and formatted. This helps users understand the limitations introduced with suspend module support.


282-301: Comprehensive regression documentation.

The new section clearly explains the auto-reload regression, providing both the technical reason (anonymous inner class wrapping) and practical solutions (suspend functions and configuration references). The code examples effectively demonstrate the supported approaches.


21-21: Fix the link fragment reference.

The link fragment #regression should point to a valid section. The target section exists at line 282, so this reference is correct.

codeSnippets/snippets/tutorial-server-websockets/build.gradle.kts (2)

7-8: LGTM! Plugin versions updated consistently.

The Ktor plugin update to 3.3.0 and Kotlin serialization plugin update to 2.2.10 are aligned with the broader version upgrade across all modules.


23-23: EAP repository added for early access.

The addition of the Jetbrains EAP repository allows access to early access builds and preview versions, which is appropriate for a documentation project that may need to showcase upcoming features.

topics/client-server-sent-events.topic (2)

54-67: Reconnection guidance LGTM.

Accurate per SSEConfig (maxReconnectionAttempts, reconnectionTime).


78-134: Confirm API names and add a failure-handling snippet.

The new buffering section is useful. Please verify the exact type and function names (SSEBufferPolicy, bufferPolicy(...)) against 3.3.0 APIs, and consider adding a short example showing how to read the buffered body on errors.

Apply this minimal doc diff to include a targeted try/catch example:

@@
         </chapter>
         <chapter title="Response buffering" id="response-buffering">
@@
                 }) {
                     // ...
                 }
             </code-block>
+            <p>Example: read buffered response text on failure:</p>
+            <code-block lang="kotlin">
+                try {
+                    client.sse(url) { /* ... */ }
+                } catch (e: SSEClientException) {
+                    val buffered = e.response?.bodyAsText()
+                    // log buffered
+                }
+            </code-block>

For reference, SSEConfig exposes reconnection settings and SSEClientException carries an optional HttpResponse you can read via bodyAsText(). (api.ktor.io)

topics/server-openapi.md (1)

22-24: LGTM: clearer positioning with generation-from-specs and link to extension.

This aligns the page with the new “spec generation” topic.

topics/server-swagger-ui.md (1)

23-24: LGTM: succinct note to use existing spec or generate via extension.

This reduces duplication and points to the right doc.

codeSnippets/snippets/migrating-express-ktor/gradle.properties (1)

1-2: LGTM: version alignment.

ktor_version=3.3.0 and kotlin_version=2.2.10 match PR goals.

project.ihp (1)

17-17: LGTM: doc instance version updated to 3.3.0.

Consistent with the release notes added in this PR.

codeSnippets/snippets/migrating-express-ktor/7_receive_request/build.gradle.kts (1)

8-8: LGTM: serialization plugin bumped to 2.2.10.

Matches gradle.properties and other snippets.

codeSnippets/snippets/migrating-express-ktor/5_send_response/build.gradle.kts (1)

7-9: Version bumps LGTM — local compatibility verified; repo wrappers vary

migrating-express-ktor/5_send_response/build.gradle.kts uses kotlin("jvm") and plugin.serialization 2.2.10; the module's gradle.properties sets kotlin_version=2.2.10 and its Gradle wrapper is 7.6.6, which meets KGP 2.2.10's minimum Gradle 7.6.3 (fully supported through 8.14). (kotlinlang.org)

  • Repo note: other wrappers include Gradle 8.x and a top-level wrapper at codeSnippets/gradle/wrapper/gradle-wrapper.properties using Gradle 9.0.0; Gradle 9.x is outside the documented fully supported range — verify builds that use wrapper 9.0.0 or align wrappers if you need repo-wide consistency. (kotlinlang.org)
topics/openapi-spec-generation.md (1)

18-22: Align Kotlin version in OpenAPI doc and repo

  • topics/openapi-spec-generation.md (lines 18–22) states "The OpenAPI Gradle extension requires Kotlin 2.2.20."
  • I found no "2.2.10" references in this branch — confirm whether the PR actually bumps Kotlin to 2.2.10 and verify the minimum Kotlin required by the OpenAPI Gradle extension. Update the note and any sample build files to match (suggestion: "Requires Kotlin 2.2.x (tested with 2.2.20)" if 2.2.20 is only a tested value).
topics/releases.md (1)

36-44: LGTM! Release entry correctly formatted and documented.

The 3.3.0 release entry is well-structured with proper date formatting, comprehensive feature highlights, and correct variable declarations. The content aligns with the confirmed release date of September 11, 2025.

ktor.tree (3)

296-296: LGTM! WebRTC client topic correctly placed.

The WebRTC client documentation is appropriately placed under the "Setting up a client" section, which is the logical location for client configuration topics.


387-387: LGTM! OpenAPI spec generation correctly categorized.

The OpenAPI specification generation topic is properly placed in the "Integrations" section, which is appropriate for tooling and build-time features.


393-393: LGTM! What's new document correctly positioned.

The 3.3.0 "What's new" document is appropriately placed in the "Releases" section and positioned before the 3.2.0 entry, maintaining chronological order.

topics/server-auto-reload.topic (2)

43-94: LGTM! Comprehensive documentation of auto-reload regression.

The limitations section clearly documents the 3.2.0 regression with auto-reload functionality. The table format effectively communicates the version differences, and the code examples clearly distinguish between supported and unsupported patterns. This is important information for developers upgrading to 3.3.0.


111-111: Improve accessibility with proper code formatting.

The system property should be consistently formatted as code throughout the document.

topics/server-static-content.md (2)

181-196: LGTM! Clear documentation of the new fallback feature.

The custom fallback section provides comprehensive coverage of the new functionality with clear examples showing various fallback scenarios. The documentation effectively explains the difference between fallback() and default(), and the code examples demonstrate practical use cases.


34-34: Verify snippet include-lines after fallback insertion

Executed the provided script — codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt is present; the fallback block is at lines 25–32 and all include-lines in topics/server-static-content.md that reference this snippet map to existing lines. Other include-lines referencing snippets/static-resources and snippets/static-zip were not inspected.

topics/client-webrtc.md (2)

1-234: LGTM! Comprehensive WebRTC client documentation.

This is excellent documentation for the experimental WebRTC client feature. The document covers all essential aspects:

  • Clear platform support (JS/Wasm, Android)
  • Proper dependency instructions
  • Comprehensive API coverage (peer connections, SDP, ICE, data channels, media tracks)
  • Clear code examples with platform-specific configurations
  • Appropriate limitations section noting experimental status

The documentation structure is logical and the examples are practical and well-explained.


47-47: Fix link fragment reference.

The ICE anchor reference #ice should point to a valid section. The target section exists at line 108 with id "ice", so this reference is correct.

topics/whats-new-330.md (2)

1-207: LGTM! Comprehensive 3.3.0 release documentation.

Excellent documentation of the 3.3.0 release features. The document effectively covers:

  • Server improvements (custom fallback, auto-reload limitations, h2c support)
  • Client enhancements (SSE buffering, WebRTC, OkHttp upgrade)
  • Gradle plugin features (OpenAPI generation)
  • Infrastructure updates (Jetty upgrade)

The structure is logical, code examples are clear, and cross-references to other documentation topics are properly implemented.


10-13: Link fragments are correctly referenced.

The static analysis tool flagged these fragment links, but they correctly reference sections within the same document (custom-fallback, openapi-spec-gen, http2-h2c-support, webrtc-client). These are valid internal document anchors.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Nitpick comments (13)
topics/server-static-content.md (7)

58-61: Hyphenate “up‑to‑date”.

Use “up‑to‑date” when used adjectivally.

- up to date without requiring a server restart.
+ up-to-date without requiring a server restart.

77-78: Tighten wording.

Minor clarity tweak.

-In this case, Ktor recursively serves up any file from the `static` package as long as a URL path and a path-to-resource
-match.
+In this case, Ktor recursively serves any file from the `static` package as long as the URL path matches a resource path.

136-138: Minor phrasing improvement.

Optional style tweak.

-By default, Ktor tries to guess the value of the `Content-Type` header from the file extension. You can use
+By default, Ktor infers the `Content-Type` header from the file extension. You can use
 the `contentType()` function to set the `Content-Type` header explicitly.

154-176: Use correct HTTP header casing and wording.

Header name is “Last-Modified” (with hyphen). Also small grammar polish.

-When the [`ConditionalHeaders`](server-conditional-headers.md) plugin is installed, Ktor can serve static resources with 
-`ETag` and `LastModified` headers and process conditional headers to avoid sending the body of content if it hasn't changed
+When the [`ConditionalHeaders`](server-conditional-headers.md) plugin is installed, Ktor can serve static resources with
+`ETag` and `Last-Modified` headers and process conditional requests to avoid sending the body if the content hasn't changed
 since the last request:

191-200: Title grammar: “File extension fallbacks”.

Plural noun compound reads better without the extra “s” on “extensions”.

-### File extensions fallbacks {id="extensions"}
+### File extension fallbacks {id="extensions"}

220-226: Pluralize and simplify phrasing.

Minor style fix.

-The `modify()` function allows you to apply custom modification to a resulting response.
+The `modify()` function allows you to apply custom modifications to the response.

107-107: Include‑lines are brittle — switch to a contiguous range or named snippet

Replace include-lines="17,19,23" (topics/server-static-content.md:107) with include-lines="17-23" or extract a named snippet; lines 17–23 exist in codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt.

topics/whats-new-330.md (6)

26-27: Consistent US English.

Use “behavior” for consistency with the rest of the doc set.

-To define custom fallback behaviour, use the `fallback()` function within `staticFiles()`, `staticResources()`, `staticZip()`, or
+To define custom fallback behavior, use the `fallback()` function within `staticFiles()`, `staticResources()`, `staticZip()`, or

34-36: Header naming and casing.

Use standard HTTP header names and casing.

-### LastModified and Etag headers for static content
+### Last-Modified and ETag headers for static content

36-39: Header name fix in body text.

Match the corrected header casing.

-Ktor 3.3.0 introduces support for `ETag` and `LastModified` headers for static resources. When the [`ConditionalHeaders`](server-conditional-headers.md)
+Ktor 3.3.0 introduces support for `ETag` and `Last-Modified` headers for static resources. When the [`ConditionalHeaders`](server-conditional-headers.md)

97-117: Fix broken SSE doc links (.topic → .md).

The links use “client-server-sent-events.topic”; other pages use .md. This likely breaks the link.

-You can configure the buffer globally when installing the [SSE plugin](client-server-sent-events.topic):
+You can configure the buffer globally when installing the [SSE plugin](client-server-sent-events.md):
@@
-For more information, see [Response buffering](client-server-sent-events.topic#response-buffering).
+For more information, see [Response buffering](client-server-sent-events.md#response-buffering).

148-149: Typo: “chanel” → “channel”.

Fix spelling in the example output text.

-     is Open -> println("Another peer opened a chanel: ${event.channel}")
+     is Open -> println("Another peer opened a channel: ${event.channel}")

184-189: Fix markdown list style and indentation (MD004/MD007).

Use asterisks (as elsewhere) and 2‑space indents for sub‑items.

-It provides the following capabilities:
-- Analyze Ktor route definitions and merge nested routes, local extensions, and resource paths.
-- Parse preceding KDoc annotations to supply OpenAPI metadata, including:
-    - Path, query, header, cookie, and body parameters
-    - Response codes and types
-    - Security, descriptions, deprecations, and external documentation links
-- Infer request and response bodies from `call.receive()` and `call.respond()`.
+It provides the following capabilities:
+* Analyze Ktor route definitions and merge nested routes, local extensions, and resource paths.
+* Parse preceding KDoc annotations to supply OpenAPI metadata, including:
+  * Path, query, header, cookie, and body parameters
+  * Response codes and types
+  * Security, descriptions, deprecations, and external documentation links
+* Infer request and response bodies from `call.receive()` and `call.respond()`.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 55c9e3f and f7e54aa.

📒 Files selected for processing (3)
  • codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt (3 hunks)
  • topics/server-static-content.md (9 hunks)
  • topics/whats-new-330.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
topics/server-static-content.md

22-22: Link fragments should be valid

(MD051, link-fragments)


22-22: Link fragments should be valid

(MD051, link-fragments)


23-23: Link fragments should be valid

(MD051, link-fragments)

topics/whats-new-330.md

10-10: Link fragments should be valid

(MD051, link-fragments)


11-11: Link fragments should be valid

(MD051, link-fragments)


12-12: Link fragments should be valid

(MD051, link-fragments)


13-13: Link fragments should be valid

(MD051, link-fragments)


184-184: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


185-185: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


186-186: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


186-186: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


187-187: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


187-187: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


188-188: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)


188-188: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


189-189: Unordered list style
Expected: asterisk; Actual: dash

(MD004, ul-style)

🔇 Additional comments (9)
topics/whats-new-330.md (4)

84-87: h2c guidance looks good.

Clear scope and link to the detailed section.


10-14: No changes needed — link fragments validated.
All listed ids exist in topics/whats-new-330.md: custom-fallback (line 17), http2-h2c-support (79), webrtc-client (119), openapi-spec-gen (177).


5-5: Confirm release date and link target.

  • Verified: topics/releases.md contains the anchor ## Release details {id="release-details"} (line 30).
  • Not verified: no git tag matching v3.3.0 was found in the repository; confirm that "Released: September 11, 2025" in topics/whats-new-330.md (line 5) matches the 3.3.0 tag date or update the date/link to the correct tag.

162-167: Version bump verification.

OkHttp 5.1.0 claim — please confirm this version is what the Gradle catalog or dependency definitions now use.

topics/server-static-content.md (5)

22-23: No action required — anchors exist and are unique. IDs #folders, #zipped, and #resources are defined in topics/server-static-content.md at lines 25, 43, and 65; MD051 is a false positive.


202-217: Approve: custom fallback guidance verified

Snippet codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt (lines 27–34) contains fallback { … } with call.respondRedirect, call.respond(HttpStatusCode.Gone), and call.respondFile — docs match the example.


34-34: Include-lines sanity check — verified

The referenced file codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt contains lines 15-16 and 57; the include-range "15-16,57" is intact.


181-190: Include-lines sanity check — resolved.
Application.kt contains the referenced lines: 24 staticFiles("/files", File("textFiles")), 26 exclude { file -> file.path.contains("excluded") }, 47 } — snippet is valid.


123-131: Include-lines (17-18,23) verified — still show default("index.html") usage.
Confirmed: codeSnippets/snippets/static-files/src/main/kotlin/com/example/Application.kt line 18 contains default("index.html"); lines 17 and 23 are the block's opening and closing.

@vnikolova vnikolova requested a review from bjhham September 19, 2025 15:22
Comment on lines +25 to +26
//module("snippets", "jetty-war")
//module("snippets", "tomcat-war")

Choose a reason for hiding this comment

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

Why are these commented?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

Because the examples use Getty which has no support for Jetty 12, so they're not compatible with this version of Ktor.

wrapped into anonymous inner classes during casting. This breaks auto-reload, because the function name is no longer
retained as a stable reference.

This means that auto-reload in `development` mode only works with suspend function modules and configuration references:

Choose a reason for hiding this comment

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

Doesn't it also still work for explicit lambdas? Should we specify that here? cc\ @bjhham

@vnikolova vnikolova added this to the 3.3.0 milestone Sep 22, 2025
@vnikolova vnikolova merged commit 069df1e into main Sep 22, 2025
1 check was pending
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants