sqlrite 0.10.1__tar.gz → 0.10.2__tar.gz

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 (297) hide show
  1. {sqlrite-0.10.1 → sqlrite-0.10.2}/.github/workflows/ci.yml +60 -0
  2. sqlrite-0.10.2/.github/workflows/journal-release.yml +103 -0
  3. {sqlrite-0.10.1 → sqlrite-0.10.2}/.github/workflows/release-pr.yml +9 -7
  4. {sqlrite-0.10.1 → sqlrite-0.10.2}/.github/workflows/release.yml +105 -1
  5. sqlrite-0.10.2/AGENTS.md +102 -0
  6. {sqlrite-0.10.1 → sqlrite-0.10.2}/Cargo.lock +20 -7
  7. {sqlrite-0.10.1 → sqlrite-0.10.2}/Cargo.toml +2 -2
  8. {sqlrite-0.10.1 → sqlrite-0.10.2}/PKG-INFO +1 -1
  9. {sqlrite-0.10.1 → sqlrite-0.10.2}/README.md +1 -0
  10. sqlrite-0.10.2/desktop/README.md +52 -0
  11. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/package-lock.json +2 -2
  12. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/package.json +1 -1
  13. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/src/App.svelte +19 -0
  14. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/src/app.css +9 -0
  15. sqlrite-0.10.2/desktop/src/lib/SettingsPanel.svelte +327 -0
  16. sqlrite-0.10.2/desktop/src/lib/api.ts +45 -0
  17. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/release-plan.md +12 -3
  18. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/release-secrets.md +58 -9
  19. sqlrite-0.10.2/examples/desktop-journal/.gitignore +9 -0
  20. sqlrite-0.10.2/examples/desktop-journal/README.md +231 -0
  21. sqlrite-0.10.2/examples/desktop-journal/demo/.gitignore +9 -0
  22. sqlrite-0.10.2/examples/desktop-journal/demo/README.md +57 -0
  23. sqlrite-0.10.2/examples/desktop-journal/demo/package-lock.json +2943 -0
  24. sqlrite-0.10.2/examples/desktop-journal/demo/package.json +26 -0
  25. sqlrite-0.10.2/examples/desktop-journal/demo/remotion.config.ts +9 -0
  26. sqlrite-0.10.2/examples/desktop-journal/demo/src/Caption.tsx +62 -0
  27. sqlrite-0.10.2/examples/desktop-journal/demo/src/Demo.tsx +120 -0
  28. sqlrite-0.10.2/examples/desktop-journal/demo/src/Pan.tsx +74 -0
  29. sqlrite-0.10.2/examples/desktop-journal/demo/src/Root.tsx +21 -0
  30. sqlrite-0.10.2/examples/desktop-journal/demo/src/index.ts +7 -0
  31. sqlrite-0.10.2/examples/desktop-journal/demo/tsconfig.json +15 -0
  32. sqlrite-0.10.2/examples/desktop-journal/docs/demo.gif +0 -0
  33. sqlrite-0.10.2/examples/desktop-journal/docs/demo.mp4 +0 -0
  34. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/01-empty.png +0 -0
  35. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/02-new-entry.png +0 -0
  36. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/03-markdown-preview.png +0 -0
  37. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/04-list-and-tags.png +0 -0
  38. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/05-fts-highlight.png +0 -0
  39. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/06-settings.png +0 -0
  40. sqlrite-0.10.2/examples/desktop-journal/docs/screenshots/07-ask-panel.png +0 -0
  41. sqlrite-0.10.2/examples/desktop-journal/index.html +12 -0
  42. sqlrite-0.10.2/examples/desktop-journal/package-lock.json +2298 -0
  43. sqlrite-0.10.2/examples/desktop-journal/package.json +30 -0
  44. sqlrite-0.10.2/examples/desktop-journal/src/App.svelte +317 -0
  45. sqlrite-0.10.2/examples/desktop-journal/src/app.css +123 -0
  46. sqlrite-0.10.2/examples/desktop-journal/src/lib/AskPanel.svelte +137 -0
  47. sqlrite-0.10.2/examples/desktop-journal/src/lib/EntryEditor.svelte +172 -0
  48. sqlrite-0.10.2/examples/desktop-journal/src/lib/EntryList.svelte +66 -0
  49. sqlrite-0.10.2/examples/desktop-journal/src/lib/SettingsPanel.svelte +171 -0
  50. sqlrite-0.10.2/examples/desktop-journal/src/lib/api.ts +134 -0
  51. sqlrite-0.10.2/examples/desktop-journal/src/main.ts +11 -0
  52. sqlrite-0.10.2/examples/desktop-journal/src/vite-env.d.ts +2 -0
  53. sqlrite-0.10.2/examples/desktop-journal/svelte.config.js +5 -0
  54. sqlrite-0.10.2/examples/desktop-journal/tsconfig.json +17 -0
  55. sqlrite-0.10.2/examples/desktop-journal/vite.config.ts +30 -0
  56. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/README.md +23 -16
  57. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/package-lock.json +6 -6
  58. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/package.json +12 -4
  59. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/cli.mjs +8 -1
  60. {sqlrite-0.10.1 → sqlrite-0.10.2}/pyproject.toml +1 -1
  61. {sqlrite-0.10.1 → sqlrite-0.10.2}/scripts/bump-version.sh +38 -4
  62. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/python/Cargo.toml +1 -1
  63. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/Cargo.toml +1 -1
  64. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/examples/page.tsx +67 -3
  65. {sqlrite-0.10.1 → sqlrite-0.10.2}/.github/workflows/rust.yml +0 -0
  66. {sqlrite-0.10.1 → sqlrite-0.10.2}/.gitignore +0 -0
  67. {sqlrite-0.10.1 → sqlrite-0.10.2}/CLAUDE.md +0 -0
  68. {sqlrite-0.10.1 → sqlrite-0.10.2}/CODE_OF_CONDUCT.md +0 -0
  69. {sqlrite-0.10.1 → sqlrite-0.10.2}/LICENSE +0 -0
  70. {sqlrite-0.10.1 → sqlrite-0.10.2}/MAINTAINERS +0 -0
  71. {sqlrite-0.10.1 → sqlrite-0.10.2}/Makefile +0 -0
  72. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/index.html +0 -0
  73. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/src/main.ts +0 -0
  74. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/src/vite-env.d.ts +0 -0
  75. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/svelte.config.js +0 -0
  76. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/tsconfig.json +0 -0
  77. {sqlrite-0.10.1 → sqlrite-0.10.2}/desktop/vite.config.ts +0 -0
  78. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/_index.md +0 -0
  79. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/architecture.md +0 -0
  80. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/ask-backend-examples.md +0 -0
  81. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/ask.md +0 -0
  82. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/benchmarks-plan.md +0 -0
  83. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/benchmarks.md +0 -0
  84. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/concurrent-writes-plan.md +0 -0
  85. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/concurrent-writes.md +0 -0
  86. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/design-decisions.md +0 -0
  87. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/desktop.md +0 -0
  88. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/embedding.md +0 -0
  89. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/file-format.md +0 -0
  90. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/fts.md +0 -0
  91. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/getting-started.md +0 -0
  92. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/mcp.md +0 -0
  93. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/pager.md +0 -0
  94. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/phase-7-plan.md +0 -0
  95. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/phase-8-plan.md +0 -0
  96. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/roadmap.md +0 -0
  97. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/smoke-test.md +0 -0
  98. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/sql-engine.md +0 -0
  99. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/storage-model.md +0 -0
  100. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/supported-sql.md +0 -0
  101. {sqlrite-0.10.1 → sqlrite-0.10.2}/docs/usage.md +0 -0
  102. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/README.md +0 -0
  103. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/c/Makefile +0 -0
  104. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/c/hello.c +0 -0
  105. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/go/go.mod +0 -0
  106. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/go/hello.go +0 -0
  107. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/hybrid-retrieval/README.md +0 -0
  108. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/hybrid-retrieval/hybrid_retrieval.rs +0 -0
  109. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs/hello.mjs +0 -0
  110. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/.gitignore +0 -0
  111. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/bin/sqlrite-notes.mjs +0 -0
  112. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/chunker.mjs +0 -0
  113. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/claude-config.mjs +0 -0
  114. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/config.mjs +0 -0
  115. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/db.mjs +0 -0
  116. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/embeddings.mjs +0 -0
  117. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/ingest.mjs +0 -0
  118. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/search.mjs +0 -0
  119. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/serve.mjs +0 -0
  120. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/src/sqlutil.mjs +0 -0
  121. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/chunker.test.mjs +0 -0
  122. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/claude-config.test.mjs +0 -0
  123. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/db.test.mjs +0 -0
  124. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/embeddings.test.mjs +0 -0
  125. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/fixtures/crdts.md +0 -0
  126. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/fixtures/postgres.md +0 -0
  127. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/fixtures/running.md +0 -0
  128. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/ingest.test.mjs +0 -0
  129. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/serve.test.mjs +0 -0
  130. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/nodejs-notes/test/sqlutil.test.mjs +0 -0
  131. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python/hello.py +0 -0
  132. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/.gitignore +0 -0
  133. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/README.md +0 -0
  134. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/pyproject.toml +0 -0
  135. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/__init__.py +0 -0
  136. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/__main__.py +0 -0
  137. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/agent.py +0 -0
  138. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/chat.py +0 -0
  139. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/cli.py +0 -0
  140. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/db.py +0 -0
  141. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/embeddings.py +0 -0
  142. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/facts.py +0 -0
  143. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/memory.py +0 -0
  144. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/sqlrite_agent/sqlutil.py +0 -0
  145. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/conftest.py +0 -0
  146. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/test_agent.py +0 -0
  147. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/test_db.py +0 -0
  148. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/test_facts.py +0 -0
  149. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/test_memory.py +0 -0
  150. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/python-agent/tests/test_sqlutil.py +0 -0
  151. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/rust/concurrent_writers.rs +0 -0
  152. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/rust/quickstart.rs +0 -0
  153. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/wasm/Makefile +0 -0
  154. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/wasm/index.html +0 -0
  155. {sqlrite-0.10.1 → sqlrite-0.10.2}/examples/wasm/server.mjs +0 -0
  156. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite - Desktop.png +0 -0
  157. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite Data Structures.png +0 -0
  158. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite Simple SQL Execution High Level Diagram.png +0 -0
  159. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite Simple SQL INSERT Execution High Level Diagram (Insert Row).png +0 -0
  160. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite Simple SQL INSERT Execution High Level Diagram.png +0 -0
  161. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/SQLRite_logo.png +0 -0
  162. {sqlrite-0.10.1 → sqlrite-0.10.2}/images/architecture.png +0 -0
  163. {sqlrite-0.10.1 → sqlrite-0.10.2}/rust-toolchain.toml +0 -0
  164. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/AST.delete.example +0 -0
  165. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/AST.insert.exemple +0 -0
  166. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/AST.select.example +0 -0
  167. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/AST.update.example +0 -0
  168. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/CREATE TABLE sqlrite_schema.sql +0 -0
  169. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/CREATE_TABLE with duplicate.sql +0 -0
  170. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/CREATE_TABLE.sql +0 -0
  171. {sqlrite-0.10.1 → sqlrite-0.10.2}/samples/INSERT.sql +0 -0
  172. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/README.md +0 -0
  173. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/ask.go +0 -0
  174. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/ask_test.go +0 -0
  175. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/conn.go +0 -0
  176. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/go.mod +0 -0
  177. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/rows.go +0 -0
  178. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/sqlrite.go +0 -0
  179. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/sqlrite_test.go +0 -0
  180. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/go/stmt.go +0 -0
  181. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/python/README.md +0 -0
  182. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/python/src/lib.rs +0 -0
  183. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/python/tests/test_ask.py +0 -0
  184. {sqlrite-0.10.1 → sqlrite-0.10.2}/sdk/python/tests/test_sqlrite.py +0 -0
  185. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/README.md +0 -0
  186. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/src/lib.rs +0 -0
  187. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/src/prompt.rs +0 -0
  188. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/src/provider/anthropic.rs +0 -0
  189. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/src/provider/mock.rs +0 -0
  190. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/src/provider/mod.rs +0 -0
  191. {sqlrite-0.10.1 → sqlrite-0.10.2}/sqlrite-ask/tests/anthropic_http.rs +0 -0
  192. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/ask/mod.rs +0 -0
  193. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/ask/schema.rs +0 -0
  194. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/connection.rs +0 -0
  195. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/error.rs +0 -0
  196. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/lib.rs +0 -0
  197. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/main.rs +0 -0
  198. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/meta_command/mod.rs +0 -0
  199. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/clock.rs +0 -0
  200. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/log.rs +0 -0
  201. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/mod.rs +0 -0
  202. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/registry.rs +0 -0
  203. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/store.rs +0 -0
  204. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/mvcc/transaction.rs +0 -0
  205. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/repl/mod.rs +0 -0
  206. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/agg.rs +0 -0
  207. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/db/database.rs +0 -0
  208. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/db/mod.rs +0 -0
  209. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/db/secondary_index.rs +0 -0
  210. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/db/table.rs +0 -0
  211. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/dialect.rs +0 -0
  212. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/executor.rs +0 -0
  213. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/fts/bm25.rs +0 -0
  214. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/fts/mod.rs +0 -0
  215. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/fts/posting_list.rs +0 -0
  216. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/fts/tokenizer.rs +0 -0
  217. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/hnsw.rs +0 -0
  218. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/mod.rs +0 -0
  219. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/allocator.rs +0 -0
  220. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/cell.rs +0 -0
  221. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/file.rs +0 -0
  222. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/freelist.rs +0 -0
  223. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/fts_cell.rs +0 -0
  224. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/header.rs +0 -0
  225. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/hnsw_cell.rs +0 -0
  226. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/index_cell.rs +0 -0
  227. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/interior_page.rs +0 -0
  228. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/mod.rs +0 -0
  229. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/overflow.rs +0 -0
  230. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/page.rs +0 -0
  231. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/pager.rs +0 -0
  232. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/table_page.rs +0 -0
  233. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/varint.rs +0 -0
  234. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pager/wal.rs +0 -0
  235. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/params.rs +0 -0
  236. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/parser/create.rs +0 -0
  237. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/parser/insert.rs +0 -0
  238. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/parser/mod.rs +0 -0
  239. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/parser/select.rs +0 -0
  240. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/pragma.rs +0 -0
  241. {sqlrite-0.10.1 → sqlrite-0.10.2}/src/sql/tokenizer.rs +0 -0
  242. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/.gitignore +0 -0
  243. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/README.md +0 -0
  244. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/components.json +0 -0
  245. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/adding-vector-search-with-hnsw.mdx +0 -0
  246. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/how-sqlrite-stores-rows-on-disk.mdx +0 -0
  247. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/shipping-concurrent-writes-mvcc-v010.mdx +0 -0
  248. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/shipping-sqlrite-tauri-mcp-sdks.mdx +0 -0
  249. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/sqlrite-vs-sqlite-benchmarks.mdx +0 -0
  250. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/content/blog/why-im-building-sqlrite.mdx +0 -0
  251. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/eslint.config.mjs +0 -0
  252. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/next.config.ts +0 -0
  253. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/package-lock.json +0 -0
  254. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/package.json +0 -0
  255. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/postcss.config.mjs +0 -0
  256. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/seo/keywords.md +0 -0
  257. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/[slug]/opengraph-image.tsx +0 -0
  258. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/[slug]/page.tsx +0 -0
  259. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/[slug]/twitter-image.tsx +0 -0
  260. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/page.tsx +0 -0
  261. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/rss.xml/route.ts +0 -0
  262. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/blog/tags/[tag]/page.tsx +0 -0
  263. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/docs/opengraph-image.tsx +0 -0
  264. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/docs/page.tsx +0 -0
  265. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/docs/twitter-image.tsx +0 -0
  266. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/globals.css +0 -0
  267. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/layout.tsx +0 -0
  268. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/opengraph-image.tsx +0 -0
  269. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/page.tsx +0 -0
  270. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/robots.ts +0 -0
  271. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/sitemap.ts +0 -0
  272. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/app/twitter-image.tsx +0 -0
  273. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/architecture.tsx +0 -0
  274. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/benchmarks.tsx +0 -0
  275. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/blog-mdx.tsx +0 -0
  276. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/blog.tsx +0 -0
  277. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/cta-strip.tsx +0 -0
  278. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/desktop.tsx +0 -0
  279. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/features.tsx +0 -0
  280. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/footer.tsx +0 -0
  281. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/hero.tsx +0 -0
  282. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/icons.tsx +0 -0
  283. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/install-bar.tsx +0 -0
  284. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/nav.tsx +0 -0
  285. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/roadmap.tsx +0 -0
  286. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/sdk-showcase-client.tsx +0 -0
  287. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/sdk-showcase.tsx +0 -0
  288. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/sql-ref.tsx +0 -0
  289. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/components/terminal.tsx +0 -0
  290. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/benchmarks.ts +0 -0
  291. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/blog.ts +0 -0
  292. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/highlight.ts +0 -0
  293. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/og.tsx +0 -0
  294. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/site.ts +0 -0
  295. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/lib/utils.ts +0 -0
  296. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/src/middleware.ts +0 -0
  297. {sqlrite-0.10.1 → sqlrite-0.10.2}/web/tsconfig.json +0 -0
