@lapis-notes/api 0.1.3 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/CHANGELOG.md +304 -13
  2. package/README.md +19 -0
  3. package/dist/__tests__/fixtures/indexed-mutations.json +6862 -0
  4. package/dist/__tests__/fixtures/memory-storage.json +309 -0
  5. package/dist/__tests__/fixtures/native-facade-contract.json +3224 -0
  6. package/dist/__tests__/fixtures/projection-query.json +195 -0
  7. package/dist/__tests__/fixtures/projection-values.json +60 -0
  8. package/dist/__tests__/fixtures/search-preparation.json +1513 -0
  9. package/dist/__tests__/fixtures/search-retrieval.json +15409 -0
  10. package/dist/__tests__/fixtures/search-semantic-model.json +3691 -0
  11. package/dist/__tests__/fixtures/search-semantic-retrieval.json +6603 -0
  12. package/dist/__tests__/fixtures/search-storage.json +409 -0
  13. package/dist/__tests__/fixtures/task-projection.json +428 -0
  14. package/dist/__tests__/indexed-mutation-support.js +262 -0
  15. package/dist/__tests__/projection-query-support.js +40 -0
  16. package/dist/__tests__/search-retrieval-support.js +47 -0
  17. package/dist/app-database-host.d.ts +1 -0
  18. package/dist/app-shell-plugin-persistence.d.ts +3 -2
  19. package/dist/app-shell-plugin-persistence.js +37 -3
  20. package/dist/cache.svelte.d.ts +8 -1
  21. package/dist/cache.svelte.js +103 -5
  22. package/dist/command.svelte.js +29 -2
  23. package/dist/components/editor/editor.css +4 -0
  24. package/dist/components/editor/editor.svelte +24 -11
  25. package/dist/components/editor/embedded-editor-surface.js +3 -1
  26. package/dist/components/editor/inline-title-alignment.d.ts +3 -0
  27. package/dist/components/editor/inline-title-alignment.js +57 -0
  28. package/dist/configuration.svelte.d.ts +270 -206
  29. package/dist/configuration.svelte.js +161 -86
  30. package/dist/context.svelte.d.ts +23 -3
  31. package/dist/context.svelte.js +68 -30
  32. package/dist/diagnostics.d.ts +8 -0
  33. package/dist/diagnostics.js +6 -0
  34. package/dist/editor-save-context.d.ts +35 -0
  35. package/dist/editor-save-context.js +132 -0
  36. package/dist/editor-view-registry.d.ts +10 -0
  37. package/dist/editor-view-registry.js +44 -4
  38. package/dist/editor.svelte.d.ts +19 -1
  39. package/dist/editor.svelte.js +528 -55
  40. package/dist/embed-registry.d.ts +10 -0
  41. package/dist/embed-registry.js +15 -0
  42. package/dist/file-editing-failures.d.ts +2 -0
  43. package/dist/file-editing-failures.js +29 -0
  44. package/dist/file-editing-native-issues.d.ts +19 -0
  45. package/dist/file-editing-native-issues.js +65 -0
  46. package/dist/file-editing-sessions.d.ts +76 -0
  47. package/dist/file-editing-sessions.js +367 -0
  48. package/dist/file-manager.d.ts +9 -1
  49. package/dist/file-manager.js +45 -3
  50. package/dist/file-state-store.d.ts +5 -0
  51. package/dist/file-state-store.js +34 -0
  52. package/dist/file-text-conflicts.d.ts +25 -0
  53. package/dist/file-text-conflicts.js +35 -0
  54. package/dist/file-text-mutation.d.ts +13 -0
  55. package/dist/file-text-mutation.js +100 -0
  56. package/dist/file-text-persistence.d.ts +36 -0
  57. package/dist/file-text-persistence.js +234 -0
  58. package/dist/file-text-state-writer.d.ts +34 -0
  59. package/dist/file-text-state-writer.js +183 -0
  60. package/dist/files-configuration.d.ts +20 -0
  61. package/dist/files-configuration.js +47 -0
  62. package/dist/generated/plugin-host-modules.schema.generated.d.ts +114 -34
  63. package/dist/generated/plugin-host-modules.schema.generated.js +132 -34
  64. package/dist/glob.d.ts +3 -0
  65. package/dist/glob.js +2 -1
  66. package/dist/icons/changes.d.ts +3 -0
  67. package/dist/icons/changes.js +16 -0
  68. package/dist/icons/index.d.ts +5 -1
  69. package/dist/icons/index.js +44 -3
  70. package/dist/icons/registry.d.ts +35 -0
  71. package/dist/icons/registry.js +154 -0
  72. package/dist/icons/safe-svg.d.ts +2 -0
  73. package/dist/icons/safe-svg.js +44 -0
  74. package/dist/index.d.ts +6 -1
  75. package/dist/index.js +4 -1
  76. package/dist/lapis-extension.d.ts +6 -2
  77. package/dist/lapis-extension.js +2 -0
  78. package/dist/metadata-store.d.ts +23 -0
  79. package/dist/metadata-store.js +1 -0
  80. package/dist/metadata.svelte.js +45 -2
  81. package/dist/native-background-indexing.d.ts +48 -0
  82. package/dist/native-background-indexing.js +208 -0
  83. package/dist/native-database-protocol.d.ts +29 -0
  84. package/dist/native-database-protocol.js +1 -0
  85. package/dist/native-editing-intent-lease.d.ts +17 -0
  86. package/dist/native-editing-intent-lease.js +188 -0
  87. package/dist/native-editing-intents-protocol.d.ts +70 -0
  88. package/dist/native-editing-intents-protocol.js +1 -0
  89. package/dist/native-editing-intents.d.ts +8 -0
  90. package/dist/native-editing-intents.js +1 -0
  91. package/dist/native-editing-problems.d.ts +3 -0
  92. package/dist/native-editing-problems.js +180 -0
  93. package/dist/native-editing-recovery.d.ts +24 -0
  94. package/dist/native-editing-recovery.js +198 -0
  95. package/dist/native-editing-session.d.ts +51 -0
  96. package/dist/native-editing-session.js +251 -0
  97. package/dist/native-history-index-protocol.d.ts +80 -0
  98. package/dist/native-history-index-protocol.js +1 -0
  99. package/dist/native-history-index.d.ts +6 -0
  100. package/dist/native-history-index.js +1 -0
  101. package/dist/native-indexing-protocol.d.ts +63 -0
  102. package/dist/native-indexing-protocol.js +1 -0
  103. package/dist/native-participant-protocol.d.ts +67 -0
  104. package/dist/native-participant-protocol.js +3 -0
  105. package/dist/native-queue-protocol.d.ts +73 -0
  106. package/dist/native-queue-protocol.js +3 -0
  107. package/dist/native-tasks-protocol.d.ts +264 -0
  108. package/dist/native-tasks-protocol.js +1 -0
  109. package/dist/native-tasks.d.ts +35 -0
  110. package/dist/native-tasks.js +79 -0
  111. package/dist/native-turn-protocol.d.ts +81 -0
  112. package/dist/native-turn-protocol.js +1 -0
  113. package/dist/native-turns.d.ts +29 -0
  114. package/dist/native-turns.js +2 -0
  115. package/dist/plugin-asset-server.js +3 -2
  116. package/dist/plugin-dependency-resolver.d.ts +1 -1
  117. package/dist/plugin-distribution/compatibility.d.ts +1 -1
  118. package/dist/plugin-distribution/compatibility.js +10 -5
  119. package/dist/plugin-distribution/installed-plugin-state.js +2 -1
  120. package/dist/plugin-distribution/installer.d.ts +6 -0
  121. package/dist/plugin-distribution/installer.js +90 -37
  122. package/dist/plugin-distribution/manager.d.ts +4 -1
  123. package/dist/plugin-distribution/manager.js +12 -5
  124. package/dist/plugin-distribution/registry-cache.js +2 -1
  125. package/dist/plugin-distribution/registry-source-state.js +2 -1
  126. package/dist/plugin-distribution/schemas.d.ts +26 -8
  127. package/dist/plugin-distribution/schemas.js +2 -1
  128. package/dist/plugin-distribution/types.d.ts +4 -0
  129. package/dist/plugin-manager.d.ts +21 -5
  130. package/dist/plugin-manager.js +228 -64
  131. package/dist/plugin-runtime-entry.d.ts +1 -1
  132. package/dist/plugin-runtime-entry.js +16 -0
  133. package/dist/plugin.d.ts +19 -3
  134. package/dist/plugin.js +110 -44
  135. package/dist/registry-schema/catalog-v1.d.ts +60 -9
  136. package/dist/registry-schema/catalog-v1.js +2 -1
  137. package/dist/registry-schema/catalog-v2.d.ts +60 -9
  138. package/dist/registry-schema/catalog-v2.js +1 -1
  139. package/dist/search-result-provider.d.ts +95 -0
  140. package/dist/search-result-provider.js +42 -0
  141. package/dist/status-bar.svelte.d.ts +26 -20
  142. package/dist/status-bar.svelte.js +1 -0
  143. package/dist/storage/app-database.d.ts +9 -23
  144. package/dist/storage/app-database.js +41 -34
  145. package/dist/storage/desktop-native.d.ts +5 -3
  146. package/dist/storage/desktop-native.js +59 -6
  147. package/dist/storage/directory-watcher.d.ts +27 -0
  148. package/dist/storage/directory-watcher.js +201 -0
  149. package/dist/storage/fs.d.ts +14 -27
  150. package/dist/storage/fs.js +2 -168
  151. package/dist/storage/index-projection.js +33 -15
  152. package/dist/storage/memory-vault-adapter.d.ts +2 -0
  153. package/dist/storage/memory-vault-adapter.js +14 -1
  154. package/dist/storage/path.d.ts +6 -2
  155. package/dist/storage/path.js +8 -2
  156. package/dist/storage/projection-query-candidates.d.ts +3 -0
  157. package/dist/storage/projection-query-candidates.js +69 -0
  158. package/dist/storage/remote-app-database.d.ts +2 -2
  159. package/dist/storage/remote-app-database.js +1 -1
  160. package/dist/storage/runtime.d.ts +3 -0
  161. package/dist/storage/runtime.js +3 -0
  162. package/dist/storage/search-embedding-record.d.ts +3 -0
  163. package/dist/storage/search-embedding-record.js +18 -0
  164. package/dist/storage/turso-app-database.d.ts +2 -0
  165. package/dist/storage/turso-app-database.js +67 -30
  166. package/dist/storage/vault-listing.d.ts +3 -0
  167. package/dist/storage/vault-listing.js +36 -0
  168. package/dist/storage/vault-reconciliation.d.ts +19 -0
  169. package/dist/storage/vault-reconciliation.js +137 -0
  170. package/dist/storage/vault-session.d.ts +8 -0
  171. package/dist/storage/vault-session.js +10 -2
  172. package/dist/storage/vault.svelte.d.ts +53 -4
  173. package/dist/storage/vault.svelte.js +223 -87
  174. package/dist/sync-editor-flush.d.ts +6 -0
  175. package/dist/sync-editor-flush.js +22 -0
  176. package/dist/sync-host-local.d.ts +15 -0
  177. package/dist/sync-host-local.js +228 -0
  178. package/dist/sync-host-security.d.ts +24 -9
  179. package/dist/sync-host-security.js +47 -14
  180. package/dist/sync-host.d.ts +33 -4
  181. package/dist/sync-host.js +160 -10
  182. package/dist/sync-repository.d.ts +106 -0
  183. package/dist/sync-repository.js +18 -0
  184. package/dist/vault-change-views.d.ts +4 -0
  185. package/dist/vault-change-views.js +43 -0
  186. package/dist/vault-changes.d.ts +37 -0
  187. package/dist/vault-changes.js +228 -0
  188. package/dist/view.svelte.d.ts +182 -149
  189. package/dist/view.svelte.js +39 -21
  190. package/dist/workspace-close-guard.d.ts +3 -0
  191. package/dist/workspace-close-guard.js +35 -0
  192. package/dist/workspace-host-internal.js +10 -2
  193. package/dist/workspace-layout-normalizer.d.ts +4 -2
  194. package/dist/workspace-layout-normalizer.js +5 -5
  195. package/dist/workspace-view-document.d.ts +3 -0
  196. package/dist/workspace-view-document.js +12 -0
  197. package/dist/workspace.svelte.d.ts +13 -2
  198. package/dist/workspace.svelte.js +371 -82
  199. package/package.json +61 -8
