You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 09e66e6
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: .claude/instructions.md
+17Lines changed: 17 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,6 +9,23 @@ Your job is to maintain parity with the API to ensure that the SDK supports all
9
9
10
10
When asked to add support for a new feature, query parameter, or API endpoint, follow this workflow:
11
11
12
+
### 0. Analyse Backward Compatibility FIRST (before proposing any plan)
13
+
14
+
Before writing a plan or touching any code, explicitly analyse whether the proposed changes are backward compatible for existing SDK consumers (both Kotlin and Java).
15
+
16
+
Check all of the following:
17
+
-**Source compatibility (Kotlin)**: Does changing a type (e.g. `String` → `String?`) break existing call sites that assume non-nullability?
18
+
-**Source compatibility (Java)**: Does the change affect compiled Java code that uses the SDK?
19
+
-**Binary compatibility (JVM)**: Does the bytecode signature of any public method change?
20
+
-**Constructor/data class compatibility**: Does changing a field's type or default break existing construction patterns?
21
+
22
+
If the change is **NOT** backward compatible, output this warning in your response before anything else:
23
+
24
+
> # ⚠️ WARNING: THIS CHANGE IS NOT BACKWARD COMPATIBLE ⚠️
25
+
> Existing SDK consumers will be broken. Do not proceed without explicit user approval or a backward-compatible alternative.
26
+
27
+
If a backward-compatible alternative exists (e.g. using `String = ""` instead of `String?` to keep Moshi happy while preserving non-nullability), prefer it and explain why.
28
+
12
29
### 1. Understand the Codebase
13
30
- Scan the project structure
14
31
- Understand the architecture and how it's organized
Copy file name to clipboardExpand all lines: CHANGELOG.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,6 +20,7 @@
20
20
*`metadataPair` field on `ListMessagesQueryParams` (and its `Builder`) for filtering messages by metadata key-value pairs via the `metadata_pair` query parameter. (#319)
21
21
22
22
### Fixed
23
+
*`Folder.id` and `Folder.grantId` now default to empty strings so deserialization no longer fails when either field is absent from the API response due to the `select` query parameter
23
24
*`ConferencingProvider`, `CreateEventAutoConferencingProvider`, and `CreateEventManualConferencingProvider` now deserialize to `null` instead of throwing a `JsonDataException` when the API returns an unrecognized provider name (e.g. `"Hangouts"`). (#320)
24
25
*`url`, `originalErrorMessage`, and `timeout` are now exposed as readable properties on `NylasSdkRemoteClosedError` and `NylasSdkTimeoutError`. (#320)
25
26
* Thread IDs containing `/` are now URL-encoded before being interpolated into request paths, preventing malformed URLs when using `Threads.find()`, `update()`, or `destroy()`. (#318)
0 commit comments