@@ -10,6 +10,7 @@
10
10
  # - go-sdk {ubuntu, macos} cgo against libsqlrite_c + go test
11
11
  # - wasm-build ubuntu wasm-pack build + size report
12
12
  # - desktop-build ubuntu npm ci + cargo build -p sqlrite-desktop
13
+ # - journal-build ubuntu npm ci + cargo build -p sqlrite-journal (SQLR-41 example)
13
14
  #
14
15
  # All jobs use caching so a warm PR run takes 2–3 minutes on ubuntu.
15
16
  # Go CI skips Windows for Phase 6b — Go's cgo on Windows needs a mingw
@@ -102,6 +103,7 @@ jobs:
102
103
  run: |
103
104
  cargo build --workspace \
104
105
  --exclude sqlrite-desktop \
106
+ --exclude sqlrite-journal \
105
107
  --exclude sqlrite-python \
106
108
  --exclude sqlrite-nodejs \
107
109
  --exclude sqlrite-benchmarks \
@@ -111,6 +113,7 @@ jobs:
111
113
  run: |
112
114
  cargo test --workspace \
113
115
  --exclude sqlrite-desktop \
116
+ --exclude sqlrite-journal \
114
117
  --exclude sqlrite-python \
115
118
  --exclude sqlrite-nodejs \
