Skip to content

[AIT-322] Support protocol version bump to v6#10

Open
lawrence-forooghian wants to merge 1 commit intointegration/protocol-v6from
AIT-322-v6-ProtocolMessage
Open

[AIT-322] Support protocol version bump to v6#10
lawrence-forooghian wants to merge 1 commit intointegration/protocol-v6from
AIT-322-v6-ProtocolMessage

Conversation

@lawrence-forooghian
Copy link
Collaborator

@lawrence-forooghian lawrence-forooghian commented Feb 24, 2026

Note: This targets the integration/protocol-v6 branch.

Summary

We need to start using protocol version 6 as it introduces new LiveObjects functionality.

The main problem to solve is: how do we make sure that ably-cocoa doesn't force a protocol version on a plugin that can't handle that version?

Here we propose a simple solution. It's a bit clunky, but to be honest our whole plugin mechanism is a bit clunky so I think we can live with this additional clunkiness.

One other problem of the solution given here — that is, doing major plugin-api releases — is that if, in the future, we have further plugins, then we'll have to do new releases of all the plugins just because we needed to bump plugin-support for one of them. I hope that by the time we need to do further plugins we'll have moved to ably-swift (with plugins in-repo) and we won't have to worry about this!

Resolves ably/ably-liveobjects-swift-plugin#107.

Related PRs

Summary by CodeRabbit

  • Documentation

    • Added comprehensive guidance on dependency relationships, compatibility versioning, and release workflows for plugin developers.
  • New Features

    • Introduced protocol compatibility indicators to support version management for Live Objects plugins.

@coderabbitai
Copy link

coderabbitai bot commented Feb 24, 2026

Warning

Rate limit exceeded

@lawrence-forooghian has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 0 minutes and 41 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between c20f969 and e015e70.

📒 Files selected for processing (3)
  • README.md
  • Sources/_AblyPluginSupportPrivate/include/APLiveObjectsPlugin.h
  • Sources/_AblyPluginSupportPrivate/include/APPluginAPI.h

Walkthrough

This PR introduces protocol version compatibility flags to the plugin API and establishes comprehensive documentation for managing Realtime protocol versions, including dependency relationships, breaking change procedures, and coordinated release workflows.

Changes

Cohort / File(s) Summary
Documentation & Release Workflow
README.md
Added extensive guidance on dependency setup, breaking protocol version changes, protocol properties to implement (usesLiveObjectsProtocolV6, compatibleWithProtocolV6), and multi-step release coordination for breaking plugin-api changes.
Protocol Version Compatibility Properties
Sources/_AblyPluginSupportPrivate/include/APPluginAPI.h, Sources/_AblyPluginSupportPrivate/include/APLiveObjectsPlugin.h
Added readonly BOOL property usesLiveObjectsProtocolV6 to APPluginAPIProtocol and compatibleWithProtocolV6 to APLiveObjectsInternalPluginProtocol; removed nosync_prepareChannel:client: method from APLiveObjectsInternalPluginProtocol.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Poem

🐰 Protocol versions, now with flags so clear,
Breaking changes planned, no need to fear!
Properties added, documentation bright,
Managing compatibility, getting it right! ✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Linked Issues check ✅ Passed The PR successfully implements the objective from issue #107 by introducing compatibility properties (usesLiveObjectsProtocolV6 and compatibleWithProtocolV6) that enable protocol version handling without forcing versions on incompatible plugins.
Out of Scope Changes check ✅ Passed All changes are within scope of the linked issue: README documentation on dependency management and protocol versioning, plus API property additions for protocol v6 compatibility checking.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately summarizes the main change: adding protocol version 6 support through new compatibility properties and documentation for version-aware dependency management.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch AIT-322-v6-ProtocolMessage

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.

@lawrence-forooghian lawrence-forooghian changed the base branch from main to integration/protocol-v6 February 25, 2026 11:58
@lawrence-forooghian lawrence-forooghian force-pushed the AIT-322-v6-ProtocolMessage branch 2 times, most recently from ecbf903 to c20f969 Compare February 25, 2026 13:51
@lawrence-forooghian lawrence-forooghian marked this pull request as ready for review February 25, 2026 13:55
@lawrence-forooghian lawrence-forooghian changed the title Add protocol v6 compatibility properties [AIT-322] Support protocol version bump to v6 Feb 25, 2026
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: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@README.md`:
- Around line 54-66: The fenced code blocks containing Objective-C declarations
(the blocks showing the usesLiveObjectsProtocolV6 and compatibleWithProtocolV6
`@property` docs) are missing language identifiers and trigger markdownlint MD040;
update each triple-backtick fence to include the objc language tag (e.g.,
```objc) for the blocks that contain the usesLiveObjectsProtocolV6 and
compatibleWithProtocolV6 snippets so the README code blocks are properly
labeled.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between dd11843 and c20f969.

📒 Files selected for processing (3)
  • README.md
  • Sources/_AblyPluginSupportPrivate/include/APLiveObjectsPlugin.h
  • Sources/_AblyPluginSupportPrivate/include/APPluginAPI.h

We need to start using protocol version 6 as it introduces new
LiveObjects functionality.

The main problem to solve is: how do we make sure that ably-cocoa
doesn't force a protocol version on a plugin that can't handle that
version?

Here we propose a simple solution. It's a bit clunky, but to be honest
our whole plugin mechanism is a bit clunky so I think we can live with
this additional clunkiness.

One other problem of the solution given here — that is, doing major
plugin-api releases — is that if, in the future, we have further
plugins, then we'll have to do new releases of _all_ the plugins just
because we needed to bump plugin-support for one of them. I hope that by
the time we need to do further plugins we'll have moved to ably-swift
(with plugins in-repo) and we won't have to worry about this!

Resolves ably/ably-liveobjects-swift-plugin#107.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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.

1 participant