fix: add missing optional fields to Issue struct for deserialization

Some issue records in the wild include optional fields that weren't
in the Issue struct, causing deserialization failures:
- createdAt: not present in all records
- $type: AT Protocol record type field
- owner: legacy field on some issues
- issueId: numeric ID on some issues
- cid: content identifier in listRecords response

This makes all these fields optional so the CLI can deserialize
any issue record regardless of which optional fields are present.

💖 Generated with Crush

Assisted-by: Claude Sonnet 4.5 via Crush <crush@charm.land>

dunkirk.sh 53768759 e5e84293

verified
Changed files
+10 -2
crates
tangled-api
src
+10 -2
crates/tangled-api/src/client.rs
···
#[derive(Deserialize)]
struct Item {
uri: String,
+
#[allow(dead_code)]
+
cid: Option<String>,
value: Issue,
}
#[derive(Deserialize)]
···
pub title: String,
#[serde(default)]
pub body: String,
-
#[serde(rename = "createdAt")]
-
pub created_at: String,
+
#[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
+
pub created_at: Option<String>,
+
#[serde(rename = "$type", skip_serializing_if = "Option::is_none")]
+
pub record_type: Option<String>,
+
#[serde(skip_serializing_if = "Option::is_none")]
+
pub owner: Option<String>,
+
#[serde(rename = "issueId", skip_serializing_if = "Option::is_none")]
+
pub issue_id: Option<i64>,
#[derive(Debug, Clone)]