116
119
  --exclude sqlrite-benchmarks
@@ -147,6 +150,7 @@ jobs:
147
150
  run: |
148
151
  cargo clippy --workspace \
149
152
  --exclude sqlrite-desktop \
153
+ --exclude sqlrite-journal \
150
154
  --exclude sqlrite-python \
151
155
  --exclude sqlrite-nodejs \
152
156
  --exclude sqlrite-benchmarks \
@@ -158,6 +162,7 @@ jobs:
158
162
  run: |
159
163
  cargo doc --workspace \
160
164
  --exclude sqlrite-desktop \
165
+ --exclude sqlrite-journal \
161
166
  --exclude sqlrite-python \
162
167
  --exclude sqlrite-nodejs \
163
168
  --exclude sqlrite-benchmarks \
@@ -400,3 +405,58 @@ jobs:
400
405
 
401
406
  - name: Build Rust side
402
407
  run: cargo build -p sqlrite-desktop
408
+
409
+ # ---------------------------------------------------------------------------
410
+ # Journal example (SQLR-41): Tauri 2 + Svelte 5 daily-notes app under
411
+ # `examples/desktop-journal/`. Same shape as `desktop-build` — frontend
412
+ # first, then `cargo build -p sqlrite-journal`. Excluded from the
413
+ # default workspace commands for the same reasons (Svelte build is a
414
+ # prerequisite that the main rust-build-and-test job can't satisfy).
415
+ journal-build:
416
+ name: journal-build
417
+ runs-on: ubuntu-latest
418
+ steps:
419
+ - uses: actions/checkout@v4
420
+
421
+ - uses: actions/setup-node@v4
422
+ with:
423
+ node-version: '20'
424
+ cache: 'npm'
425
+ cache-dependency-path: examples/desktop-journal/package-lock.json
426
+
427
+ - uses: dtolnay/rust-toolchain@stable
428
+
429
+ - name: Install Tauri Linux deps
430
+ run: |
431
+ sudo apt-get update
432
+ sudo apt-get install -y \
433
+ libwebkit2gtk-4.1-dev \
434
+ libayatana-appindicator3-dev \
435
+ librsvg2-dev \
436
+ patchelf
437
+
438
+ - uses: Swatinem/rust-cache@v2
439
+ with:
440
+ shared-key: journal-build
441
+
442
+ - name: npm install
443
+ working-directory: examples/desktop-journal
444
+ # `npm ci` would be ideal, but the example doesn't ship a
445
+ # lockfile in version control (it's listed in .gitignore so
446
+ # downstream forkers don't have to fight a node-version-pinned
447
+ # lockfile). `npm install` is acceptable for an example app;
448
+ # the engine API surface is what we're really exercising.
449
+ run: npm install
450
+
451
+ - name: Build frontend
452
+ working-directory: examples/desktop-journal
453
+ run: npm run build
454
+
455
+ - name: Build Rust side (with ask)
456
+ run: cargo build -p sqlrite-journal --all-targets
457
+
458
+ - name: Build Rust side (no ask)
459
+ run: cargo build -p sqlrite-journal --no-default-features --all-targets
460
+
461
+ - name: Run journal unit tests
462
+ run: cargo test -p sqlrite-journal
@@ -0,0 +1,103 @@
1
+ # SQLRite Journal — installer build workflow (SQLR-41).
2
+ #
3
+ # Produces packaged installers for the example desktop journal app:
4
+ # - macOS: .dmg + .app bundle
5
+ # - Linux: .deb + .AppImage
6
+ # - Windows: .msi (best-effort; flag in README if it lights up red)
7
+ #
8
+ # Manual trigger by default — installers are heavy (~30–40 min total
9
+ # wall clock across the matrix), and the example app changes much less
10
+ # often than the engine. Tagged pushes matching `journal-v*` also fire.
11
+ # Artifacts are attached to a draft GitHub release rather than the
12
+ # engine's own release stream so engine releases don't accidentally
13
+ # ship a journal binary baseline that's lagging behind.
14
+
15
+ name: Journal example — installers
16
+
17
+ on:
18
+ workflow_dispatch:
19
+ push:
20
+ tags:
21
+ - 'journal-v*'
22
+
23
+ permissions:
24
+ contents: write # tauri-action needs this to upload to the draft release
25
+
26
+ jobs:
27
+ build:
28
+ strategy:
29
+ fail-fast: false
30
+ matrix:
31
+ include:
32
+ - os: macos-latest
33
+ label: macos-arm64
34
+ target: aarch64-apple-darwin
35
+ - os: macos-13
36
+ label: macos-x86_64
37
+ target: x86_64-apple-darwin
38
+ - os: ubuntu-latest
39
+ label: linux-x86_64
40
+ target: x86_64-unknown-linux-gnu
41
+ - os: windows-latest
42
+ label: windows-x86_64
43
+ target: x86_64-pc-windows-msvc
44
+
45
+ name: build (${{ matrix.label }})
46
+ runs-on: ${{ matrix.os }}
47
+
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+
51
+ - uses: actions/setup-node@v4
52
+ with:
53
+ node-version: '20'
54
+
55
+ - uses: dtolnay/rust-toolchain@stable
56
+ with:
57
+ targets: ${{ matrix.target }}
58
+
59
+ - name: Install Tauri Linux deps
60
+ if: matrix.os == 'ubuntu-latest'
61
+ run: |
62
+ sudo apt-get update
63
+ sudo apt-get install -y \
64
+ libwebkit2gtk-4.1-dev \
65
+ libayatana-appindicator3-dev \
66
+ librsvg2-dev \
67
+ patchelf \
68
+ libsoup-3.0-dev \
69
+ libjavascriptcoregtk-4.1-dev
70
+
71
+ - uses: Swatinem/rust-cache@v2
72
+ with:
73
+ workspaces: ./examples/desktop-journal/src-tauri
74
+ shared-key: journal-release-${{ matrix.label }}
75
+
76
+ - name: npm install
77
+ working-directory: examples/desktop-journal
78
+ run: npm install
79
+
80
+ # tauri-action does the magic: builds frontend, runs `cargo tauri
81
+ # build`, and uploads the resulting installers to a draft release
82
+ # tagged with `tagName`. We deliberately don't auto-publish — a
83
+ # human reviews the draft and clicks publish.
84
+ - uses: tauri-apps/tauri-action@v0
85
+ env:
86
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
87
+ with:
88
+ projectPath: examples/desktop-journal
89
+ tagName: ${{ startsWith(github.ref, 'refs/tags/journal-v') && github.ref_name || format('journal-v{0}', github.run_number) }}
90
+ releaseName: 'SQLRite Journal ${{ startsWith(github.ref, ''refs/tags/journal-v'') && github.ref_name || format(''build-{0}'', github.run_number) }}'
91
+ releaseBody: |
92
+ Installer artifacts for the SQLRite Journal example app
93
+ (SQLR-41). Built against the engine version pinned in
94
+ `examples/desktop-journal/src-tauri/Cargo.toml`.
95
+
96
+ * macOS: `.dmg` (Apple Silicon + Intel)
97
+ * Linux: `.deb` + `.AppImage`
98
+ * Windows: `.msi`
99
+
100
+ Source: <https://github.com/joaoh82/rust_sqlite/tree/main/examples/desktop-journal>
101
+ releaseDraft: true
102
+ prerelease: false
103
+ args: --target ${{ matrix.target }}
@@ -86,13 +86,15 @@ jobs:
86
86
 
