Skip to content

[DX-1100] Fix broken links, hardcoded keys, and misguided references across docs#3342

Open
sacOO7 wants to merge 3 commits intomainfrom
fix/broken-links
Open

[DX-1100] Fix broken links, hardcoded keys, and misguided references across docs#3342
sacOO7 wants to merge 3 commits intomainfrom
fix/broken-links

Conversation

@sacOO7
Copy link
Copy Markdown
Contributor

@sacOO7 sacOO7 commented Apr 16, 2026

  • Fixes https://ably.atlassian.net/browse/DX-1100
  • Fix ~50 broken or incorrect internal links across API references, getting-started guides, auth docs, and platform
    pages (wrong anchors, outdated paths, trailing dots in fragments)
  • Convert absolute ably.com/docs and ably.io URLs to relative /docs/ paths and update http:// to https://
    for external links (ruby-doc.org)
  • Replace hardcoded 'your-api-key' / '<YOUR_API_KEY>' strings with {{API_KEY}} template variable in code
    examples
  • Add missing hyperlinks where features were mentioned as plain text (Spaces features, Chat features)
  • Fix minor copy issues: localhost URL in production docs, stale TODO comment, incorrect SDK constructor syntax,
    improved meta descriptions

… docs

Fix incorrect internal anchors (e.g. #api-key → #api-keys, #skipping → skip-integrations), convert absolute ably.com URLs to relative paths,
upgrade http:// to https:// for external links,
replace hardcoded API keys with {{API_KEY}} template variable,
add missing hyperlinks for feature references,
remove trailing dots from anchor fragments,
and fix minor copy issues including a localhost URL and stale TODO comment.
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 16, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 666884bf-8236-4e9e-8e21-fc3a5ed0b873

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/broken-links

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.

@sacOO7 sacOO7 changed the title Fix broken links, hardcoded keys, and misguided references across docs [DX-1100] Fix broken links, hardcoded keys, and misguided references across docs Apr 16, 2026
… content

Fix broken internal anchors (e.g. #presence-multiple-client-id → #multiple-client-ids,
#app-limits → #account), correct missing leading slashes in link paths,
replace hardcoded API keys with {{API_KEY}}, standardize "real-time" to
"realtime" and "Ably Realtime SDK" to "Ably Pub/Sub SDK", update past-date
deprecation pages to past tense, fix a missing code block closure in
chat data-extraction, and add cross-references for Chat moderation.
@sacOO7 sacOO7 marked this pull request as ready for review April 24, 2026 08:59
@sacOO7 sacOO7 requested a review from Copilot April 24, 2026 08:59
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Documentation maintenance PR addressing DX-1100 by fixing broken/misleading internal links, normalizing URL formats, and replacing hardcoded API key placeholders across the docs site.

Changes:

  • Fix/normalize internal links and anchors across docs (integrations, push, auth, protocols, API refs, etc.).
  • Replace hardcoded API key placeholders in code examples with {{API_KEY}}.
  • Update various copy/meta descriptions and remove/resolve stale TODOs and localhost URLs.

Reviewed changes

Copilot reviewed 85 out of 85 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
src/pages/docs/storage-history/storage.mdx Fix integrations links (serverless functions URL).
src/pages/docs/storage-history/history.mdx Copy tweak (“realtime”).
src/pages/docs/spaces/react.mdx Replace TODOs with concrete error-handling output in example.
src/pages/docs/push/publish.mdx Fix subscribe section linking/anchors.
src/pages/docs/push/index.mdx Fix “via channels” / recipient links and subscribe bullets.
src/pages/docs/push/getting-started/apns.mdx Fix admin/rules links.
src/pages/docs/protocols/sse.mdx Fix “publishing” link target.
src/pages/docs/protocols/pubnub.mdx Replace hardcoded key; fix continuity-loss link.
src/pages/docs/protocols/mqtt.mdx Update references to Pub/Sub SDK wording.
src/pages/docs/protocols/index.mdx Update SSE description wording.
src/pages/docs/platform/tools/cli.mdx Add missing link for typing indicators.
src/pages/docs/platform/support/index.mdx Improve meta description.
src/pages/docs/platform/products/index.mdx Fix presence link + room reactions link target.
src/pages/docs/platform/pricing/limits.mdx Fix server-side batching link target.
src/pages/docs/platform/pricing/faqs.mdx Normalize ably.com links (terms/network).
src/pages/docs/platform/integrations/webhooks/lambda.mdx Replace hardcoded API key placeholder with {{API_KEY}}.
src/pages/docs/platform/integrations/webhooks/index.mdx Fix limits anchor + example payload values.
src/pages/docs/platform/integrations/skip-integrations.mdx Add Chat-related cross-links.
src/pages/docs/platform/integrations/index.mdx Capitalization consistency for “Pub/Sub”.
src/pages/docs/platform/integrations/inbound/webhooks.mdx Fix limits anchor.
src/pages/docs/platform/index.mdx Convert absolute docs link to relative; add feature cross-links.
src/pages/docs/platform/errors/codes.mdx Fix limits anchors + improve ably-js note wording.
src/pages/docs/platform/deprecate/tls-v1-1.mdx Update copy to reflect completed sunset.
src/pages/docs/platform/deprecate/protocol-v1.mdx Update copy/meta_description post-sunset.
src/pages/docs/platform/architecture/message-ordering.mdx Copy tweak (“Realtime client library”).
src/pages/docs/platform/architecture/index.mdx Copy tweak (“client libraries”).
src/pages/docs/platform/ai-llms/llms-txt.mdx Add missing Spaces feature links.
src/pages/docs/platform/account/users.mdx Convert absolute docs URL to relative.
src/pages/docs/platform/account/control-api.mdx Fix auth anchor (#api-keys).
src/pages/docs/metadata-stats/stats.mdx Fix integrations link path.
src/pages/docs/messages/updates-deletes.mdx Replace localhost URL with relative docs URL.
src/pages/docs/livesync/postgres/quickstart.mdx Replace API key placeholder with {{API_KEY}}.
src/pages/docs/livesync/postgres/models.mdx Replace hardcoded key placeholder with {{API_KEY}}.
src/pages/docs/liveobjects/quickstart/java.mdx Replace hardcoded key placeholder with {{API_KEY}}.
src/pages/docs/getting-started/swift.mdx Fix language query params in links.
src/pages/docs/getting-started/ruby.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/react.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/react-native.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/react-hooks.mdx Replace API key placeholder with {{API_KEY}}.
src/pages/docs/getting-started/python.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/objective-c.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/node.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/kotlin.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/javascript.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/java.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/go.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/flutter.mdx Convert absolute docs URL to relative.
src/pages/docs/getting-started/dotnet.mdx Convert absolute docs URL to relative.
src/pages/docs/faq/push-faqs.mdx Remove self-referential link in APNs sandbox FAQ.
src/pages/docs/faq/index.mdx Replace hardcoded API key placeholders with {{API_KEY}}.
src/pages/docs/connect/states.mdx Update meta description; replace key placeholder.
src/pages/docs/connect/index.mdx Fix incorrect constructor syntax; fix anchors to states/channels docs.
src/pages/docs/chat/rooms/history.mdx Copy tweak (“realtime”).
src/pages/docs/chat/moderation/direct/hive-dashboard.mdx Convert absolute docs URL to relative.
src/pages/docs/chat/moderation/custom/lambda.mdx Fix missing leading slash in link.
src/pages/docs/chat/getting-started/react-ui-kit.mdx Update note wording (remove “future update” claim).
src/pages/docs/chat/external-storage-and-processing/data-extraction.mdx Fix missing closing code fence / .
src/pages/docs/channels/index.mdx Capitalization consistency for “Pub/Sub”.
src/pages/docs/auth/token/index.mdx Fix auth anchor (#api-keys); copy tweak (“realtime”).
src/pages/docs/auth/capabilities.mdx Fix auth anchor (#api-keys).
src/pages/docs/auth/basic.mdx Fix auth anchor (#api-keys).
src/pages/docs/api/token-request-spec.mdx Fix namespaces anchor in channels docs.
src/pages/docs/api/rest-sdk/types.mdx Fix privileged/skip-integrations link; update ruby-doc links to https.
src/pages/docs/api/rest-sdk/presence.mdx Fix privileged/skip-integrations link.
src/pages/docs/api/rest-sdk/messages.mdx Fix privileged/skip-integrations link.
src/pages/docs/api/rest-sdk/history.mdx Fix privileged/skip-integrations link.
src/pages/docs/api/rest-sdk/channels.mdx Convert absolute docs URL to relative; fix privileged link.
src/pages/docs/api/rest-sdk/authentication.mdx Fix auth anchor (#api-keys); normalize wording.
src/pages/docs/api/rest-sdk.mdx Update ruby-doc link to https.
src/pages/docs/api/rest-api.mdx Convert absolute docs URL to relative; replace key placeholder; remove stale TODO.
src/pages/docs/api/realtime-sdk/types.mdx Fix privileged/skip-integrations + non-fatal errors link.
src/pages/docs/api/realtime-sdk/presence.mdx Fix broken anchors/trailing dots; update links.
src/pages/docs/api/realtime-sdk/messages.mdx Fix privileged/skip-integrations link.
src/pages/docs/api/realtime-sdk/history.mdx Fix privileged/skip-integrations link.
src/pages/docs/api/realtime-sdk/encryption.mdx Fix missing leading slash in example link.
src/pages/docs/api/realtime-sdk/channels.mdx Fix transient-publish + docs links; update non-fatal errors link.
src/pages/docs/api/realtime-sdk/authentication.mdx Fix auth anchor (#api-keys).
src/pages/docs/api/realtime-sdk.mdx Update ruby-doc links to https.
src/pages/docs/api/index.mdx Update SDK reference versions; add Spaces feature links; update SSE wording.
src/pages/docs/ai-transport/index.mdx Fix “why” link target.
src/pages/docs/ai-transport/getting-started/vercel-ai-sdk.mdx Replace API key placeholder; copy tweak (“realtime”).
src/pages/docs/ai-transport/framework-guides/vercel-ai-sdk.mdx Copy tweak (“realtime”).
src/pages/docs/ai-transport/features/optimistic-updates.mdx Copy tweak (“realtime”).
src/pages/docs/ai-transport/features/history.mdx Copy tweak (“realtime”).
src/pages/docs/ai-transport/features/agent-presence.mdx Fix presence link target; copy tweaks (“realtime”).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/pages/docs/push/publish.mdx Outdated
Comment thread src/pages/docs/push/index.mdx Outdated
Comment thread src/pages/docs/api/realtime-sdk/presence.mdx Outdated
Comment thread src/pages/docs/livesync/postgres/quickstart.mdx Outdated
Comment thread src/pages/docs/ai-transport/features/agent-presence.mdx Outdated
Comment thread src/pages/docs/platform/account/users.mdx Outdated
Comment thread src/pages/docs/spaces/react.mdx
# Conflicts:
#	src/pages/docs/ai-transport/features/agent-presence.mdx
#	src/pages/docs/ai-transport/framework-guides/vercel-ai-sdk.mdx
#	src/pages/docs/ai-transport/getting-started/vercel-ai-sdk.mdx
@sacOO7
Copy link
Copy Markdown
Contributor Author

sacOO7 commented Apr 30, 2026

@claude review

const { connectionError, channelError } = useMembers();

if (connectionError) {
// TODO: handle connection errors
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Maybe better to leave TODO comment here

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I agree

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Ably documentation pages to resolve broken/internal links and anchors, standardize API key placeholders, and improve wording/metadata across multiple doc sections.

Changes:

  • Fixes/updates internal doc links, anchors, and outdated paths across docs.
  • Replaces hardcoded API key strings in code examples with {{API_KEY}}.
  • Improves doc copy/consistency (e.g., “realtime” wording, meta descriptions, and minor reference corrections).

Reviewed changes

Copilot reviewed 83 out of 83 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/pages/docs/storage-history/storage.mdx Fix serverless functions link path
src/pages/docs/storage-history/history.mdx Wording consistency (“realtime”)
src/pages/docs/spaces/react.mdx Replace TODOs with error handling
src/pages/docs/push/publish.mdx Add anchors for subscribe examples
src/pages/docs/push/index.mdx Fix links to publish sections
src/pages/docs/push/getting-started/apns.mdx Fix admin/rules links
src/pages/docs/protocols/sse.mdx Fix publishing link target
src/pages/docs/protocols/pubnub.mdx Use {{API_KEY}}, fix continuity link
src/pages/docs/protocols/mqtt.mdx Update product terminology references
src/pages/docs/protocols/index.mdx Update product terminology references
src/pages/docs/platform/tools/cli.mdx Add typing indicators link
src/pages/docs/platform/support/index.mdx Update meta description
src/pages/docs/platform/products/index.mdx Fix presence/reactions links
src/pages/docs/platform/pricing/limits.mdx Fix batching link target
src/pages/docs/platform/pricing/faqs.mdx Update ably.com URLs
src/pages/docs/platform/integrations/webhooks/lambda.mdx Replace key placeholders with {{API_KEY}}
src/pages/docs/platform/integrations/webhooks/index.mdx Fix limits anchor + examples
src/pages/docs/platform/integrations/skip-integrations.mdx Add Chat-related deep links
src/pages/docs/platform/integrations/index.mdx Capitalization consistency (“Pub/Sub”)
src/pages/docs/platform/integrations/inbound/webhooks.mdx Fix limits anchor
src/pages/docs/platform/index.mdx Fix latency link + add feature links
src/pages/docs/platform/errors/codes.mdx Fix limits anchors + clarify note
src/pages/docs/platform/deprecate/tls-v1-1.mdx Update sunset dates to past tense
src/pages/docs/platform/deprecate/protocol-v1.mdx Update sunset copy + meta
src/pages/docs/platform/architecture/message-ordering.mdx Wording: “client library”
src/pages/docs/platform/architecture/index.mdx Wording: “client libraries”
src/pages/docs/platform/ai-llms/llms-txt.mdx Add Spaces feature deep links
src/pages/docs/platform/account/users.mdx Remove duplicate “owner” step
src/pages/docs/platform/account/control-api.mdx Fix API keys anchor
src/pages/docs/metadata-stats/stats.mdx Fix integrations link
src/pages/docs/messages/updates-deletes.mdx Replace localhost link with relative
src/pages/docs/livesync/postgres/quickstart.mdx Use {{API_KEY}} in env example
src/pages/docs/livesync/postgres/models.mdx Use {{API_KEY}} in code
src/pages/docs/liveobjects/quickstart/java.mdx Use {{API_KEY}} in code
src/pages/docs/getting-started/swift.mdx Fix lang query params in links
src/pages/docs/getting-started/ruby.mdx Convert connect link to relative
src/pages/docs/getting-started/react.mdx Convert connect link to relative
src/pages/docs/getting-started/react-native.mdx Convert connect link to relative
src/pages/docs/getting-started/react-hooks.mdx Use {{API_KEY}} in example
src/pages/docs/getting-started/python.mdx Convert connect link to relative
src/pages/docs/getting-started/objective-c.mdx Convert connect link to relative
src/pages/docs/getting-started/node.mdx Convert connect link to relative
src/pages/docs/getting-started/kotlin.mdx Convert connect link to relative
src/pages/docs/getting-started/javascript.mdx Convert connect link to relative
src/pages/docs/getting-started/java.mdx Convert connect link to relative
src/pages/docs/getting-started/go.mdx Convert connect link to relative
src/pages/docs/getting-started/flutter.mdx Convert connect link to relative
src/pages/docs/getting-started/dotnet.mdx Convert connect link to relative
src/pages/docs/faq/push-faqs.mdx Remove self-referential link
src/pages/docs/faq/index.mdx Use {{API_KEY}} placeholders
src/pages/docs/connect/states.mdx Update meta + use {{API_KEY}}
src/pages/docs/connect/index.mdx Fix constructor + link anchors
src/pages/docs/chat/rooms/history.mdx Wording consistency (“realtime”)
src/pages/docs/chat/moderation/direct/hive-dashboard.mdx Fix dedicated cluster link
src/pages/docs/chat/moderation/custom/lambda.mdx Fix lambda auth doc link
src/pages/docs/chat/getting-started/react-ui-kit.mdx Update note wording
src/pages/docs/chat/external-storage-and-processing/data-extraction.mdx Fix missing code block closing
src/pages/docs/channels/index.mdx Capitalization consistency (“Pub/Sub”)
src/pages/docs/auth/token/index.mdx Fix API keys anchor + wording
src/pages/docs/auth/capabilities.mdx Fix API keys anchor
src/pages/docs/auth/basic.mdx Fix API keys anchor
src/pages/docs/api/token-request-spec.mdx Fix channel namespaces anchor
src/pages/docs/api/rest-sdk/types.mdx Update privileged docs link + ruby-doc HTTPS
src/pages/docs/api/rest-sdk/presence.mdx Update privileged docs link
src/pages/docs/api/rest-sdk/messages.mdx Update privileged docs link
src/pages/docs/api/rest-sdk/history.mdx Update privileged docs link
src/pages/docs/api/rest-sdk/channels.mdx Convert docs URL to relative
src/pages/docs/api/rest-sdk/authentication.mdx Fix API keys anchor references
src/pages/docs/api/rest-sdk.mdx Update ruby-doc HTTPS
src/pages/docs/api/rest-api.mdx Convert docs URL to relative + use {{API_KEY}}
src/pages/docs/api/realtime-sdk/types.mdx Update privileged docs link + channel errors link
src/pages/docs/api/realtime-sdk/presence.mdx Fix multiple links/anchors (see comments)
src/pages/docs/api/realtime-sdk/messages.mdx Update privileged docs link
src/pages/docs/api/realtime-sdk/history.mdx Update privileged docs link
src/pages/docs/api/realtime-sdk/encryption.mdx Fix missing leading slash in link
src/pages/docs/api/realtime-sdk/channels.mdx Update transient publish + docs URL
src/pages/docs/api/realtime-sdk/authentication.mdx Fix API keys anchor references
src/pages/docs/api/realtime-sdk.mdx Update ruby-doc HTTPS
src/pages/docs/api/index.mdx Update SDK reference version links
src/pages/docs/ai-transport/getting-started/vercel-ai-sdk.mdx Use {{API_KEY}} + “realtime” wording
src/pages/docs/ai-transport/features/optimistic-updates.mdx Wording consistency (“realtime”)
src/pages/docs/ai-transport/features/history.mdx Wording consistency (“realtime”)
src/pages/docs/ai-transport/features/agent-presence.mdx Fix typos + Presence links

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

### <If lang="javascript,nodejs,java,objc,swift">enterClient</If><If lang="ruby">enter_client</If><If lang="csharp">EnterClientAsync</If> <a id="enter-client" />

Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#presence-multiple-client-id) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys,) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id.)
Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id.)
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The external FAQ link has a trailing period inside the URL (...wildcard-client-id.), which will break the link target. Remove the trailing . so the URL resolves correctly.

Suggested change
Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id.)
Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id).

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I agree with this one, and then the link at the top of this diff should probably get the period (.) added at the end of the line

### <If lang="flutter,javascript,nodejs,java,objc,swift">leaveClient</If><If lang="ruby">leave_client</If><If lang="csharp">LeaveClientAsync</If> <a id="leave-client" />

Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#presence-multiple-client-id) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client.)
Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client.)
Copy link

Copilot AI Apr 30, 2026

Choose a reason for hiding this comment

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

The internal link to the enterClient section includes a trailing period in the fragment (#enter-client.), which will prevent the anchor from resolving. Update it to #enter-client.

Suggested change
Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client.)
Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client)

Copilot uses AI. Check for mistakes.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

Copy link
Copy Markdown
Member

@kennethkalmer kennethkalmer left a comment

Choose a reason for hiding this comment

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

Nice work @sacOO7! I found a few small things, I hope you can just point Claudius at my comments and it will do the right thing.

I also wonder if you shouldn't ask it to update the AGENTS.md file with some learnings from this session, including things like "Links to /docs should never include ably.com", and "Consistently use {{API_KEY}} in code samples...". Let it do the updates, it will go a long way in helping others going forward.

### <If lang="javascript,nodejs,java,objc,swift">enterClient</If><If lang="ruby">enter_client</If><If lang="csharp">EnterClientAsync</If> <a id="enter-client" />

Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#presence-multiple-client-id) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys,) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id.)
Enter this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to be able to publish presence changes for arbitrary client IDs, the client library must have been instantiated either with an [API key](/docs/auth#api-keys) or with a [token bound to a wildcard client ID](https://faqs.ably.com/can-a-client-emulate-any-client-id-i.e.-authenticate-using-a-wildcard-client-id.)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I agree with this one, and then the link at the top of this diff should probably get the period (.) added at the end of the line

### <If lang="flutter,javascript,nodejs,java,objc,swift">leaveClient</If><If lang="ruby">leave_client</If><If lang="csharp">LeaveClientAsync</If> <a id="leave-client" />

Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#presence-multiple-client-id) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client.)
Leave this presence channel for the given <If lang="flutter,javascript,nodejs,java,swift,objc">`clientId`</If><If lang="ruby">`client_id`</If><If lang="csharp">`ClientId`</If>. This method is provided to support typically server instances that act on behalf of multiple client IDs. See [Managing multiple client IDs](/docs/presence-occupancy/presence#multiple-client-ids) for more info. In order to leave the presence set of a channel, the client must have already [entered and been present](#enter-client.)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

👍

<If lang="javascript,nodejs">

`Presence` `action` is a String with a value matching any of the [`Realtime Presence` states & events](/docs/presence-occupancy/presence#trigger-events.)
`Presence` `action` is a String with a value matching any of the [`Realtime Presence` states & events](/docs/presence-occupancy/presence#trigger-events)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Think all of these need a spot-check in the browser to see if the missing periods (.) leave the sentences hanging, relative to other content on the page.

Comment on lines +2043 to +2044
| :log_level | Log level for the standard Logger that outputs to `STDOUT`. Can be set to `:fatal`, `:error`, `:warn`, `:info`, `:debug` or `:none`. Alternatively a [`Logger` severity constant](https://ruby-doc.org/stdlib-2.2.0/libdoc/logger/rdoc/Logger.html#class-Logger-label-Description) can be specified<br />**Default:** `:error` | `Symbol`, [`Logger::SEVERITY`](https://ruby-doc.org/stdlib-2.2.0/libdoc/logger/rdoc/Logger.html#class-Logger-label-Description) |
| :logger | A [Ruby `Logger`](https://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) compatible object to handle each line of log output. If `logger` is not specified, `STDOUT` is used<br />**Default:** `STDOUT Logger` | [Ruby `Logger`](https://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Comment on lines +2001 to +2002
| :log_level | Log level for the standard Logger that outputs to `STDOUT`. Can be set to `:fatal`, `:error`, `:warn`, `:info`, `:debug` or `:none`. Alternatively a [`Logger` severity constant](https://ruby-doc.org/stdlib-2.2.0/libdoc/logger/rdoc/Logger.html#class-Logger-label-Description) can be specified. The default is `:error`. | `Symbol`, [`Logger::SEVERITY`](https://ruby-doc.org/stdlib-2.2.0/libdoc/logger/rdoc/Logger.html#class-Logger-label-Description) |
| :logger | A [Ruby `Logger`](https://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) compatible object to handle each line of log output. If `logger` is not specified, `STDOUT` is used. The default is `STDOUT Logger`. | [Ruby `Logger`](https://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same update to the Ruby links as before

| :transport_params | Optional. Can be used to pass in arbitrary connection parameters, such as [`heartbeatInterval`](/docs/connect#heartbeats) and [`remainPresentFor`](/docs/presence-occupancy/presence#unstable-connections) | `Hash` |
| :log_level | A number controlling the verbosity of the log output of the library. Valid values are: 0 (no logs), 1 (errors only), 2 (errors plus connection and channel state changes), 3 (high-level debug output), and 4 (full debug output). | `Integer` |
| :logger | A Ruby [`Logger`](http://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) compatible object to handle each line of log output. If `logger` is not specified, `STDOUT` is used. | `STDOUT Logger` |
| :logger | A Ruby [`Logger`](https://ruby-doc.org/stdlib-1.9.3/libdoc/logger/rdoc/Logger.html) compatible object to handle each line of log output. If `logger` is not specified, `STDOUT` is used. | `STDOUT Logger` |
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Same Ruby link updates as before


* Understand [token authentication](/docs/auth/token) before going to production.
* Understand how to effectively [manage connections](https://ably.com/docs/connect#close?lang=ruby).
* Understand how to effectively [manage connections](/docs/connect#close?lang=ruby).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

href should be /docs/connect?lang=ruby#close (anchor following the query param)

* Understand [token authentication](/docs/auth/token) before going to production.
* Understand how to effectively [manage connections](https://ably.com/docs/connect#close?lang=ruby).
* Explore more [advanced](/docs/pub-sub/advanced?lang=ruby) Pub/Sub concepts.
* Understand how to effectively [manage connections](/docs/connect#close?lang=swift).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

href should be /docs/connect?lang=swift#close (anchor following the query param)


#### Conflation <a id="update-conflation"/>

Ably may opportunistically discard out of date updates to a given message, for example, during a serverside batching step, or within a [rewind](/docs/channels/options/rewind) backlog. This means subscribers are not guaranteed to receive every intermediate update if multiple updates occur in quick succession, but it is guaranteed that the last update that they receive will represent the most recent version of the message (matching the version that will be eventually retrievable by a history or [getMessage()](http://localhost:8000/docs/messages/updates-deletes#get) request).
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

💀

const { connectionError, channelError } = useMembers();

if (connectionError) {
// TODO: handle connection errors
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I agree

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants