Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,20 @@

All notable changes are documented here.

## [0.7.8] - 2026-09-12

### Changed

- Reuse validated Candid values during encoding and scan sorted record fields linearly during reply projection.
- Avoid repeated keyword-set allocation in the Swift binding generator and rebuild both bundled macOS architectures.
- Remove unused internal functions, parameters, and unreachable branches.
- Consolidate redundant tests, remove real polling waits from transport tests, and replace ineffective delegation-limit and OID cases with otherwise-valid inputs. Verify shared decoding budgets with smaller fixtures.
- Compile the plugin fixture in the renamed-checkout CI job without repeating its runtime tests.

### Compatibility

- Public APIs, accepted inputs, session storage, wire formats, generated Swift output, and default limits are unchanged. The bundled generator remains version 0.1.3.

## [0.7.7] - 2026-09-09

### Added
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ICNativeClient

ICNativeClient is a Swift package for calling Internet Computer canisters from native Apple applications. Version 0.7.7 adds expiring delegated sessions from existing Ed25519 keys without retaining the root secret.
ICNativeClient is a Swift package for calling Internet Computer canisters from native Apple applications. Version 0.7.8 improves Candid processing and binding generation while preserving public APIs and wire formats.

It includes principal/account helpers, a Candid DIDL codec, explicit Swift model conversion, and raw Candid-byte transport.

Expand Down Expand Up @@ -312,6 +312,10 @@ let sharedStore = ICIdentityStore(

Every participating target must include that access group in its Keychain Sharing entitlement. ICNativeClient does not migrate items between access groups or from application-specific storage formats. If the shared item is initially absent, authenticate and save the session from the main application before an extension attempts to load it. An invalid access group or missing entitlement is reported as `ICClientError.keychainFailure`.

## New in 0.7.8

0.7.8 is a backward-compatible patch release. Candid encoding reuses validated values, record projection uses a linear field scan, and binding generation avoids repeated keyword-set allocation. Redundant tests and unused internals have been removed, while delegation limits, signature validation, and shared decoding budgets retain focused regression checks. Public APIs, accepted inputs, session storage, wire formats, and default limits are unchanged. The bundled generator remains version 0.1.3, with rebuilt arm64 and x86_64 binaries and unchanged generated Swift output.

## New in 0.7.7

0.7.7 adds `ICAuthSession.delegating(ed25519PrivateKey:configuration:options:)` for applications that already own an Ed25519 identity. Each call creates a fresh session key and signed delegation, with existing lifetime and target validation. The root secret is not retained in the session or Keychain record. Existing session storage and wire formats are unchanged; the bundled generator remains version 0.1.3.
Expand Down