package/CHANGELOG.md CHANGED
@@ -1,25 +1,314 @@
1
1
  # @lapis-notes/api
2
2
 
3
+ ## 0.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`bdd4923`](https://github.com/lapismd/lapis-notes/commit/bdd492357135de2cc0175fa42413709b2a38cd63)
8
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose optional native
9
+ watch registration readiness and preserve it through DirectoryWatcher and
10
+ array subscriptions, allowing an initial reconciliation to run after native
11
+ observation is established.
12
+
13
+ - [`86e85f6`](https://github.com/lapismd/lapis-notes/commit/86e85f6e814430c1755147c913eb91090a439bf4)
14
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose
15
+ `Workspace.flushLayout()` for hosts to await the latest serialized layout
16
+ write before closing or reloading. Retain normal debounced persistence, report
17
+ and retry failures, and drain accepted writes before disposing the host.
18
+
19
+ - [`fdee7e4`](https://github.com/lapismd/lapis-notes/commit/fdee7e4defde17a1009e16138d78c93c3ead8e2f)
20
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose an optional
21
+ conditional text-write port and an explicit native capability. Supporting
22
+ native hosts receive the caller's exact text snapshot or expected absence.
23
+ Unsupported hosts reject without falling back to an ordinary write.
24
+
25
+ - [`d8946b9`](https://github.com/lapismd/lapis-notes/commit/d8946b941569484b813eb0c1e8b1c5729fffc1a7)
26
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Add owned
27
+ diagnostic-resource navigation and themed recovery-banner actions. Accept
28
+ Design Core 0.5.1 alongside the existing 0.4 range.
29
+
30
+ - [`ebf033a`](https://github.com/lapismd/lapis-notes/commit/ebf033af0fc0752be5ce5ffa7d55784163d291b4)
31
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Retain document-owned
32
+ conditional save baselines and expose App-owned text conflicts with explicit,
33
+ snapshot-checked recovery for supporting vaults.
34
+
35
+ - [`978b987`](https://github.com/lapismd/lapis-notes/commit/978b987ba4c95408a63e49fad11bc44bab020758)
36
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose an explicit
37
+ AppDatabase provider runtime and retain the deprecated runtime value for
38
+ existing consumers.
39
+
40
+ - [`ad4490c`](https://github.com/lapismd/lapis-notes/commit/ad4490ca1cd808002765582a17a5c81fa5335e0d)
41
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose optional rename
42
+ hints and awaitable native watch cleanup. Retire replaced or closed
43
+ DirectoryWatcher generations before awaiting cleanup, retain failures for
44
+ retry, and preserve complete polling state after read failures.
45
+
46
+ - [`55be8dc`](https://github.com/lapismd/lapis-notes/commit/55be8dce6f7b19b0e8036be86a3cf5305db25317)
47
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Let file-view plugins
48
+ contribute a fileIcon ID for their filename patterns or registered extensions.
49
+ Add App-owned SVG and icon-pack registration with plugin lifecycle cleanup,
50
+ preserve legacy icon registrations, and refresh Explorer artwork on editor,
51
+ plugin and file changes.
52
+
53
+ Release the scoped Design Core resolver first and raise the dependent minimum
54
+ ranges to the releases containing these contracts before publishing consumers.
55
+
56
+ Upgrade API-owned Zod to the patched package while retaining its public v3
57
+ schema entry for compatibility.
58
+
59
+ - [`8a27bc3`](https://github.com/lapismd/lapis-notes/commit/8a27bc36a7a7fa81594e517908a6f5ed8ca77313)
60
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose captured, guarded
61
+ merged-text conflict recovery for desktop review.
62
+
63
+ - [`1e64589`](https://github.com/lapismd/lapis-notes/commit/1e6458922b486c07f36a5bc7d85d020b5805cd49)
64
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Use `.lapis` as the
65
+ shared application-state default and recognize the Tauri desktop runtime.
66
+ Tauri database sessions require an injected native provider. Expose runtime
67
+ classification independently of database and model services. Unreleased state
68
+ is not imported from the old directory.
69
+
70
+ ### Patch Changes
71
+
72
+ - [`631aeec`](https://github.com/lapismd/lapis-notes/commit/631aeec539e2fb061dc80c5c3a30a248ee15c529)
73
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Preserve newer plugin
74
+ views and activation when an older workspace controller snapshot is still
75
+ queued.
76
+
77
+ - [`a91d5e2`](https://github.com/lapismd/lapis-notes/commit/a91d5e2eb5ec037029f6a7a2df316a9bd9440af7)
78
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Attach controller-opened
79
+ views after their API workspace projection completes, and cancel deferred
80
+ attachment when the view host closes.
81
+
82
+ - [`fbba8d4`](https://github.com/lapismd/lapis-notes/commit/fbba8d48498c34939fec475e6bed67a682045820)
83
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Retain plugin-state and
84
+ compatibility-file drafts through close and conflict recovery, drain admitted
85
+ plugin/file operations before teardown, and preserve Properties mutations
86
+ after initial read failures.
87
+
88
+ - [`023259d`](https://github.com/lapismd/lapis-notes/commit/023259d96d4ff0414fec6427924ed917f89405a3)
89
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Add an optional exclusive
90
+ file-creation transport and route Explorer new-note actions through the
91
+ FileManager creation intent. Preserve existing destinations on collisions and
92
+ keep legacy Vault creation semantics explicit.
93
+
94
+ - Require released Design Core 0.6 for the close-guard, plugin-flush and
95
+ centered panel contracts used by current source. Retain portable registry
96
+ dependency ranges for the shared application runtime.
97
+
98
+ - [`63a5e7f`](https://github.com/lapismd/lapis-notes/commit/63a5e7fe40eea45762b5842b588c742076c7dd1d)
99
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Rebind clean file views
100
+ after their rename or move releases editing protection, so the open editor
101
+ continues saving to the new path. Preserve ordered App-owned projection and
102
+ dirty external-file recovery.
103
+
104
+ - [`2bffe48`](https://github.com/lapismd/lapis-notes/commit/2bffe484b38761af197afe7ab9b0d7b3affb50d7)
105
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Serialize configuration
106
+ changes and retain pending or failed settings and hotkey drafts in the owning
107
+ App's conditional persistence lifecycle. Admit shared Workspace Settings
108
+ changes before presentation debounce so immediate close cannot lose them.
109
+
110
+ - [`86f6316`](https://github.com/lapismd/lapis-notes/commit/86f63166c3d5be648c595ef4e230ea6c4081bc48)
111
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Protect frontmatter and
112
+ metadata type mutations with the App-owned writer lifecycle, authoritative
113
+ conditional baselines and retained text-conflict recovery.
114
+
115
+ - [`edf1d76`](https://github.com/lapismd/lapis-notes/commit/edf1d76f4f3aa0442c1d9153d812f29b7d14e5c2)
116
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Allow read-only
117
+ configuration baseline reconciliation after a guarded native mutation without
118
+ materializing defaults or adding another persistence operation.
119
+
120
+ - [`b3be91d`](https://github.com/lapismd/lapis-notes/commit/b3be91daecbd43187bacf8cfdc39f8311d700720)
121
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Reconcile a clean
122
+ interactive producer's drifted authoritative saved bytes under held protection
123
+ before the guarded native-yield saved-baseline comparison (LN-CORE-028). An
124
+ external file change that a lagging watch projection has not acknowledged no
125
+ longer aborts an admitted frontmatter/state mutation with a bare ECONFLICT
126
+ notice; producers that cannot acknowledge, and dirty writers, keep the
127
+ fail-closed handoff fence with its observable explicit retry.
128
+
129
+ - [`5ef0a63`](https://github.com/lapismd/lapis-notes/commit/5ef0a6331c1b846b70357f990d919977a561112c)
130
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Qualify the shared editor
131
+ against Mira 0.0.5 so native hosts can consume the source-owned accessible
132
+ block-control repair through verified local archives during migration.
133
+
134
+ Retain direct Turso connection ownership after a failed close, drain accepted
135
+ mutations, and share concurrent close completion so native teardown can be
136
+ retried safely.
137
+
138
+ - [`bac3e5e`](https://github.com/lapismd/lapis-notes/commit/bac3e5eda6f467dbc86ec88c9f27a275f2b27953)
139
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose optional
140
+ implemented system trash through the neutral native adapter with explicit
141
+ unsupported fallback and validated acknowledgements. Attribute Explorer
142
+ native/copy feedback to its owning App and reject unavailable clipboard
143
+ support without reporting success.
144
+
145
+ - [`74f544e`](https://github.com/lapismd/lapis-notes/commit/74f544e2aa8a967524c0c218f3db7e1a495a1a17)
146
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Add an explicitly started
147
+ App-owned watch service with bounded reconciliation and awaitable
148
+ stop/restart. Project external changes through existing workspace/editor
149
+ lifecycles, preserving dirty views and retained writers while clean views
150
+ follow file moves and removals.
151
+
152
+ - [`501c50e`](https://github.com/lapismd/lapis-notes/commit/501c50e049264560e13e29c75a74c089922c7297)
153
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Project owned App notices
154
+ through the existing workspace notification UI and retire their subscription
155
+ on host disposal. Pass the explicit Explorer App when reporting file-action
156
+ failures.
157
+
158
+ - [`98b333f`](https://github.com/lapismd/lapis-notes/commit/98b333f73ff5ba8d5f28c52e4e3a2ceaa5ade0fb)
159
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Protect and flush
160
+ registered file writers before FileManager trash or deletion, including folder
161
+ descendants. Route Explorer deletion through that guard so failed writes
162
+ retain the file and dirty draft until explicit recovery.
163
+
164
+ - [`535a6cc`](https://github.com/lapismd/lapis-notes/commit/535a6cc7b39f397cf8761a06db7b831386121928)
165
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose document-owned
166
+ conditional text persistence with asynchronous, operation-owned recovery
167
+ leases for independent file writers.
168
+
169
+ - [`109e208`](https://github.com/lapismd/lapis-notes/commit/109e208a63253dcc1a7abad3fd5a9b13c39d3def)
170
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Reconcile complete
171
+ bounded disk snapshots while preserving canonical Vault resource identities,
172
+ descendant lifecycle events and filename indexes. Serialize mutations through
173
+ projection and keep existing binary/text writes coherent with cached content
174
+ and tree children.
175
+
176
+ - [`f828eae`](https://github.com/lapismd/lapis-notes/commit/f828eaeba8411aa342d7ab4954393e84612af2f3)
177
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose core file
178
+ discovery exclusions as an editable list under Workspace settings.
179
+ - Updated dependencies
180
+ [[`d8946b9`](https://github.com/lapismd/lapis-notes/commit/d8946b941569484b813eb0c1e8b1c5729fffc1a7)]:
181
+ - @lapis-notes/ui@0.1.4
182
+
183
+ ## 0.1.5
184
+
185
+ ### Patch Changes
186
+
187
+ - [#36](https://github.com/lapismd/lapis-notes/pull/36)
188
+ [`17060a1`](https://github.com/lapismd/lapis-notes/commit/17060a1df152c9fc2302c93767cd7172868ff030)
189
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Consume published Design
190
+ Core 0.5.0 with prepared browser CSS and bundled font assets through normal
191
+ npm ranges.
192
+ - Updated dependencies
193
+ [[`17060a1`](https://github.com/lapismd/lapis-notes/commit/17060a1df152c9fc2302c93767cd7172868ff030)]:
194
+ - @lapis-notes/ui@0.1.4
195
+
196
+ ## 0.1.4
197
+
198
+ ### Patch Changes
199
+
200
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
201
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
202
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Keep editor saves and
203
+ failures bound to their original document and App across file switches and
204
+ close. Register retained writers with the App-owned session registry, expose
205
+ protection and awaitable disposal, and support a captured asynchronous
206
+ external persistence writer. Block typing/rebinding during guarded admission
207
+ while allowing controlled clean refresh.
208
+
209
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
210
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
211
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose the headless
212
+ opaque Sync repository contract and add purpose-separated local-state
213
+ encryption for durable encrypted checkpoints and publication queues. Existing
214
+ encrypted object tags and wire formats remain compatible.
215
+
216
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
217
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
218
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose an App-owned file
219
+ editing-session registry for independent file writers. Serialize guarded
220
+ mutation, protect and flush every matching session before admission, retain
221
+ detached dirty writers for retry, and drain cleanup before another mutation or
222
+ shutdown. Production Sync guard selection still requires complete writer
223
+ integration.
224
+
225
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
226
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
227
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Register and protect
228
+ asynchronous editor document loads before reading, drain original drafts and
229
+ publish the target file and contents together. Superseded, unloaded and failed
230
+ loads preserve the previous document and release their provisional session.
231
+ Managed file and folder renames now protect and flush all registered writers
232
+ before moving files or rewriting links.
233
+
234
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
235
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
236
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Expose protocol-neutral
237
+ guarded file generations, immutable mutation identifiers, durable receipts and
238
+ an opaque local-state crypto boundary for host-owned native Sync vault
239
+ transactions. Existing protocol and encryption formats stay unchanged.
240
+
241
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
242
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
243
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Add explicit
244
+ host-delivered pairing without relay addresses while preserving default relay
245
+ invitations and the signed/encrypted Nostr message format. Expose copied
246
+ installed content-key epoch numbers only while unlocked so history policy can
247
+ use the actual keyring instead of assuming an epoch.
248
+
249
+ Expose the same implementation through the headless `sync-security-host`
250
+ export for trusted Node/Deno hosts, with no plugin runtime platforms
251
+ advertised.
252
+
253
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
254
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
255
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Allow trusted hosts to
256
+ retain wrapped Sync keys and network grants in a dedicated security store
257
+ independent of disposable application indexes. Keep legacy storage compatible
258
+ and reject invalid or unavailable dedicated stores without fallback.
259
+
260
+ Expose the shared metadata-store types through a headless host-only
261
+ entrypoint, retaining the existing AppDatabase metadata exports.
262
+
263
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
264
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
265
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Add an optional opaque
266
+ immutable record repository extension for independently encrypted local
267
+ receipts. Native mutation recovery can compact completed work without growing
268
+ its active journal or exposing receipt contents in an index.
269
+
270
+ - [#28](https://github.com/lapismd/lapis-notes/pull/28)
271
+ [`967a92f`](https://github.com/lapismd/lapis-notes/commit/967a92fb123c9cb66fca976c689fafdd00aa65b6)
272
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Allow trusted hosts to
273
+ delegate scoped Sync security to native custody while preserving legacy plugin
274
+ credentials. Check permissions before and after asynchronous operations,
275
+ reject local enrollment for delegated plugins, and await security revocation
276
+ when a plugin is disabled, including unload failures. Add host disposal that
277
+ invalidates runtimes and drains delegated cleanup.
278
+
3
279
  ## 0.1.3
4
280
 
5
281
  ### Patch Changes
6
282
 
7
- - [#19](https://github.com/lapismd/lapis-notes/pull/19) [`a85055b`](https://github.com/lapismd/lapis-notes/commit/a85055b6570244d5dde2ea1145be3609260d91ca) Thanks [@stevejuma](https://github.com/stevejuma)! - Restore the omitted API 0.1.2 release notes and keep changelog generation
8
- independent of optional code formatter plugins. Verify current-version notes
9
- before and after preparing a release so incomplete changelogs stop publication.
283
+ - [#19](https://github.com/lapismd/lapis-notes/pull/19)
284
+ [`a85055b`](https://github.com/lapismd/lapis-notes/commit/a85055b6570244d5dde2ea1145be3609260d91ca)
285
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Restore the omitted API
286
+ 0.1.2 release notes and keep changelog generation independent of optional code
287
+ formatter plugins. Verify current-version notes before and after preparing a
288
+ release so incomplete changelogs stop publication.
10
289
 
11
- - [#17](https://github.com/lapismd/lapis-notes/pull/17) [`0c8cbd0`](https://github.com/lapismd/lapis-notes/commit/0c8cbd0811663a9c63590d4d730445c80df91e6c) Thanks [@stevejuma](https://github.com/stevejuma)! - Download selected plugin releases through the catalog's signed delivery endpoint
12
- so browser hosts can install archives from the registry. Retain verified archive
13
- integrity and signatures, allow origin fallback for transport failures, and stop
14
- fallback after cancellation or revocation.
290
+ - [#17](https://github.com/lapismd/lapis-notes/pull/17)
291
+ [`0c8cbd0`](https://github.com/lapismd/lapis-notes/commit/0c8cbd0811663a9c63590d4d730445c80df91e6c)
292
+ Thanks [@stevejuma](https://github.com/stevejuma)! - Download selected plugin
293
+ releases through the catalog's signed delivery endpoint so browser hosts can
294
+ install archives from the registry. Retain verified archive integrity and
295
+ signatures, allow origin fallback for transport failures, and stop fallback
296
+ after cancellation or revocation.
15
297
 
16
298
  ## 0.1.2
17
299
 
18
300
  ### Patch Changes
19
301
 
20
- - Use published Bits UI 2.19.5 so destroyed text-selection layers stop document pointer listeners before reading component-owned reactive state. Retain the existing approved Link Preview selection-probe and listener cleanup when refreshing the runtime.
21
- - Require published Design Core 0.3.2 for native window-controls spacing, bold settings headings, selected-tab indicators and mobile shell teardown. Consume the npm release through portable semver ranges and lockfile integrity.
22
- - Expose the existing optional App argument in the Notice declaration so app-owned callers can use the public constructor without falling back to compatibility state.
302
+ - Use published Bits UI 2.19.5 so destroyed text-selection layers stop document
303
+ pointer listeners before reading component-owned reactive state. Retain the
304
+ existing approved Link Preview selection-probe and listener cleanup when
305
+ refreshing the runtime.
306
+ - Require published Design Core 0.3.2 for native window-controls spacing, bold
307
+ settings headings, selected-tab indicators and mobile shell teardown. Consume
308
+ the npm release through portable semver ranges and lockfile integrity.
309
+ - Expose the existing optional App argument in the Notice declaration so
310
+ app-owned callers can use the public constructor without falling back to
311
+ compatibility state.
23
312
 
24
313
  ## 0.1.1
25
314
 
@@ -28,14 +317,16 @@
28
317
  - Own the transport-neutral registry schema and portable Turso build helper,
29
318
  removing the Community dependency from static registry producers and hosts.
30
319
 
31
- - Expose host-owned secure sync capabilities and controlled declarative plugin settings.
320
+ - Expose host-owned secure sync capabilities and controlled declarative plugin
321
+ settings.
32
322
 
33
323
  - Allow indexed consumers to select metadata fingerprint inputs. Preserve native
34
324
  filesystem error codes and reconcile files removed during startup as deletions
35
325
  while retaining unexpected read failures.
36
326
 
37
- - Support verified static V2 catalogs alongside Nostr sources, retain installation
38
- source provenance, and render themed registry images and structured release notes.
327
+ - Support verified static V2 catalogs alongside Nostr sources, retain
328
+ installation source provenance, and render themed registry images and
329
+ structured release notes.
39
330
  - Updated dependencies []:
40
331
  - @lapis-notes/ui@0.1.1
41
332
 
package/README.md CHANGED
@@ -46,3 +46,22 @@ pnpm --filter @lapis-notes/api test
46
46
  - [Package spec](spec.md)
47
47
  - [Canonical spec](../../spec/src/20-packages/api/index.md)
48
48
  - [App state model](../../spec/src/20-packages/api/app-state-and-workspace-model.md)
49
+
50
+ ### Plugin file icons
51
+
52
+ File-view plugins may set `fileIcon` on `registerEditorView` contributions, or
53
+ pass `{ fileIcon }` as the third `registerExtensions` argument. The value is an
54
+ icon ID: built-in Lucide names, existing `addIcon` IDs, and registered icon-pack
55
+ entries work through the same resolver.
56
+
57
+ Use `const fileIcon = this.registerIcon("diagram", diagramSvg)` to register
58
+ custom SVG artwork in the owning App. The returned ID is namespaced and the
59
+ plugin automatically releases it on unload. `this.registerIconPack({ name,
60
+ icons })` or an asynchronous `loader` returns the owned pack prefix; reference
61
+ its entries as `prefix:icon`. Legacy global registrations retain their existing
62
+ shared-name behavior and caller-owned cleanup.
63
+
64
+ Explorer uses editor associations and pattern priority to choose the
65
+ contribution, then resolves artwork through `app.icons`. Pending, missing or
66
+ failed artwork retains the filename icon. Changes repaint existing rows;
67
+ rendering an icon never activates a plugin or constructs its file view.