| 2026-10-02 14:52 | privacy: align current product declarations | triesap | 25 | +644 | -122 |
| 2026-10-02 14:26 | diagnostics: bound and sanitize support evidence | triesap | 17 | +516 | -97 |
| 2026-10-02 13:20 | ios: localize typed values without wire drift | triesap | 10 | +197 | -12 |
| 2026-10-02 12:58 | foundation: adopt published bounded ingress repair | triesap | 11 | +329 | -320 |
| 2026-10-02 10:00 | ios: qualify current product accessibility | triesap | 36 | +1330 | -238 |
| 2026-10-01 20:13 | ios: complete permission and recovery affordances | triesap | 21 | +414 | -66 |
| 2026-10-01 19:09 | safety: propagate visibility policy across surfaces | triesap | 42 | +1608 | -331 |
| 2026-10-01 17:52 | ios: clarify public publication and location consent | triesap | 9 | +131 | -11 |
| 2026-10-01 17:21 | ios: retain navigation during durable publication | triesap | 9 | +168 | -11 |
| 2026-10-01 16:39 | identity: sequence local and remote removal safely | triesap | 29 | +1238 | -312 |
| 2026-09-24 18:03 | identity: preserve custody through alignment recovery | triesap | 17 | +523 | -67 |
| 2026-09-24 16:50 | identity: adopt verified AppleKit custody recovery | triesap | 7 | +16 | -16 |
| 2026-09-24 04:53 | storage: protect pending work under disk pressure | triesap | 74 | +2530 | -1552 |
| 2026-09-22 12:46 | restore: reconcile historical publication before delivery | triesap | 68 | +4625 | -539 |
| 2026-09-22 08:16 | backup: capture owner-verified application state | triesap | 43 | +2814 | -492 |
| 2026-09-22 02:46 | storage: qualify interrupted migration recovery | triesap | 11 | +179 | -66 |
| 2026-09-22 01:11 | storage: preserve state on incompatible migration | triesap | 17 | +588 | -361 |
| 2026-09-21 23:36 | ios: report evidence-backed publication stages | triesap | 19 | +371 | -121 |
| 2026-09-21 23:05 | availability: preserve exact shared announcement semantics | triesap | 18 | +527 | -52 |
| 2026-09-21 22:08 | retraction: enforce author and target authority | triesap | 28 | +1482 | -410 |
| 2026-09-21 19:52 | revision: handle replacement timestamps and skew | triesap | 24 | +746 | -185 |
| 2026-09-21 19:07 | revision: serialize local addressable replacements | triesap | 61 | +2639 | -652 |
| 2026-09-21 16:02 | revision: expose recoverable partial outcomes | triesap | 44 | +1465 | -426 |
| 2026-09-21 15:06 | revision: gate retraction by target replacement evidence | triesap | 19 | +1521 | -520 |
| 2026-09-21 11:48 | revision: prepare ordered regular-post replacement | triesap | 45 | +1418 | -499 |
| 2026-09-21 10:55 | delivery: retain late acceptance after cancellation | triesap | 8 | +80 | -26 |
| 2026-09-21 10:28 | delivery: preserve intent after retry exhaustion | triesap | 36 | +1474 | -399 |
| 2026-09-21 08:51 | delivery: retain scoped target outcomes | triesap | 34 | +1319 | -386 |
| 2026-09-21 07:19 | delivery: admit only persisted signed artifacts | triesap | 12 | +368 | -330 |
| 2026-09-21 05:44 | ios: expose operation-scoped recovery actions | triesap | 28 | +480 | -81 |
| 2026-09-21 05:03 | recovery: bound scheduling and resume on unlock | triesap | 31 | +1092 | -123 |
| 2026-09-21 04:06 | media: renew expired attempts after reconciliation | triesap | 51 | +2014 | -564 |
| 2026-09-20 14:53 | recovery: reconcile native execution before retry | triesap | 20 | +436 | -73 |
| 2026-09-20 14:21 | recovery: isolate transfer faults from add startup | triesap | 42 | +1339 | -165 |
| 2026-09-20 13:34 | recovery: settle already-verified native transfers | triesap | 23 | +315 | -173 |
| 2026-09-20 12:59 | recovery: complete unverified native upload receipts | triesap | 39 | +1830 | -180 |
| 2026-09-20 12:02 | recovery: classify cross-boundary receipt states | triesap | 10 | +496 | -52 |
| 2026-09-20 11:19 | recovery: enumerate authoritative pending work | triesap | 34 | +1238 | -142 |
| 2026-09-20 10:32 | media: collect only unreferenced staged objects | triesap | 41 | +2271 | -396 |
| 2026-09-20 09:25 | deps: adopt bounded authored-row producer | triesap | 10 | +308 | -308 |
| 2026-09-20 08:05 | deps: adopt verified native file maintenance | triesap | 7 | +16 | -16 |
| 2026-09-20 07:29 | deps: adopt all-schema draft inventory producer | triesap | 10 | +308 | -308 |
| 2026-09-20 05:01 | deps: adopt verified native admission cleanup | triesap | 7 | +16 | -16 |
| 2026-09-20 04:10 | media: preserve shared inbound cache ownership | triesap | 17 | +946 | -133 |
| 2026-09-20 02:17 | deps: adopt bounded projection inventory producer | triesap | 11 | +322 | -321 |
| 2026-09-19 19:14 | media: enforce visibility before remote retrieval | triesap | 11 | +733 | -283 |
| 2026-09-19 18:46 | media: select only enforceable uploader policies | triesap | 9 | +132 | -30 |
| 2026-09-19 18:12 | media: preserve exact upload authorization scope | triesap | 17 | +771 | -216 |
| 2026-09-19 17:30 | media: verify exact prepared upload bytes | triesap | 11 | +219 | -75 |
| 2026-09-15 20:13 | media: bind staged bytes to durable draft ownership | triesap | 20 | +388 | -38 |
| 2026-09-15 02:37 | tera: adopt reviewed native platform hardening | triesap | 35 | +853 | -174 |
| 2026-09-14 23:50 | publication: preserve frozen policy across configuration changes | triesap | 54 | +2461 | -703 |
| 2026-09-14 18:33 | publication: preserve effect evidence after stop requests | triesap | 43 | +1698 | -325 |
| 2026-09-14 17:37 | foundation: adopt durable delivery reconciliation | triesap | 12 | +339 | -327 |
| 2026-09-14 10:55 | publication: reconcile local admission idempotently | triesap | 27 | +1079 | -142 |
| 2026-09-14 10:08 | publication: reconcile ambiguous signing outcomes | triesap | 24 | +1238 | -468 |
| 2026-09-13 16:48 | publication: qualify signed artifact durability | triesap | 13 | +733 | -323 |
| 2026-09-13 15:48 | publication: qualify durable signing preparation | triesap | 10 | +344 | -48 |
| 2026-09-13 05:43 | ios: submit sealed publication intents | triesap | 79 | +4193 | -1025 |
| 2026-09-12 21:03 | publication: Recover scoped media on the original operation | triesap | 29 | +2126 | -496 |
| 2026-09-12 18:57 | publication: Advance exact scoped submission operations | triesap | 18 | +1205 | -141 |
| 2026-09-12 18:20 | publication: Commit submission association atomically | triesap | 24 | +1983 | -212 |
| 2026-09-12 17:28 | foundation: Adopt atomic waiting intent support | triesap | 10 | +308 | -308 |
| 2026-09-12 14:46 | publication: Seal captured composer intent | triesap | 20 | +1189 | -144 |
| 2026-09-11 19:43 | publication: Reserve stable submission identity | triesap | 40 | +2294 | -162 |
| 2026-09-10 20:29 | tera: Apply qualified authored-write durability | triesap | 17 | +792 | -312 |
| 2026-09-10 18:43 | compose: Retain local media without network | triesap | 16 | +494 | -116 |
| 2026-09-10 18:11 | compose: Protect dirty work during navigation | triesap | 23 | +983 | -146 |
| 2026-09-10 17:07 | compose: Restore scoped editing independently of recovery | triesap | 48 | +2271 | -439 |
| 2026-09-10 16:00 | compose: Coalesce saves with monotonic edit sequence | triesap | 24 | +915 | -230 |
| 2026-09-10 15:26 | ffi: Expose typed composer persistence | triesap | 38 | +2470 | -238 |
| 2026-09-10 14:11 | compose: Enforce revision-checked durable saves | triesap | 14 | +1058 | -99 |
| 2026-09-10 13:44 | compose: Install governed draft persistence | triesap | 13 | +990 | -61 |
| 2026-09-10 13:08 | compose: Model bounded incomplete drafts | triesap | 12 | +870 | -52 |
| 2026-09-10 12:43 | tera: Adopt governed persistence capability | triesap | 14 | +484 | -342 |
| 2026-09-10 11:02 | calendar: Qualify current shared wire fixtures | triesap | 12 | +619 | -60 |
| 2026-09-10 10:32 | calendar: Freeze relevance context in paging | triesap | 65 | +2311 | -904 |
| 2026-09-10 09:49 | ios: Preserve calendar input semantics | triesap | 21 | +534 | -134 |
| 2026-09-10 09:22 | ios: Render civil calendar dates directly | triesap | 15 | +368 | -50 |
| 2026-09-10 09:00 | ffi: Preserve typed calendar timing | triesap | 31 | +624 | -197 |
| 2026-09-10 08:23 | calendar: Rebuild typed timing projections safely | triesap | 20 | +1257 | -257 |
| 2026-09-10 04:32 | calendar: Distinguish civil dates from instants | triesap | 19 | +892 | -186 |
| 2026-09-10 03:58 | today: Bound rendering and cached query work | triesap | 24 | +1445 | -164 |
| 2026-09-10 03:14 | today: Preserve feed position across updates | triesap | 43 | +1163 | -332 |
| 2026-09-10 02:42 | today: Qualify canonical replacement and deletion | triesap | 14 | +798 | -349 |
| 2026-09-10 01:44 | today: Verify direct ingestion before canonical storage | triesap | 9 | +553 | -53 |
| 2026-09-10 01:28 | today: Recover late events with bounded overlap | triesap | 50 | +1778 | -856 |
| 2026-09-10 00:14 | today: Preserve bounded relay refresh evidence across native layers | triesap | 52 | +2124 | -657 |
| 2026-09-09 18:24 | today: recover stale cursors without mixed pages | triesap | 21 | +294 | -95 |
| 2026-09-09 17:43 | today: enforce scoped deterministic keyset paging | triesap | 13 | +738 | -121 |
| 2026-09-09 17:08 | today: bound cursor input before allocation | triesap | 9 | +213 | -58 |
| 2026-09-09 16:51 | today: make context transitions presentation atomic | triesap | 11 | +293 | -40 |
| 2026-09-09 16:28 | ios: decouple local product startup from refresh | triesap | 10 | +349 | -72 |
| 2026-09-09 16:06 | today: render local data before network refresh | triesap | 14 | +347 | -60 |
| 2026-09-09 15:41 | today: separate content availability from refresh | triesap | 20 | +464 | -129 |
| 2026-09-09 15:09 | ffi: qualify runtime scope and resource portability | triesap | 31 | +2131 | -83 |
| 2026-09-09 14:16 | ios: make opened media lifetime explicit | triesap | 11 | +171 | -27 |
| 2026-09-09 13:42 | ffi: own media descriptors before asynchronous use | triesap | 27 | +900 | -215 |
| 2026-09-09 12:50 | ios: resnapshot recovered observers and coalesce updates | triesap | 15 | +608 | -66 |
| 2026-09-09 12:12 | runtime: signal observer gaps under backpressure | triesap | 25 | +790 | -182 |
| 2026-09-09 11:29 | runtime: revision scope-bound invalidations | triesap | 36 | +1113 | -269 |
| 2026-09-09 10:29 | ios: reject stale scoped asynchronous results | triesap | 27 | +1679 | -715 |
| 2026-09-09 09:22 | runtime: make shutdown resumable and fail closed | triesap | 38 | +1399 | -373 |
| 2026-09-09 08:18 | runtime: reserve mutation admission before awaiting | triesap | 26 | +1979 | -867 |
| 2026-09-09 07:27 | runtime: settle abandoned resource creation | triesap | 21 | +872 | -204 |
| 2026-09-09 06:44 | runtime: close task installation cancellation race | triesap | 8 | +305 | -153 |
| 2026-09-09 06:19 | runtime: type recovery and retry decisions | triesap | 30 | +1044 | -156 |
| 2026-09-09 05:38 | runtime: separate durable ids from session generations | triesap | 27 | +715 | -420 |
| 2026-09-09 04:40 | tera: qualify standalone ownership cutover | triesap | 11 | +184 | -78 |
| 2026-09-08 23:02 | tera: guard intentional legacy identifiers | triesap | 30 | +5075 | -181 |
| 2026-09-08 22:25 | tera: verify the real application dependency graph | triesap | 19 | +368 | -304 |
| 2026-09-08 21:18 | tera: refresh app icon variants from the governed palette | triesap | 4 | +1 | -1 |
| 2026-09-08 21:07 | tera: cut over native app naming and owned ffi | triesap | 209 | +26888 | -22168 |
| 2026-09-08 20:11 | tera: build native artifacts from owned rust | triesap | 15 | +839 | -3 |
| 2026-09-08 19:35 | tera: bind ffi provenance to its application producer | triesap | 11 | +764 | -0 |
| 2026-09-08 19:12 | tera: relocate the non-default wasm wrapper | triesap | 14 | +1742 | -24 |
| 2026-09-08 19:05 | tera: own the application binding generator | triesap | 8 | +1673 | -1 |
| 2026-09-08 19:00 | tera: own the application ffi producer | triesap | 29 | +12266 | -226 |
| 2026-09-08 18:42 | tera: own the shared application core locally | triesap | 33 | +18402 | -1 |
| 2026-09-08 17:51 | tera: capture current product equivalence | triesap | 3 | +101 | -0 |
| 2026-09-08 17:25 | tera: pin migration compatibility fixtures | triesap | 6 | +283 | -0 |
| 2026-09-08 17:09 | tera: anchor approved application ownership | triesap | 4 | +211 | -4 |
| 2026-09-01 04:34 | ios: ratchet maintainability debt | triesap | 16 | +1012 | -269 |
| 2026-09-01 03:47 | test(ios): structure package contract verification | triesap | 4 | +636 | -300 |
| 2026-09-01 02:34 | fix(ios): redact qualification authorization evidence | triesap | 7 | +345 | -72 |
| 2026-09-01 02:17 | fix(ios): validate clocks and state generations | triesap | 19 | +366 | -55 |
| 2026-09-01 02:02 | fix(ios): govern user-facing error messages | triesap | 22 | +605 | -118 |
| 2026-08-31 23:20 | test(ios): stabilize settings navigation | triesap | 1 | +29 | -18 |
| 2026-08-31 22:41 | test(ios): normalize simulator evidence | triesap | 2 | +29 | -2 |
| 2026-08-31 21:53 | test(ios): bind exported persona evidence | triesap | 3 | +46 | -10 |
| 2026-08-31 21:02 | test(ios): observe stable prepared media | triesap | 1 | +1 | -10 |
| 2026-08-31 20:52 | test(ios): harden persona evidence verifier | triesap | 10 | +545 | -75 |
| 2026-08-31 20:26 | ios: measure persona network evidence | triesap | 9 | +610 | -131 |
| 2026-08-31 19:55 | ios: bind deterministic persona attempt evidence | triesap | 9 | +1536 | -12 |
| 2026-08-31 19:04 | ios: enforce canonical BUD-11 fixture admission | triesap | 6 | +567 | -11 |
| 2026-08-31 18:43 | ios: isolate qualification identity authority | triesap | 6 | +97 | -16 |
| 2026-08-29 05:18 | ios: qualify local-social development candidate | triesap | 43 | +1544 | -1311 |
| 2026-08-29 03:08 | test: bind persona evidence to xcresult | triesap | 2 | +115 | -8 |
| 2026-08-29 02:22 | ios: separate contrast and persona audits | triesap | 1 | +19 | -28 |
| 2026-08-29 01:31 | ios: harden persona settings navigation | triesap | 1 | +9 | -3 |
| 2026-08-29 01:28 | ios: constrain native picker audit handling | triesap | 1 | +25 | -0 |
| 2026-08-29 00:35 | ios: restore Add picker contrast | triesap | 1 | +1 | -0 |
| 2026-08-28 23:33 | test: rely on observable retry recovery | triesap | 1 | +1 | -7 |
| 2026-08-28 22:42 | test: admit exact persona audit evidence | triesap | 1 | +4 | -3 |
| 2026-08-28 21:59 | test: preserve persona retry evidence | triesap | 3 | +98 | -9 |
| 2026-08-28 21:18 | test: direct Add form scrolling toward targets | triesap | 1 | +14 | -5 |
| 2026-08-28 20:34 | test: admit fast Add operation settlement | triesap | 1 | +1 | -3 |
| 2026-08-28 20:27 | ios: expose stable Add operation semantics | triesap | 2 | +3 | -2 |
| 2026-08-28 20:22 | test: bind Add completion to stable UI state | triesap | 1 | +27 | -9 |
| 2026-08-28 20:12 | test: traverse the visible Me settings sheet | triesap | 1 | +11 | -3 |
| 2026-08-28 19:45 | test: search Add form in both directions | triesap | 1 | +3 | -0 |
| 2026-08-28 19:44 | test: reset Today before each card search | triesap | 1 | +1 | -1 |
| 2026-08-28 19:26 | test: restore Add form after disclosure audit | triesap | 1 | +1 | -0 |
| 2026-08-28 19:15 | ios: expose deterministic Today refresh | triesap | 2 | +13 | -3 |
| 2026-08-28 19:03 | test: reset Today feed before persona search | triesap | 1 | +1 | -0 |
| 2026-08-28 18:58 | test: bind photo personas to authored wire shape | triesap | 3 | +104 | -11 |
| 2026-08-28 18:48 | test: trust one verified submit action | triesap | 1 | +13 | -28 |
| 2026-08-28 18:43 | test: bind completion to working overlay | triesap | 1 | +3 | -23 |
| 2026-08-28 18:37 | test: observe both terminal UI signals | triesap | 1 | +21 | -7 |
| 2026-08-28 18:32 | test: bind persona submission to status | triesap | 1 | +26 | -31 |
| 2026-08-28 18:23 | test: qualify virtualized photo evidence | triesap | 1 | +17 | -4 |
| 2026-08-28 18:14 | test: stabilize persona photo submission | triesap | 1 | +14 | -9 |
| 2026-08-28 18:04 | test: close persona settings before add flows | triesap | 2 | +25 | -2 |
| 2026-08-28 17:55 | ios: qualify deterministic local-social personas | triesap | 16 | +1993 | -39 |
| 2026-08-28 08:00 | fix(ios): harden local social accessibility | triesap | 8 | +533 | -92 |
| 2026-08-28 06:14 | test(ios): qualify local social runtime | triesap | 16 | +2203 | -1311 |
| 2026-08-28 04:39 | feat(ios): complete local social product surface | triesap | 9 | +884 | -354 |
| 2026-08-28 04:14 | fix(ios): reconcile durable media uploads | triesap | 3 | +918 | -56 |
| 2026-08-28 03:51 | feat(ios): enforce canonical root navigation | triesap | 3 | +89 | -20 |
| 2026-08-28 03:41 | build(ios): reconcile local social dependencies | triesap | 10 | +38 | -38 |
| 2026-08-26 19:30 | fix(ios): accept stable package references | triesap | 1 | +1 | -1 |
| 2026-08-25 23:47 | build: qualify iOS terminal release evidence | triesap | 10 | +10499 | -6 |
| 2026-08-25 23:32 | ios: reconcile terminal source authority | triesap | 10 | +112 | -55 |
| 2026-08-25 21:57 | mobile-ffi: align device relay delegation | triesap | 1 | +16 | -22 |
| 2026-08-25 21:53 | mobile-core: align device relay policy coverage | triesap | 1 | +20 | -1 |
| 2026-08-21 03:23 | test: restore release coverage gates | triesap | 1 | +136 | -0 |
| 2026-08-20 19:31 | privacy: declare selected local network access | triesap | 2 | +7 | -0 |
| 2026-08-20 19:25 | build: add signed physical device builds | triesap | 3 | +78 | -1 |
| 2026-08-20 17:42 | chore: normalize Nix-managed formatting | triesap | 1 | +6 | -1 |
| 2026-08-20 07:04 | bindings: expose evidence attestation contracts | triesap | 2 | +339 | -3 |
| 2026-08-20 07:04 | bindings: expose evidence attestation contracts | triesap | 2 | +26 | -0 |
| 2026-08-20 06:06 | refactor(events): enforce typed rhi attestations | triesap | 1 | +42 | -0 |
| 2026-08-20 05:17 | refactor(events): enforce typed trade mutation indexes | triesap | 1 | +219 | -6 |
| 2026-08-20 04:58 | test(mobile): align explicit relay replacement | triesap | 1 | +6 | -3 |
| 2026-08-16 20:33 | transport-nostr: require explicit relay endpoints | triesap | 4 | +83 | -29 |
| 2026-08-14 06:01 | build: gate iOS commands on extbuild doctor | triesap | 1 | +10 | -7 |
| 2026-08-14 04:05 | docs: enforce standalone iOS authority | triesap | 3 | +118 | -44 |
| 2026-08-13 18:50 | test: close mobile ffi coverage gate | triesap | 4 | +640 | -28 |
| 2026-08-13 18:20 | test: close mobile core coverage gate | triesap | 5 | +725 | -0 |
| 2026-08-13 16:51 | mobile: name settings identity errors precisely | triesap | 2 | +25 | -25 |
| 2026-08-12 00:15 | build: reconcile mobile source authorities | triesap | 10 | +41 | -40 |
| 2026-08-12 00:04 | merge: reconcile core library authorities | triesap | 3 | +193 | -9 |
| 2026-08-12 00:04 | merge: reconcile core library authorities | triesap | 1 | +25 | -12 |
| 2026-08-10 22:24 | ios: render verified local media artifacts | triesap | 24 | +937 | -145 |
| 2026-08-10 21:59 | mobile: expose verified media bytes to native hosts | triesap | 1 | +36 | -1 |
| 2026-08-10 21:59 | mobile: expose verified media bytes to native hosts | triesap | 3 | +19 | -9 |
| 2026-08-10 21:47 | ios: add secure identity and settings surfaces | triesap | 24 | +1567 | -84 |
| 2026-08-10 21:25 | mobile: apply persisted network settings to runtime | triesap | 2 | +78 | -6 |
| 2026-08-10 21:25 | mobile: apply persisted network settings to runtime | triesap | 2 | +55 | -4 |
| 2026-08-10 21:04 | contracts: reserve service event decisions | triesap | 1 | +153 | -0 |
| 2026-08-10 20:58 | feat: integrate native add operations | triesap | 23 | +6735 | -5911 |
| 2026-08-10 20:35 | feat: authorize native mobile uploads | triesap | 4 | +151 | -47 |
| 2026-08-10 20:35 | feat: authorize native mobile uploads | triesap | 4 | +212 | -13 |
| 2026-08-10 19:59 | refactor: bound iOS runtime lifecycle work | triesap | 10 | +1150 | -253 |
| 2026-08-10 19:22 | build: pin verified Apple transfer bridge | triesap | 5 | +5 | -5 |
| 2026-08-10 19:05 | merge: reconcile canonical relay authority | triesap | 1 | +2 | -2 |
| 2026-08-10 19:05 | merge: reconcile canonical relay authority | triesap | 1 | +2 | -2 |
| 2026-08-10 18:38 | feat: consume mobile operation bindings | triesap | 11 | +49 | -39 |
| 2026-08-10 18:27 | feat: expose mobile product operations | triesap | 8 | +1224 | -11 |
| 2026-08-10 18:27 | feat: expose mobile product operations | triesap | 5 | +590 | -16 |
| 2026-08-10 18:03 | feat: harden inbound Blossom retrieval | triesap | 2 | +8 | -1 |
| 2026-08-10 18:03 | feat: harden inbound Blossom retrieval | triesap | 7 | +882 | -9 |
| 2026-08-10 17:32 | feat: persist verified inbound media receipts | triesap | 2 | +19 | -17 |
| 2026-08-10 17:32 | feat: persist verified inbound media receipts | triesap | 6 | +2225 | -194 |
| 2026-08-10 17:00 | feat: enforce lossless revision ordering | triesap | 1 | +3 | -0 |
| 2026-08-10 17:00 | feat: enforce lossless revision ordering | triesap | 3 | +922 | -8 |
| 2026-08-10 16:45 | refactor: consume Rust-owned Add operation intents | triesap | 11 | +154 | -295 |
| 2026-08-10 16:35 | feat: own add queue and upload policy | triesap | 4 | +184 | -47 |
| 2026-08-10 16:35 | feat: own add queue and upload policy | triesap | 3 | +433 | -5 |
| 2026-08-10 16:22 | feat: govern mobile identity and settings policy | triesap | 5 | +1540 | -0 |
| 2026-08-10 03:38 | fix(qualification): accept disabled delivered state | triesap | 1 | +0 | -1 |
| 2026-08-09 23:02 | ios: enable canonical relay publication | triesap | 6 | +33 | -33 |
| 2026-08-09 22:52 | transport_nostr: authorize canonical relay publication | triesap | 1 | +2 | -2 |
| 2026-08-09 22:52 | transport_nostr: authorize canonical relay publication | triesap | 1 | +2 | -2 |
| 2026-08-09 20:23 | ios: add physical lock recovery gate | triesap | 1 | +18 | -0 |
| 2026-08-09 20:20 | ios: qualify durable local cancellation | triesap | 1 | +36 | -0 |
| 2026-08-09 20:12 | ios: accept bounded outage states | triesap | 1 | +3 | -2 |
| 2026-08-09 20:06 | ios: preserve indeterminate outage evidence | triesap | 1 | +5 | -1 |
| 2026-08-09 20:00 | ios: automate Blossom outage recovery | triesap | 1 | +202 | -96 |
| 2026-08-09 19:48 | ios: expose physical SSRF qualification failure | triesap | 2 | +44 | -0 |
| 2026-08-09 19:23 | ios: harden physical Blossom qualification | triesap | 11 | +272 | -64 |
| 2026-08-09 19:12 | merge: reconcile host descriptor ownership | triesap | 2 | +54 | -1 |
| 2026-08-09 18:56 | mobile_ffi: duplicate host media descriptors | triesap | 1 | +30 | -1 |
| 2026-08-09 18:37 | merge: reconcile actionable media draft state | triesap | 1 | +5 | -21 |
| 2026-08-09 18:37 | merge: reconcile actionable media draft state | triesap | 1 | +2 | -0 |
| 2026-08-09 17:58 | ios: make remote submission viewport safe | triesap | 1 | +8 | -1 |
| 2026-08-09 17:49 | ios: automate remote device qualification | triesap | 28 | +1136 | -64 |
| 2026-08-09 17:31 | mobile_core: restore actionable media draft state | triesap | 1 | +5 | -21 |
| 2026-08-09 17:31 | mobile_core: restore actionable media draft state | triesap | 1 | +2 | -0 |
| 2026-08-09 17:22 | merge: reconcile mobile runtime and Blossom fixes | triesap | 2 | +4 | -1 |
| 2026-08-09 17:22 | merge: reconcile mobile runtime and Blossom fixes | triesap | 4 | +6 | -3 |
| 2026-08-09 16:58 | blossom: retain bounded server error evidence | triesap | 2 | +4 | -1 |
| 2026-08-09 16:58 | blossom: retain bounded server error evidence | triesap | 2 | +4 | -1 |
| 2026-08-09 15:32 | mobile: run exported futures in the Tokio context | triesap | 2 | +2 | -2 |
| 2026-08-09 03:05 | build: add prototype contract source guard | triesap | 1 | +24 | -11 |
| 2026-08-09 03:05 | build: add prototype contract source guard | triesap | 1 | +8 | -1 |
| 2026-08-08 22:19 | ios: make blossom reconfiguration explicit | triesap | 6 | +386 | -18 |
| 2026-08-08 21:55 | ios: unify blossom configuration authority | triesap | 15 | +574 | -152 |
| 2026-08-08 21:41 | ffi: regenerate blossom evidence surface | triesap | 6 | +35 | -35 |
| 2026-08-08 21:35 | blossom: expose passive endpoint evidence | triesap | 2 | +125 | -0 |
| 2026-08-08 21:35 | blossom: expose passive endpoint evidence | triesap | 4 | +99 | -9 |
| 2026-08-08 20:47 | blossom: bind uploads to canonical endpoint authority | triesap | 3 | +113 | -50 |
| 2026-08-08 20:47 | blossom: bind uploads to canonical endpoint authority | triesap | 4 | +339 | -147 |
| 2026-08-08 07:40 | feat(ios): prove local MVP protocol flows | triesap | 12 | +59 | -34 |
| 2026-08-08 07:31 | mobile: prove local MVP protocol flows | triesap | 4 | +37 | -1 |
| 2026-08-08 07:31 | mobile: prove local MVP protocol flows | triesap | 5 | +897 | -3 |
| 2026-08-08 03:40 | feat(ios): publish deterministic app package | triesap | 30 | +697 | -349 |
| 2026-08-08 03:06 | feat(ios): close lifecycle and diagnostics | triesap | 41 | +835 | -3243 |
| 2026-08-08 02:44 | feat(ios): complete supporting product surfaces | triesap | 23 | +1067 | -1428 |
| 2026-08-08 02:32 | feat(ios): complete local-first Add flows | triesap | 20 | +2687 | -42 |
| 2026-08-08 02:11 | feat(mobile): complete durable Add operations | triesap | 2 | +513 | -5 |
| 2026-08-08 02:11 | feat(mobile): complete durable Add operations | triesap | 3 | +307 | -11 |
| 2026-08-08 01:48 | feat(ios): ship the runtime-backed Today feed | triesap | 19 | +1565 | -43 |
| 2026-08-08 01:34 | feat(mobile): sync Today from bounded relay data | triesap | 3 | +305 | -3 |
| 2026-08-08 01:34 | feat(mobile): sync Today from bounded relay data | triesap | 3 | +131 | -30 |
| 2026-08-08 00:50 | feat(mobile): expose typed Today rendering fields | triesap | 2 | +84 | -0 |
| 2026-08-08 00:50 | feat(mobile): expose typed Today rendering fields | triesap | 1 | +10 | -0 |
| 2026-08-08 00:39 | feat(ios): install the two-tab product shell | triesap | 9 | +401 | -634 |
| 2026-08-08 00:34 | refactor(ios): centralize state and identity migration | triesap | 21 | +1639 | -1736 |
| 2026-08-08 00:18 | refactor(ios): own runtime lifecycle behind an actor | triesap | 16 | +1470 | -727 |
| 2026-08-07 23:53 | build(ffi): lock the focused Swift boundary | triesap | 11 | +931 | -59 |
| 2026-08-07 23:36 | refactor(mobile): focus the generated FFI boundary | triesap | 13 | +3985 | -306 |
| 2026-08-07 19:11 | feat(sdk): add verified Blossom transport | triesap | 5 | +481 | -62 |
| 2026-08-07 17:33 | transport: add evidence-based relay profiles | triesap | 3 | +122 | -1 |
| 2026-08-07 17:33 | transport: add evidence-based relay profiles | triesap | 6 | +276 | -15 |
| 2026-08-07 15:30 | feat(mobile): enforce opaque host signing | triesap | 3 | +0 | -315 |
| 2026-08-07 15:30 | feat(mobile): enforce opaque host signing | triesap | 8 | +230 | -515 |
| 2026-08-07 13:54 | feat(mobile): persist phase 1 drafts and outbox | triesap | 3 | +1446 | -5 |
| 2026-08-07 12:24 | feat(mobile): materialize Today ingest and query | triesap | 6 | +2297 | -41 |
| 2026-08-07 10:24 | Require durable SQLite for mobile runtimes | triesap | 2 | +5 | -4 |
| 2026-08-07 10:24 | Require durable SQLite for mobile runtimes | triesap | 8 | +122 | -16 |
| 2026-08-07 10:24 | Require durable SQLite for mobile runtimes | triesap | 15 | +622 | -27 |
| 2026-08-07 09:02 | feat: add typed phase 1 authoring profiles | triesap | 1 | +92 | -0 |
| 2026-08-07 09:02 | feat: add typed phase 1 authoring profiles | triesap | 3 | +319 | -0 |
| 2026-08-07 08:14 | feat(mobile): focus phase one social domain | triesap | 3 | +93 | -608 |
| 2026-08-07 08:14 | feat(mobile): focus phase one social domain | triesap | 9 | +1986 | -3612 |
| 2026-08-07 00:06 | ios: materialize canonical local lib source | triesap | 1 | +26 | -8 |
| 2026-08-07 00:02 | ios: pin canonical lib candidate | triesap | 5 | +29 | -29 |
| 2026-08-06 19:57 | mobile: canonicalize wasm export identity | triesap | 1 | +11 | -7 |
| 2026-08-06 19:45 | ios: cut product over to canonical mobile source | triesap | 12 | +2908 | -65 |
| 2026-08-06 19:31 | mobile: preserve swift ffi module identities | triesap | 2 | +11 | -2 |
| 2026-08-06 08:46 | studio: activate canonical rust packages | triesap | 1 | +674 | -0 |
| 2026-08-06 08:46 | studio: activate canonical rust packages | triesap | 1 | +674 | -0 |
| 2026-08-06 08:46 | studio: activate canonical rust packages | triesap | 1 | +674 | -0 |
| 2026-08-06 08:46 | studio: activate canonical rust packages | triesap | 1 | +674 | -0 |
| 2026-08-06 08:22 | consolidation: prove studio import ledger | triesap | 1 | +1 | -1 |
| 2026-08-06 08:22 | consolidation: prove studio import ledger | triesap | 1 | +1 | -1 |
| 2026-08-06 08:22 | consolidation: prove studio import ledger | triesap | 1 | +1 | -1 |
| 2026-08-06 08:22 | consolidation: prove studio import ledger | triesap | 1 | +1 | -1 |
| 2026-08-06 08:10 | mobile: isolate native ffi ownership | triesap | 14 | +146 | -112 |
| 2026-08-06 08:10 | mobile: isolate native ffi ownership | triesap | 10 | +1279 | -11 |
| 2026-08-06 07:32 | mobile: define windows logging acl and reparse behavior | triesap | 2 | +25 | -2 |
| 2026-08-06 07:24 | mobile: harden log file opens | triesap | 4 | +205 | -20 |
| 2026-08-06 07:11 | mobile: move global logging policy into mobileffi | triesap | 5 | +0 | -533 |
| 2026-08-06 07:11 | mobile: move global logging policy into mobileffi | triesap | 5 | +540 | -1 |
| 2026-08-06 06:57 | mobile: make sdk status mappings explicit | triesap | 1 | +4 | -4 |
| 2026-08-06 06:57 | mobile: replace debugderived wire labels | triesap | 1 | +3 | -27 |
| 2026-08-06 06:40 | mobile: import preserved mobile history | triesap | 3 | +716 | -0 |
| 2026-08-06 06:40 | mobile: import preserved mobile history | triesap | 3 | +729 | -0 |
| 2026-08-06 06:40 | mobile: import preserved mobile history | triesap | 4 | +720 | -0 |
| 2026-08-06 06:40 | mobile: import preserved mobile history | triesap | 18 | +6026 | -0 |
| 2026-08-05 22:17 | deps: adopt final SDK revision | triesap | 0 | +0 | -0 |
| 2026-08-04 22:34 | test: lock authored event wire corpus | triesap | 1 | +418 | -0 |
| 2026-08-04 20:33 | build: advance the apple kit revision | triesap | 3 | +3 | -3 |
| 2026-08-04 20:30 | build: pin the sdk dependency by revision | triesap | 0 | +0 | -0 |
| 2026-08-04 13:21 | logging: own mobile host initialization | triesap | 3 | +308 | -32 |
| 2026-08-03 17:31 | ios: validate shared engine lifecycle integration | triesap | 9 | +256 | -0 |
| 2026-08-03 17:28 | ios: update radroots ffi artifact | triesap | 24 | +229 | -219 |
| 2026-08-03 17:18 | app-rt: restore sdk-backed mobile social bridge | triesap | 1 | +1 | -1 |
| 2026-08-03 17:18 | app-rt: restore sdk-backed mobile social bridge | triesap | 4 | +489 | -3 |
| 2026-08-03 16:13 | app-rt: finalize packaged sdk integration | triesap | 2 | +42 | -0 |
| 2026-08-03 16:13 | app-rt: finalize packaged sdk integration | triesap | 1 | +2 | -0 |
| 2026-08-03 16:13 | app-rt: finalize packaged sdk integration | triesap | 2 | +5 | -27 |
| 2026-08-03 16:13 | app-rt: finalize packaged sdk integration | triesap | 2 | +32 | -29 |
| 2026-08-03 16:05 | app-rt: migrate uniffi contract to final sdk | triesap | 8 | +191 | -119 |
| 2026-08-03 15:53 | app-rt: delegate runtime behavior to radroots sdk | triesap | 14 | +259 | -1793 |
| 2026-07-26 22:41 | ffi: inherit Cargo target directory | triesap | 2 | +22 | -12 |
| 2026-07-18 06:28 | runtime: qualify Phase 1 public closure | triesap | 1 | +4 | -0 |
| 2026-07-18 06:28 | runtime: qualify Phase 1 public closure | triesap | 1 | +4 | -0 |
| 2026-07-18 06:28 | runtime: qualify Phase 1 public closure | triesap | 8 | +288 | -222 |
| 2026-07-16 09:24 | runtime: add Phase 1 stewardship access items | triesap | 1 | +477 | -0 |
| 2026-07-16 09:17 | runtime: add Phase 1 proof provenance artifacts | triesap | 1 | +507 | -10 |
| 2026-07-16 09:04 | runtime: add Phase 1 route execution flows | triesap | 1 | +550 | -0 |
| 2026-07-16 08:41 | runtime: add Phase 1 prototype paths | triesap | 1 | +346 | -0 |
| 2026-07-16 08:31 | runtime: add Phase 1 search filters | triesap | 1 | +153 | -0 |
| 2026-07-16 08:26 | runtime: add Phase 1 outbox retry decisions | triesap | 1 | +104 | -0 |
| 2026-07-16 08:20 | runtime: test Phase 1 object page routing | triesap | 1 | +25 | -0 |
| 2026-07-16 07:25 | runtime: rank Phase 1 Today cards | triesap | 1 | +139 | -10 |
| 2026-07-16 06:37 | runtime: expose Phase 1 projections | triesap | 1 | +582 | -0 |
| 2026-07-16 06:20 | runtime: add Phase 1 product contracts | triesap | 2 | +679 | -0 |
| 2026-07-15 01:19 | runtime: align event envelope accessors | triesap | 2 | +4 | -4 |
| 2026-07-12 00:50 | crate-surface: adopt final app runtime crates | triesap | 5 | +20 | -19 |
| 2026-06-20 01:15 | ffi: pin field_lib lock fix revision | triesap | 2 | +2 | -2 |
| 2026-06-20 01:09 | ui: remove deferred Market listing surface | triesap | 5 | +0 | -549 |
| 2026-06-20 01:01 | config: remove field RHI settings | triesap | 6 | +0 | -41 |
| 2026-06-20 00:53 | runtime: fix Nostr lock boundaries | triesap | 3 | +115 | -90 |
| 2026-06-19 23:56 | api: drop retired trade mobile consumers | triesap | 6 | +2 | -287 |
| 2026-06-19 23:49 | api: remove retired mobile trade endpoints | triesap | 2 | +0 | -90 |
| 2026-06-19 23:46 | runtime: handle typed mobile read outcomes | triesap | 6 | +43 | -24 |
| 2026-06-19 23:43 | runtime: expose mobile read outcomes | triesap | 3 | +107 | -34 |
| 2026-06-19 23:37 | errors: adapt field app to typed runtime failures | triesap | 16 | +93 | -31 |
| 2026-06-19 23:35 | errors: type mobile runtime failures | triesap | 10 | +194 | -95 |
| 2026-06-19 23:17 | ffi: consume language-neutral field crate | triesap | 2 | +4 | -4 |
| 2026-06-19 23:16 | ffi: rename shared ffi crate | triesap | 4 | +64 | -0 |
| 2026-06-19 23:12 | ffi: lock generated bindings to current field_lib | triesap | 2 | +2 | -2 |
| 2026-06-19 23:02 | identity: preserve stored key on failed import | triesap | 5 | +172 | -5 |
| 2026-06-18 20:59 | security: prove identity policy config | triesap | 4 | +50 | -0 |
| 2026-06-18 20:34 | runtime: apply imported relay settings | triesap | 5 | +196 | -19 |
| 2026-06-18 20:02 | background: fail closed on startup lifecycle gaps | triesap | 3 | +51 | -13 |
| 2026-06-18 19:55 | runtime: make config and logging deterministic | triesap | 4 | +35 | -20 |
| 2026-06-18 19:50 | runtime: split UI test host-service harness | triesap | 10 | +369 | -139 |
| 2026-06-18 03:41 | field-ios: bridge background session lifecycle | triesap | 7 | +106 | -0 |
| 2026-06-18 01:20 | field-ios: align background probe with guard | triesap | 2 | +17 | -8 |
| 2026-06-18 01:05 | field-ios: add background execution UI test probe | triesap | 5 | +214 | -0 |
| 2026-06-18 00:30 | field-ios: add Nostr-only background maintenance | triesap | 3 | +222 | -31 |
| 2026-06-18 00:24 | field-ios: add background execution coordinator shell | triesap | 6 | +261 | -0 |
| 2026-06-15 21:44 | telemetry: add deterministic UI test probe | triesap | 5 | +156 | -0 |
| 2026-06-15 21:27 | telemetry: emit structured app events | triesap | 2 | +463 | -53 |
| 2026-06-15 21:19 | telemetry: route app logging through AppleKit | triesap | 7 | +151 | -118 |
| 2026-06-15 20:25 | user-presence: gate identity actions | triesap | 3 | +43 | -0 |
| 2026-06-15 20:24 | user-presence: add identity gate | triesap | 3 | +197 | -0 |
| 2026-06-15 00:18 | field-ios: stabilize app shell startup actions | triesap | 2 | +43 | -15 |
| 2026-06-14 22:51 | external-actions: stabilize location recovery ui | triesap | 1 | +44 | -38 |
| 2026-06-14 21:55 | external-actions: wire recovery ui | triesap | 5 | +123 | -1 |
| 2026-06-14 21:53 | external-actions: add runtime boundary | triesap | 4 | +171 | -0 |
| 2026-06-14 20:13 | capture: add intake controls | triesap | 1 | +188 | -2 |
| 2026-06-14 20:12 | capture: add field intake runtime | triesap | 5 | +537 | -11 |
| 2026-06-14 11:04 | app: add location check-in test probes | triesap | 2 | +89 | -7 |
| 2026-06-14 10:37 | ui: add visible location check-in flow | triesap | 1 | +139 | -2 |
| 2026-06-14 10:36 | app: add location check-in runtime | triesap | 5 | +122 | -16 |
| 2026-06-14 09:44 | test: route probe checks through AppleKit | triesap | 2 | +4 | -4 |
| 2026-06-14 09:37 | test: expose document interchange probe | triesap | 4 | +133 | -0 |
| 2026-06-14 09:28 | ui: add document interchange flows | triesap | 4 | +196 | -2 |
| 2026-06-14 09:23 | app: add document interchange runtime | triesap | 3 | +225 | -0 |
| 2026-06-14 08:38 | test: expose file access probe | triesap | 4 | +164 | -2 |
| 2026-06-14 08:15 | app: route file roots through apple kit | triesap | 7 | +72 | -20 |
| 2026-06-13 22:40 | ui: expose identity state accessibility | triesap | 1 | +24 | -2 |
| 2026-06-13 22:21 | ui: align identity setup copy | triesap | 2 | +11 | -11 |
| 2026-06-13 22:17 | app: route identity through secure store | triesap | 6 | +241 | -212 |
| 2026-06-13 22:12 | core: make nostr host custody explicit | triesap | 3 | +124 | -84 |
| 2026-06-13 20:51 | app: add launch splash screen | triesap | 8 | +96 | -7 |
| 2026-06-13 09:31 | ffi: update field lib source lock | triesap | 1 | +1 | -1 |
| 2026-06-13 09:21 | app: harden nostr key custody state | triesap | 10 | +262 | -45 |
| 2026-06-13 09:10 | core: narrow ios key custody boundary | triesap | 4 | +124 | -58 |
| 2026-06-12 08:09 | config: use remote RadrootsKit package | triesap | 3 | +28 | -17 |
| 2026-06-12 07:34 | app: polish diagnostics and bundle posture | triesap | 4 | +45 | -6 |
| 2026-06-12 07:28 | app: support nostr ui-test startup states | triesap | 1 | +22 | -1 |
| 2026-06-12 07:05 | app: persist nostr identity in keychain | triesap | 4 | +152 | -4 |
| 2026-06-12 07:05 | field: add nostr identity reset ffi | triesap | 3 | +77 | -0 |
| 2026-06-12 06:57 | app: replace auth login with nostr onboarding | triesap | 21 | +555 | -606 |
| 2026-06-12 06:47 | field: replace auth session ffi with nostr identity | triesap | 5 | +122 | -1074 |
| 2026-06-12 06:32 | config: remove auth endpoint inputs | triesap | 3 | +0 | -8 |
| 2026-06-12 04:58 | ui: align field shell tabs | triesap | 1 | +185 | -11 |
| 2026-06-12 04:47 | app: replace setup with field login | triesap | 41 | +793 | -511 |
| 2026-06-12 04:37 | field: add auth session ffi | triesap | 4 | +1052 | -1 |
| 2026-06-12 01:55 | ui: connect Nostr after identity setup | triesap | 2 | +22 | -4 |
| 2026-06-12 01:10 | ui: add stable test accessibility anchors | triesap | 6 | +12 | -0 |
| 2026-06-12 01:10 | tests: remove app-local unit test target | triesap | 4 | +0 | -139 |
| 2026-06-12 01:00 | config: track local xcconfig project reference | triesap | 1 | +2 | -0 |
| 2026-06-12 00:51 | config: namespace runtime settings | triesap | 10 | +98 | -68 |
| 2026-06-12 00:29 | assets: add generated app iconset | triesap | 4 | +35 | -4 |
| 2026-06-12 00:05 | build: make field ios testable | triesap | 5 | +234 | -0 |
| 2026-06-11 23:49 | build: sync generated xcode project | triesap | 1 | +2 | -0 |
| 2026-06-11 23:38 | ios: align app shell with field runtime | triesap | 14 | +132 | -214 |
| 2026-06-11 23:23 | field: align runtime ffi with current rr-rs APIs | triesap | 2 | +189 | -607 |
| 2026-06-11 23:08 | field: use snake case crate dependency keys | triesap | 1 | +17 | -17 |
| 2026-06-11 23:04 | field: normalize imported field crate workspace | triesap | 1 | +4 | -4 |
| 2026-06-11 23:04 | field: normalize imported field crate workspace | triesap | 4 | +0 | -29 |
| 2026-06-11 23:04 | field: normalize imported field crate workspace | triesap | 1 | +1 | -0 |
| 2026-06-11 22:59 | field: restore swift ffi crate for field library extraction | triesap | 0 | +0 | -0 |
| 2026-03-20 16:58 | workspace: remove retired app crates | triesap | 3 | +0 | -63 |
| 2026-03-20 16:58 | workspace: remove retired app crates | triesap | 15 | +0 | -2205 |
| 2026-03-05 20:18 | app-core: reflow runtime stop logging | triesap | 1 | +9 | -3 |
| 2026-03-05 20:18 | app-core: reflow runtime stop logging | triesap | 1 | +9 | -3 |
| 2026-03-05 01:23 | app-core: close runtime no-default strict region gaps | triesap | 3 | +77 | -32 |
| 2026-03-05 01:23 | app-core: close runtime no-default strict region gaps | triesap | 3 | +77 | -32 |
| 2026-03-04 17:53 | app-core: run cargo fmt | triesap | 1 | +3 | -1 |
| 2026-03-04 17:53 | app-core: run cargo fmt | triesap | 1 | +3 | -1 |
| 2026-03-04 14:11 | nostr: migrate consumers to parsed event wrappers | triesap | 2 | +19 | -14 |
| 2026-03-04 14:11 | nostr: migrate consumers to parsed event wrappers | triesap | 2 | +19 | -14 |
| 2026-03-03 16:34 | build: add publish metadata for remaining crates | triesap | 1 | +4 | -1 |
| 2026-03-03 16:34 | build: add publish metadata for remaining crates | triesap | 1 | +4 | -1 |
| 2026-03-03 16:34 | build: add publish metadata for remaining crates | triesap | 1 | +4 | -1 |
| 2026-03-03 16:34 | build: add publish metadata for remaining crates | triesap | 1 | +4 | -1 |
| 2026-03-03 16:01 | contract: expand publish set for remaining crates | triesap | 1 | +0 | -1 |
| 2026-03-03 16:01 | contract: expand publish set for remaining crates | triesap | 1 | +0 | -1 |
| 2026-03-03 16:01 | contract: expand publish set for remaining crates | triesap | 1 | +0 | -1 |
| 2026-03-03 16:01 | contract: expand publish set for remaining crates | triesap | 1 | +0 | -1 |
| 2026-03-02 23:14 | build: set `radroots-app-wasm` version to 0.1.0-alpha.1 | triesap | 1 | +1 | -1 |
| 2026-03-02 23:14 | build: set `radroots-app-wasm` version to 0.1.0-alpha.1 | triesap | 1 | +1 | -1 |
| 2026-03-02 23:14 | build: set `radroots-app-core` version to 0.1.0-alpha.1 | triesap | 1 | +1 | -1 |
| 2026-03-02 23:14 | build: set `radroots-app-core` version to 0.1.0-alpha.1 | triesap | 1 | +1 | -1 |
| 2026-03-02 23:08 | docs: update `radroots-app-wasm` readme | triesap | 0 | +0 | -0 |
| 2026-03-02 23:08 | docs: update `radroots-app-wasm` readme | triesap | 1 | +4 | -4 |
| 2026-03-02 23:08 | docs: update `radroots-app-wasm` readme | triesap | 0 | +0 | -0 |
| 2026-03-02 23:08 | docs: update `radroots-app-core` readme | triesap | 1 | +4 | -4 |
| 2026-03-02 23:08 | docs: update `radroots-app-core` readme | triesap | 0 | +0 | -0 |
| 2026-03-02 23:08 | docs: update `radroots-app-core` readme | triesap | 0 | +0 | -0 |
| 2026-03-01 15:14 | docs: update `radroots-app-wasm` readme | triesap | 1 | +14 | -0 |
| 2026-03-01 15:14 | docs: update `radroots-app-wasm` readme | triesap | 0 | +0 | -0 |
| 2026-03-01 15:14 | docs: update `radroots-app-wasm` readme | triesap | 0 | +0 | -0 |
| 2026-03-01 15:13 | docs: update `radroots-app-core` readme | triesap | 1 | +14 | -0 |
| 2026-03-01 15:13 | docs: update `radroots-app-core` readme | triesap | 0 | +0 | -0 |
| 2026-03-01 15:13 | docs: update `radroots-app-core` readme | triesap | 0 | +0 | -0 |
| 2026-02-28 20:32 | app: remove deprecated swift ffi crate | triesap | 4 | +0 | -63 |
| 2026-02-28 20:32 | app: remove deprecated swift ffi crate | triesap | 0 | +0 | -0 |
| 2026-02-28 20:32 | app: remove deprecated swift ffi crate | triesap | 0 | +0 | -0 |
| 2026-02-25 01:18 | release: enforce publish boundaries for 0.1.0 set | triesap | 1 | +1 | -0 |
| 2026-02-25 01:18 | release: enforce publish boundaries for 0.1.0 set | triesap | 1 | +1 | -0 |
| 2026-02-25 01:18 | release: enforce publish boundaries for 0.1.0 set | triesap | 1 | +1 | -0 |
| 2026-02-25 01:18 | release: enforce publish boundaries for 0.1.0 set | triesap | 1 | +1 | -0 |
| 2026-02-25 01:18 | release: enforce publish boundaries for 0.1.0 set | triesap | 1 | +1 | -0 |
| 2026-02-22 14:20 | trade: consolidate listing kind lane around dvm kinds | triesap | 1 | +2 | -2 |
| 2026-02-22 14:20 | trade: consolidate listing kind lane around dvm kinds | triesap | 1 | +2 | -2 |
| 2026-02-22 04:38 | coverage: raise `radroots-app-wasm` to strict 100 gates | triesap | 1 | +23 | -7 |
| 2026-02-22 04:38 | coverage: raise `radroots-app-wasm` to strict 100 gates | triesap | 1 | +23 | -7 |
| 2026-02-22 04:36 | coverage: raise `app-ffi-swift` to strict 100 gates | triesap | 3 | +34 | -0 |
| 2026-02-22 04:36 | coverage: raise `app-ffi-swift` to strict 100 gates | triesap | 0 | +0 | -0 |
| 2026-02-22 04:31 | coverage: raise `radroots-app-core` to strict 100 gates | triesap | 9 | +427 | -116 |
| 2026-02-22 04:31 | coverage: raise `radroots-app-core` to strict 100 gates | triesap | 9 | +427 | -116 |
| 2026-02-22 03:49 | coverage: add per-crate coverage profiles for run-crate lanes | triesap | 1 | +2 | -0 |
| 2026-02-22 03:49 | coverage: add per-crate coverage profiles for run-crate lanes | triesap | 1 | +2 | -0 |
| 2026-02-20 17:43 | app-core: migrate runtime key flows to accounts apis | triesap | 4 | +122 | -42 |
| 2026-02-20 17:43 | app-core: migrate runtime key flows to accounts apis | triesap | 4 | +122 | -42 |
| 2026-02-20 14:12 | workspace: move `radroots-app-wasm` under crates | triesap | 2 | +30 | -0 |
| 2026-02-20 14:12 | workspace: move `radroots-app-ffi-swift` under crates | triesap | 4 | +28 | -0 |
| 2026-02-20 14:11 | workspace: move `radroots-app-core` under crates | triesap | 12 | +1737 | -0 |
| 2026-02-18 00:26 | build: require explicit env vars in build scripts | triesap | 1 | +8 | -14 |
| 2026-02-16 00:40 | build: replace ios ffi wrapper with makefile pipeline | triesap | 13 | +184 | -107 |
| 2026-02-15 19:59 | build: repoint RadrootsCore ffi sources | triesap | 4 | +11 | -12 |
| 2026-02-15 19:06 | build: minimize ios wrapper docs and makefiles | triesap | 4 | +15 | -35 |
| 2026-02-15 18:59 | core: remove direct ffi dependency from wrapper | triesap | 3 | +1 | -1502 |
| 2026-02-15 18:28 | build: align radrootscore makefile to shared ffi crate | triesap | 2 | +13 | -10 |
| 2026-02-15 18:15 | core: add radrootscore rust wrapper manifest | triesap | 5 | +1546 | -5 |
| 2026-02-15 17:41 | ios: replace radrootscore submodule with tracked wrapper | triesap | 6 | +77 | -48 |
| 2026-02-15 17:30 | Initial commit | triesap | 2 | +30 | -0 |
| 2026-02-15 17:30 | Initial commit | triesap | 12 | +1743 | -0 |
| 2026-02-15 16:23 | app: add market trade listing flows and rhi config | triesap | 14 | +1216 | -172 |
| 2025-12-25 01:53 | kit: add Swift nostr posting and stream helpers | triesap | 1 | +93 | -0 |
| 2025-11-03 04:01 | Update git submodules reference | triesap | 0 | +0 | -0 |
| 2025-10-06 17:18 | Refactor post feed view model with main-actor–bound async tasks, detached concurrency for replies and live updates, and structured result handling. Update settings view with a copyable npub field and removal of redundant state. | triesap | 2 | +62 | -37 |
| 2025-10-06 14:18 | Refactor post feed to use a view model for state, loading, and live updates. Add model handling async fetch, replies, and refresh loop. | triesap | 3 | +142 | -88 |
| 2025-10-06 13:13 | Refactor post feed with inline reply composer. Integrate structured debug dump utility for post metadata logging. | triesap | 4 | +255 | -34 |
| 2025-10-05 21:20 | Add Nostr post feed and detail views with post display and sharing, introduce copy and toast UI components, and update home and profile views for new metadata integration. | triesap | 10 | +431 | -123 |
| 2025-10-04 21:12 | Add `PostView` for composing and posting text notes. | triesap | 3 | +116 | -0 |
| 2025-10-04 20:20 | Refactor SwiftUI views to fix console errors in navigation and form layouts. | triesap | 4 | +34 | -24 |
| 2025-10-04 20:12 | Add build-time configuration system with new xcconfig files, dynamic logging initialization, and relay/environment settings integration. Replace legacy app root with a gated app entry and expand UI with updated profile, relay, and setup views plus shared navigation and button components. | triesap | 23 | +761 | -256 |
| 2025-10-03 23:14 | Add home, profile, and tab navigation views with a refactored app entry, replacing the legacy root container with a tabbed navigation stack. Refactor settings, setup, and state management to support account lifecycle, key import/export with keychain persistence, and async task–based status polling. | triesap | 9 | +346 | -143 |
| 2025-10-03 21:03 | Migrated application state, runtime lifecycle, and key management into shared `RadrootsKit` module with dedicated classes for persistence and provisioning. | triesap | 14 | +402 | -132 |
| 2025-08-30 01:25 | Initial commit | triesap | 20 | +1561 | -0 |
| 2025-08-29 23:21 | Initial commit | triesap | 4 | +29 | -0 |
| 2025-04-26 21:05 | Initial commit | triesap | 2 | +222 | -0 |
| 2025-04-26 21:05 | Initial commit | triesap | 2 | +222 | -0 |
| 2025-04-26 21:05 | Initial commit | triesap | 2 | +222 | -0 |
| 2025-04-26 21:05 | Initial commit | triesap | 2 | +222 | -0 |