87
87
  - name: Refresh Cargo.lock
88
88
  # `cargo build` updates Cargo.lock with the new workspace
89
- # member versions. `--exclude sqlrite-desktop` because the
90
- # desktop crate needs the Svelte frontend compiled first
91
- # (Tauri's build.rs looks for `desktop/dist/`) — we're not
92
- # building a release artifact here, just refreshing the lock.
93
- # `--quiet` keeps the log tidy; a real compile failure still
94
- # surfaces.
95
- run: cargo build --workspace --exclude sqlrite-desktop --quiet
89
+ # member versions. We exclude the two Tauri crates
90
+ # (`sqlrite-desktop`, `sqlrite-journal`): both need their Svelte
91
+ # frontend compiled first (Tauri's build.rs looks for a `dist/`)
92
+ # and pull in the GTK/glib system stack that this runner doesn't
93
+ # install we're not building a release artifact here, just
94
+ # refreshing the lock. Keep this exclude list in sync with the
95
+ # cargo steps in ci.yml. `--quiet` keeps the log tidy; a real
96
+ # compile failure still surfaces.
97
+ run: cargo build --workspace --exclude sqlrite-desktop --exclude sqlrite-journal --quiet
96
98
 
97
99
  - name: Configure git identity
98
100
  # Use the github-actions[bot] identity so the commit shows
@@ -131,6 +131,7 @@ jobs:
131
131
  "sqlrite-desktop-v$V"
132
132
  "sqlrite-py-v$V"
133
133
  "sqlrite-node-v$V"
134
+ "sqlrite-notes-v$V"
134
135
  "sqlrite-wasm-v$V"
135
136
  "sdk/go/v$V"
136
137
  "v$V"
@@ -1154,6 +1155,108 @@ jobs:
1154
1155
  See the umbrella release [v${{ needs.detect.outputs.version }}](../../releases/tag/v${{ needs.detect.outputs.version }}) for the full changelog.
1155
1156
  generate_release_notes: true
1156
1157
 
1158
+ # ---------------------------------------------------------------------------
1159
+ # Step 3g': publish the `sqlrite-notes` example as a pure-JS npm
1160
+ # package so users can `npx sqlrite-notes init <dir>` on a fresh
1161
+ # machine without cloning the repo. (SQLR-64, follow-up from SQLR-40.)
1162
+ #
1163
+ # The package itself ships no binaries — it's a thin CLI on top of
1164
+ # the `@joaoh82/sqlrite` N-API package (which carries the prebuilt
1165
+ # `.node` binaries via the platform-dispatch shim) and spawns
1166
+ # `sqlrite-mcp` as a subprocess for the read side. The Node bits
1167
+ # are platform-agnostic JS modules, so this job is a single ubuntu
1168
+ # cell instead of the publish-nodejs build matrix.
1169
+ #
1170
+ # `needs: publish-nodejs` is load-bearing: the example's
1171
+ # `@joaoh82/sqlrite` dep pin resolves against the version that
1172
+ # publish-nodejs just put on npm. Without that ordering, `npx
1173
+ # sqlrite-notes@<new>` would resolve a slightly-stale engine on
1174
+ # the first install after release (caret pin floats up *eventually*
1175
+ # but the npm cache will have served the old one for minutes).
1176
+ #
1177
+ # Package name: **unscoped `sqlrite-notes`** (per ticket). The
1178
+ # similarity rejection that hit `sqlrite` (vs `sqlite`) doesn't
1179
+ # apply here — `notes` isn't a confusable suffix. If the registry
1180
+ # ever rejects this on a future bootstrap, fall back to
1181
+ # `@joaoh82/sqlrite-notes` and update both `package.json` and
1182
+ # `docs/release-secrets.md`'s trusted-publisher section.
1183
+ #
1184
+ # OIDC trusted-publisher setup mirrors publish-nodejs verbatim —
1185
+ # see that job's comment block for the long-form rationale on why
1186
+ # `registry-url` is omitted, why we force-upgrade npm to 11.5+, and
1187
+ # why `--provenance --access public --loglevel verbose` is the
1188
+ # canonical flag combo.
1189
+ publish-notes-example:
1190
+ name: Publish sqlrite-notes example to npm
1191
+ needs: [detect, tag-all, publish-nodejs]
1192
+ if: needs.detect.outputs.should_release == 'true'
1193
+ runs-on: ubuntu-latest
1194
+ environment: release
1195
+ permissions:
1196
+ # OIDC for npm trusted publisher + provenance signing.
1197
+ id-token: write
1198
+ # For softprops/action-gh-release at the end.
1199
+ contents: write
1200
+ steps:
1201
+ - uses: actions/checkout@v4
1202
+
1203
+ # Same OIDC dance as publish-nodejs — see that job's comment
1204
+ # block for why we deliberately do NOT set `registry-url:`.
1205
+ - uses: actions/setup-node@v4
1206
+ with:
1207
+ node-version: '20'
1208
+
1209
+ - name: Upgrade npm to latest (need 11.5+ for trusted publishing)
1210
+ run: npm install -g npm@latest
1211
+
1212
+ - name: List publish payload + OIDC env diagnostics
1213
+ working-directory: examples/nodejs-notes
1214
+ run: |
1215
+ ls -la
1216
+ echo "---"
1217
+ npm --version
1218
+ echo "---"
1219
+ echo "ACTIONS_ID_TOKEN_REQUEST_URL is set: ${ACTIONS_ID_TOKEN_REQUEST_URL:+yes}${ACTIONS_ID_TOKEN_REQUEST_URL:-NO}"
1220
+ echo "ACTIONS_ID_TOKEN_REQUEST_TOKEN is set: ${ACTIONS_ID_TOKEN_REQUEST_TOKEN:+yes}${ACTIONS_ID_TOKEN_REQUEST_TOKEN:-NO}"
1221
+ echo "---"
1222
+ # `npm pack --dry-run` prints exactly what will end up in
1223
+ # the tarball. The `files` whitelist in package.json should
1224
+ # produce: bin/sqlrite-notes.mjs, src/*.mjs, README.md,
1225
+ # package.json — nothing else (no test fixtures, no
1226
+ # node_modules).
1227
+ npm pack --dry-run
1228
+
1229
+ - name: Publish to npm
1230
+ working-directory: examples/nodejs-notes
1231
+ run: npm publish --access public --provenance --loglevel verbose
1232
+
1233
+ - name: GitHub Release
1234
+ uses: softprops/action-gh-release@v2
1235
+ with:
1236
+ tag_name: sqlrite-notes-v${{ needs.detect.outputs.version }}
1237
+ name: sqlrite-notes example v${{ needs.detect.outputs.version }}
1238
+ body: |
1239
+ Published to npm: https://www.npmjs.com/package/sqlrite-notes/v/${{ needs.detect.outputs.version }}
1240
+
1241
+ ```bash
1242
+ # Ingest a folder of markdown notes into a SQLRite database
1243
+ # — no clone, no Rust toolchain, no env setup beyond an
1244
+ # optional embedding API key.
1245
+ npx sqlrite-notes@${{ needs.detect.outputs.version }} init ~/Documents/notes
1246
+ ```
1247
+
1248
+ The example uses `@joaoh82/sqlrite@^${{ needs.detect.outputs.version }}` for storage + retrieval (HNSW + BM25) and spawns [`sqlrite-mcp`](../../releases/tag/sqlrite-mcp-v${{ needs.detect.outputs.version }}) as a subprocess to expose the database to Claude Desktop / any MCP client. Install `sqlrite-mcp` separately — `cargo install sqlrite-mcp` or a prebuilt binary from the MCP release.
1249
+
1250
+ Verify package provenance:
1251
+ ```bash
1252
+ npm audit signatures
1253
+ ```
1254
+
1255
+ Full docs: [`examples/nodejs-notes/README.md`](https://github.com/joaoh82/rust_sqlite/blob/main/examples/nodejs-notes/README.md).
1256
+
1257
+ See the umbrella release [v${{ needs.detect.outputs.version }}](../../releases/tag/v${{ needs.detect.outputs.version }}) for the full changelog.
1258
+ generate_release_notes: true
1259
+
1157
1260
  # ---------------------------------------------------------------------------
1158
1261
  # Step 3h: build the WASM package via wasm-pack and publish to
1159
1262
  # npm as @joaoh82/sqlrite-wasm. (Phase 6h.)
@@ -1480,7 +1583,7 @@ jobs:
1480
1583
  # config if we add one later.
1481
1584
  finalize:
1482
1585
  name: Finalize umbrella release
1483
- needs: [detect, publish-crate, publish-ask, publish-mcp, build-mcp-binaries, publish-ffi, publish-desktop, publish-python, publish-nodejs, publish-wasm, publish-go]
1586
+ needs: [detect, publish-crate, publish-ask, publish-mcp, build-mcp-binaries, publish-ffi, publish-desktop, publish-python, publish-nodejs, publish-notes-example, publish-wasm, publish-go]
1484
1587
  if: needs.detect.outputs.should_release == 'true'
1485
1588
  runs-on: ubuntu-latest
1486
1589
  steps:
@@ -1504,6 +1607,7 @@ jobs:
1504
1607
  - 🖥️ [Desktop](../../releases/tag/sqlrite-desktop-v${{ needs.detect.outputs.version }}) — unsigned installers for Linux (AppImage + deb), macOS (dmg aarch64), Windows (msi)
1505
1608
  - 🐍 [Python](../../releases/tag/sqlrite-py-v${{ needs.detect.outputs.version }}) → [PyPI](https://pypi.org/project/sqlrite/${{ needs.detect.outputs.version }}/) — abi3-py38 wheels for Linux x86_64/aarch64, macOS aarch64, Windows x86_64 + sdist
1506
1609
  - 🟢 [Node.js](../../releases/tag/sqlrite-node-v${{ needs.detect.outputs.version }}) → [npm](https://www.npmjs.com/package/@joaoh82/sqlrite/v/${{ needs.detect.outputs.version }}) — N-API bindings with prebuilt `.node` binaries for Linux x86_64/aarch64, macOS aarch64, Windows x86_64
1610
+ - 📝 [`sqlrite-notes` example](../../releases/tag/sqlrite-notes-v${{ needs.detect.outputs.version }}) → [npm](https://www.npmjs.com/package/sqlrite-notes/v/${{ needs.detect.outputs.version }}) — `npx sqlrite-notes init <dir>` ingests a folder of markdown notes into a SQLRite DB and exposes it to Claude Desktop / any MCP client
1507
1611
  - 🌐 [WASM](../../releases/tag/sqlrite-wasm-v${{ needs.detect.outputs.version }}) → [npm](https://www.npmjs.com/package/@joaoh82/sqlrite-wasm/v/${{ needs.detect.outputs.version }}) — browser/bundler-target WebAssembly build via wasm-pack
1508
1612
  - 🐹 [Go SDK](../../releases/tag/sdk%2Fgo%2Fv${{ needs.detect.outputs.version }}) → `go get github.com/joaoh82/rust_sqlite/sdk/go@v${{ needs.detect.outputs.version }}` — `database/sql` driver via cgo against `libsqlrite_c`
1509
1613
 
@@ -0,0 +1,102 @@
1
+ # AGENTS.md
2
+
3
+ This file provides guidance to Codex (Codex.ai/code) when working with code in this repository.
4
+
5
+ ## Project
6
+
7
+ SQLRite is a from-scratch SQLite-style embedded database written in Rust. It's published on crates.io as `sqlrite-engine` (imported as `use sqlrite::…` — the lib target keeps the short name) and ships as: a REPL binary (`sqlrite`), a Tauri 2 + Svelte 5 desktop app, a Model Context Protocol stdio server (`sqlrite-mcp`), a C FFI shim (`sqlrite-ffi`), and language SDKs (Python via PyO3, Node via napi-rs, Go via cgo, WASM via wasm-bindgen). Phases 1–7 are shipped; the current branch `phase-8-plan` drafts inverted-index + BM25 full-text search and hybrid retrieval.
8
+
9
+ ## Workspace layout
10
+
11
+ `Cargo.toml` is a workspace whose members are: `.` (the engine, package `sqlrite-engine`, lib `sqlrite`), `desktop/src-tauri`, `examples/desktop-journal/src-tauri`, `sqlrite-ffi`, `sqlrite-ask`, `sqlrite-mcp`, `sdk/python`, `sdk/nodejs`, `benchmarks`. `sdk/wasm` and `sdk/go` are deliberately **not** workspace members (wasm32 target / cgo separation).
12
+
13
+ - `src/` — engine. Public API is `Connection`/`Statement`/`Rows`/`Row`/`Value` from [src/connection.rs](src/connection.rs), re-exported via [src/lib.rs](src/lib.rs). Any new SDK should bind only to this surface.
14
+ - `sqlrite-ask/` — pure-Rust LLM adapter (Anthropic/OpenAI/Ollama) for natural-language → SQL. The engine's `ask` feature provides the thin `ConnectionAskExt::ask` glue.
15
+ - `sqlrite-mcp/` — MCP stdio server. Seven tools: `list_tables`, `describe_table`, `query`, `execute`, `schema_dump`, `vector_search`, `ask`. `--read-only` opens with a shared lock and hides `execute`.
16
+ - `sqlrite-ffi/` — C ABI cdylib + generated `sqlrite.h` header. Backs the Go SDK and any C consumer.
17
+ - `desktop/` — Tauri 2 + Svelte 5 generic SQL playground GUI. Embeds the engine directly (no FFI hop).
18
+ - `examples/desktop-journal/` — Tauri 2 + Svelte 5 local-first journaling app (SQLR-41). Showcase for Phase 8 BM25 + `ask` in a non-AI-native product. Mirrors `desktop/`'s engine-as-Cargo-dep pattern but uses the modern `Connection` API.
19
+ - `benchmarks/` — SQLR-4 / SQLR-16 bench harness. `Driver` trait + SQLRite + SQLite (rusqlite-bundled) drivers + criterion-driven workloads. Excluded from the default CI build/test/clippy/doc commands; run locally with `make bench` (or `make bench-duckdb`). See [docs/benchmarks-plan.md](docs/benchmarks-plan.md).
20
+ - `web/` — marketing + docs site (Next.js 15 + Tailwind v4). Independent of the Cargo workspace; lives in-repo for now but is structured to lift into its own repository later. See [web/README.md](web/README.md).
21
+
22
+ Architecture deep-dive: [docs/architecture.md](docs/architecture.md). The full doc index is [docs/_index.md](docs/_index.md).
23
+
24
+ ## Engine data flow
25
+
26
+ SQL string → [src/sql/mod.rs](src/sql/mod.rs) `process_command` parses with the external `sqlparser` crate (SQLite dialect) → [src/sql/parser/](src/sql/parser/) trims the AST into internal structs (`CreateQuery`, `InsertQuery`, `SelectQuery`) → [src/sql/executor.rs](src/sql/executor.rs) runs the statement against the in-memory `Database` ([src/sql/db/database.rs](src/sql/db/database.rs)). On any write, auto-save serializes changed pages through [src/sql/pager/](src/sql/pager/) — 4 KiB pages, cell-encoded B-trees per table and index, WAL + crash-safe checkpoint, fs2 advisory locks. Vector search (Phase 7d) goes through [src/sql/hnsw.rs](src/sql/hnsw.rs); KNN uses a bounded-heap top-k in the executor. Transactions snapshot the in-memory state; ROLLBACK restores it. There is no query optimizer beyond the KNN/HNSW shortcut, no joins, no aggregates yet.
27
+
28
+ ## Commands
29
+
30
+ CI is the source of truth — the workspace excludes that follow are required because the desktop crate needs a Svelte build first, the PyO3/napi-rs cdylibs can't link standalone test binaries, and the `benchmarks/` harness deliberately stays out of CI (criterion is noisy on shared runners; the rusqlite-bundled build is heavy).
31
+
32
+ ```sh
33
+ # Build / test the Rust workspace (matches CI)
34
+ cargo build --workspace --exclude sqlrite-desktop --exclude sqlrite-journal --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --all-targets
35
+ cargo test --workspace --exclude sqlrite-desktop --exclude sqlrite-journal --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks
36
+
37
+ # Single test (exact name; --nocapture to see println!)
38
+ cargo test <test_name> -- --nocapture
39
+
40
+ # Lint (CI runs all three)
41
+ cargo fmt --all -- --check
42
+ cargo clippy --workspace --exclude sqlrite-desktop --exclude sqlrite-journal --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --all-targets
43
+ cargo doc --workspace --exclude sqlrite-desktop --exclude sqlrite-journal --exclude sqlrite-python --exclude sqlrite-nodejs --exclude sqlrite-benchmarks --no-deps
44
+
45
+ # Run the REPL (default features include cli + ask + file-locks)
46
+ cargo run # in-memory
47
+ cargo run -- path/to/db.sqlrite # open/create file
48
+ cargo run -- --readonly path/to/db.sqlrite # shared-lock open
49
+
50
+ # Crate-specific
51
+ cargo build --release -p sqlrite-ffi # C cdylib + sqlrite.h
52
+ cd desktop && npm install && npm run tauri dev # desktop app dev mode
53
+ cargo run -p sqlrite-mcp -- /path/to.sqlrite # MCP server (stdio)
54
+ cd examples/desktop-journal && npm install && npm run tauri dev # journal example app
55
+
56
+ # Benchmarks (SQLR-4 / SQLR-16) — local-only, never CI
57
+ make bench # SQLRite + SQLite (lean)
58
+ make bench-duckdb # adds DuckDB driver (Group B only)
59
+
60
+ # Release plumbing
61
+ scripts/bump-version.sh 0.2.0 # bumps version across 11 manifests
62
+ ```
63
+
64
+ `SQLRITE_LLM_API_KEY` is required for the `.ask` REPL command, the engine's `ask` feature, and the MCP `ask` tool. Clippy is **not** `-D warnings` yet (intentional — see top of [.github/workflows/ci.yml](.github/workflows/ci.yml)); deny-by-default lints still fail CI.
65
+
66
+ ## Project-specific conventions
67
+
68
+ - **Errors.** Single `SQLRiteError` enum (thiserror, six variants) with a project-wide `Result<T>` alias. All public APIs return typed errors; no panics. The enum hand-rolls `PartialEq` because `std::io::Error` doesn't derive it.
69
+ - **Storage isn't bincode.** Tables and indexes share a cell-encoded B-tree format with a 4 KiB page size; the file header carries a format version (currently v4 after the Phase 7a vector column work). The diff-based pager only writes changed pages. See [docs/file-format.md](docs/file-format.md) and [docs/pager.md](docs/pager.md).
70
+ - **B-tree commit strategy.** Bottom-up rebuild on every commit (O(N), correct-by-construction). No in-place splits — deferred design decision.
71
+ - **Feature gates matter.** `default = ["cli", "ask", "file-locks"]`. The REPL `[[bin]]` `required-features = ["cli", "ask"]`. WASM and lean library embeddings build with `default-features = false` to avoid rustyline / clap / fs2 / sqlrite-ask. Don't pull these into the always-on dependency set.
72
+ - **Don't reinvent the SQL parser.** `sqlparser` is the tokenizer and AST source; project code only narrows that AST. New SQL features start by mapping the existing `sqlparser` AST node, not by extending a custom grammar.
73
+ - **Phase numbering is real.** The roadmap is sequenced in [docs/roadmap.md](docs/roadmap.md); design discussions live at github.com/sqlrite/design and feature work generally tracks an open phase plan in `docs/phase-*-plan.md`. Treat in-flight phase plans as load-bearing context.
74
+ - **Concurrency.** Engine mutates state through `Arc<Mutex<_>>` (Tauri-friendly). On-disk concurrency uses fs2 advisory locks: shared for readers, exclusive for the single writer.
75
+
76
+ ## Knowledge Base
77
+
78
+ ### Project-specific — `~/Documents/josh-obsidian-synced/Projects/rust_sqlite/`
79
+
80
+ - **Code:** `/Users/joaoh82/projects/rust_sqlite`
81
+ - **Context (read first):** `~/Documents/josh-obsidian-synced/Projects/rust_sqlite/context.md`
82
+ - **Notes (running journal):** `~/Documents/josh-obsidian-synced/Projects/rust_sqlite/notes.md`
83
+ - **Project wiki:** `~/Documents/josh-obsidian-synced/Projects/rust_sqlite/wiki/`
84
+
85
+ **How to use each:**
86
+
87
+ - `context.md` — stable background (product goals, stakeholders, domain). Read before starting non-trivial work. Update only when underlying facts change.
88
+ - `notes.md` — append-only dated journal. Add entries under `## YYYY-MM-DD` headings for decisions, blockers, TODOs, and incidents — anything worth preserving but not stable enough for `context.md`.
89
+ - `wiki/` — reference sub-docs (e.g. `Architecture.md`, `Local Dev Setup.md`, `Tech Services.md`). Create new files as topics emerge.
90
+
91
+ **When to save:**
92
+
93
+ - New stable fact about the product/domain → update `context.md`.
94
+ - A decision, incident, or working note → append a dated entry to `notes.md`.
95
+ - Reusable reference material (setup steps, credential locations, architecture) → new/updated file in `wiki/`.
96
+
97
+ ### Cross-project knowledge — `~/Documents/josh-obsidian-synced/vault/`
98
+
99
+ - **General wiki:** `~/Documents/josh-obsidian-synced/vault/wiki/` — start at `_master-index.md`, then drill into the relevant topic's `_index.md`.
100
+ - **Raw dumps:** `~/Documents/josh-obsidian-synced/vault/raw/` — drop unprocessed research here as `YYYY-MM-DD-{slug}.md`.
101
+
102
+ Read the general wiki when the question isn't specific to this project. Drop raw research or imported notes into `vault/raw/` so it's captured even before it's distilled.
@@ -4799,7 +4799,7 @@ dependencies = [
4799
4799
 
4800
4800
  [[package]]
4801
4801
  name = "sqlrite-ask"
4802
- version = "0.10.1"
4802
+ version = "0.10.2"
4803
4803
  dependencies = [
4804
4804
  "serde",
4805
4805
  "serde_json",
@@ -4827,7 +4827,7 @@ dependencies = [
4827
4827
 
4828
4828
  [[package]]
4829
4829
  name = "sqlrite-desktop"
4830
- version = "0.10.1"
4830
+ version = "0.10.2"
4831
4831
  dependencies = [
4832
4832
  "serde",
4833
4833
  "serde_json",
@@ -4839,7 +4839,7 @@ dependencies = [
4839
4839
 
4840
4840
  [[package]]
4841
4841
  name = "sqlrite-engine"
4842
- version = "0.10.1"
4842
+ version = "0.10.2"
4843
4843
  dependencies = [
4844
4844
  "clap",
4845
4845
  "env_logger",
@@ -4856,7 +4856,7 @@ dependencies = [
4856
4856
 
4857
4857
  [[package]]
4858
4858
  name = "sqlrite-ffi"
4859
- version = "0.10.1"
4859
+ version = "0.10.2"
4860
4860
  dependencies = [
4861
4861
  "cbindgen",
4862
4862
  "serde",
@@ -4865,8 +4865,21 @@ dependencies = [
4865
4865
  ]
4866
4866
 
4867
4867
  [[package]]
4868
- name = "sqlrite-mcp"
4868
+ name = "sqlrite-journal"
4869
4869
  version = "0.10.1"
4870
+ dependencies = [
4871
+ "serde",
4872
+ "serde_json",
4873
+ "sqlrite-engine",
4874
+ "tauri",
4875
+ "tauri-build",
4876
+ "tauri-plugin-dialog",
4877
+ "thiserror 2.0.18",
4878
+ ]
4879
+
4880
+ [[package]]
4881
+ name = "sqlrite-mcp"
4882
+ version = "0.10.2"
4870
4883
  dependencies = [
4871
4884
  "clap",
4872
4885
  "libc",
@@ -4877,7 +4890,7 @@ dependencies = [
4877
4890
 
4878
4891
  [[package]]
4879
4892
  name = "sqlrite-nodejs"
4880
- version = "0.10.1"
4893
+ version = "0.10.2"
4881
4894
  dependencies = [
4882
4895
  "napi",
4883
4896
  "napi-build",
@@ -4887,7 +4900,7 @@ dependencies = [
4887
4900
 
4888
4901
  [[package]]
4889
4902
  name = "sqlrite-python"
4890
- version = "0.10.1"
4903
+ version = "0.10.2"
4891
4904
  dependencies = [
4892
4905
  "pyo3",
4893
4906
  "sqlrite-engine",
@@ -27,7 +27,7 @@ resolver = "3"
27
27
  # `package =` key so the import name stays `sqlrite` internally:
28
28
  # sqlrite = { package = "sqlrite-engine", path = "…" }
29
29
  name = "sqlrite-engine"
30
- version = "0.10.1"
30
+ version = "0.10.2"
31
31
  authors = ["Joao Henrique Machado Silva <joaoh82@gmail.com>"]
32
32
  edition = "2024"
33
33
  rust-version = "1.85"
@@ -150,4 +150,4 @@ fs2 = { version = "0.4", optional = true }
150
150
  # crate publishes to crates.io, and a path-only dep without a
151
151
  # version field fails the manifest verification step. See PR #58
152
152
  # retrospective in docs/roadmap.md.
153
- sqlrite-ask = { version = "0.10.1", path = "sqlrite-ask", optional = true }
153
+ sqlrite-ask = { version = "0.10.2", path = "sqlrite-ask", optional = true }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sqlrite
3
- Version: 0.10.1
3
+ Version: 0.10.2
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -116,6 +116,7 @@ Beyond the per-language quickstarts in [`examples/`](examples/), the SQLR-38 umb
116
116
  |---|---|---|
117
117
  | [Python LLM agent with persistent memory](examples/python-agent/) | Python | Vector + lexical recall, fact extraction, summaries — all in one `.sqlrite` file |
118
118
  | [Chat-with-your-notes via Claude Desktop MCP](examples/nodejs-notes/) | Node.js | Markdown → hybrid HNSW + BM25 index → `sqlrite-mcp --read-only` → Claude Desktop |
119
+ | [Local-first journaling desktop app](examples/desktop-journal/) | Tauri 2 + Svelte 5 | Markdown daily-notes, BM25 full-text search with hit highlighting, "ask my journal" panel — entire data layer is one `.sqlrite` file |
119
120
 
120
121
  ### Developer guide
121
122
 
@@ -0,0 +1,52 @@
1
+ # SQLRite Desktop
2
+
3
+ A Tauri 2 + Svelte 5 SQL playground that embeds the SQLRite engine
4
+ directly (no FFI hop). Open or create a `.sqlrite` file, browse tables,
5
+ run SQL, and — with an Anthropic API key configured — turn
6
+ natural-language questions into SQL via the **Ask…** button.
7
+
8
+ ## Run (dev)
9
+
10
+ ```sh
11
+ cd desktop
12
+ npm install
13
+ npm run tauri dev
14
+ ```
15
+
16
+ The app starts in-memory ("scratch") — use **New…** / **Open…** to back
17
+ it with a file.
18
+
19
+ ## Configuring `ask`
20
+
21
+ The **Ask…** button calls the LLM server-side (the Rust backend), so the
22
+ API key never crosses into the webview. There are two ways to provide it:
23
+
24
+ 1. **⚙ Settings dialog (recommended).** Click the gear icon in the
25
+ header and paste an Anthropic key. It's persisted to
26
+ `$APP_DATA/com.sqlrite.desktop/settings.json`:
27
+
28
+ ```
29
+ ~/Library/Application Support/com.sqlrite.desktop/ (macOS)
30
+ └── settings.json # { "anthropic_api_key": "sk-ant-…", "model": "…", "max_tokens": … }
31
+ ```
32
+
33
+ This works regardless of how the app is launched — including from
34
+ Finder / the Dock, which do **not** inherit a shell's environment.
35
+
36
+ 2. **Env var fallback.** If no key is saved in Settings, the backend
37
+ falls back to `SQLRITE_LLM_API_KEY` from the environment that launched
38
+ the app. Handy for `npm run tauri dev` from a terminal, but it won't
39
+ reach the app if you launch it from Finder.
40
+
41
+ `get_ask_settings` returns `has_api_key: bool` (never the key value), so
42
+ the UI can show which source is active — "key configured in settings",
43
+ "picked up from SQLRITE_LLM_API_KEY env var", or "no key configured".
44
+ With no key from either source, **Ask…** returns a clear
45
+ "no API key configured" error pointing back at the ⚙ gear icon.
46
+
47
+ ### Security note
48
+
49
+ The settings file is **plain JSON on disk** — better UX than an env-var
50
+ gate and good enough for a local-first example app, but less secure than
51
+ the OS keychain. A production desktop app shipping the same pattern
52
+ should reach for `tauri-plugin-keyring` / `keyring-rs` instead.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "sqlrite-desktop-frontend",
3
- "version": "0.1.0",
3
+ "version": "0.10.1",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "sqlrite-desktop-frontend",
9
- "version": "0.1.0",
9
+ "version": "0.10.1",
10
10
  "dependencies": {
11
11
  "@tauri-apps/api": "^2.0.0",
12
12
  "@tauri-apps/plugin-dialog": "^2.0.0"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sqlrite-desktop-frontend",
3
3
  "private": true,
4
- "version": "0.10.1",
4
+ "version": "0.10.2",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",