dirsql 0.4.111__tar.gz → 0.4.113__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 (447) hide show
  1. {dirsql-0.4.111 → dirsql-0.4.113}/Cargo.lock +2 -2
  2. {dirsql-0.4.111 → dirsql-0.4.113}/PKG-INFO +1 -1
  3. {dirsql-0.4.111/packages/rust → dirsql-0.4.113}/docs/reference/cli.md +47 -6
  4. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/Cargo.toml +1 -1
  5. {dirsql-0.4.111 → dirsql-0.4.113/packages/python}/docs/reference/cli.md +47 -6
  6. dirsql-0.4.113/packages/python/e2e-attestations/bot-1487-frontend-query-1011.json +7 -0
  7. dirsql-0.4.113/packages/python/e2e-attestations/bot-1488-frontend-metadata-1011.json +7 -0
  8. dirsql-0.4.113/packages/python/e2e-attestations/bot-1489-frontend-browse-1013.json +7 -0
  9. dirsql-0.4.113/packages/python/e2e-attestations/bot-1504-bench-names-1011.json +7 -0
  10. dirsql-0.4.113/packages/python/e2e-attestations/bot-speed-gap-childpath-1011.json +7 -0
  11. dirsql-0.4.113/packages/python/e2e-attestations/bot-speed-parse-overlap-1011.json +7 -0
  12. dirsql-0.4.113/packages/python/e2e-attestations/bot-speed-parse-pragmas-1011.json +7 -0
  13. dirsql-0.4.113/packages/python/e2e-attestations/bot-speed-walk-components-1011.json +7 -0
  14. dirsql-0.4.113/packages/python/e2e-attestations/bot-speed-walk-rowpath-1011.json +7 -0
  15. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/Cargo.toml +1 -1
  16. {dirsql-0.4.111/packages/python → dirsql-0.4.113/packages/rust}/docs/reference/cli.md +47 -6
  17. dirsql-0.4.113/packages/rust/src/cli/frontend.html +58 -0
  18. dirsql-0.4.113/packages/rust/src/cli/frontend.js +297 -0
  19. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/router.rs +55 -1
  20. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/db.rs +171 -4
  21. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/lib.rs +194 -50
  22. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/matcher.rs +70 -9
  23. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/on_file.rs +211 -74
  24. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/scanner.rs +56 -5
  25. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/vtab.rs +39 -8
  26. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/vtab_scaffold.rs +59 -1
  27. dirsql-0.4.111/packages/rust/src/cli/frontend.html +0 -60
  28. {dirsql-0.4.111 → dirsql-0.4.113}/Cargo.toml +0 -0
  29. {dirsql-0.4.111 → dirsql-0.4.113}/README.md +0 -0
  30. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/__init__.py +0 -0
  31. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/_async.py +0 -0
  32. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/_dirsql.pyi +0 -0
  33. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/__init__.py +0 -0
  34. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/discover_plugins/__init__.py +0 -0
  35. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/discover_plugins/discovered_fragments.py +0 -0
  36. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/discover_plugins/discovery_disabled.py +0 -0
  37. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/discover_plugins/fragment_path.py +0 -0
  38. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/discover_plugins/with_discovered_plugins.py +0 -0
  39. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/main.py +0 -0
  40. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/cli/resolve_config_extensions.py +0 -0
  41. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/plan_entry_path.py +0 -0
  42. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/py.typed +0 -0
  43. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/read_config.py +0 -0
  44. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/resolve_configs_extension_specs.py +0 -0
  45. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/resolve_extension.py +0 -0
  46. {dirsql-0.4.111 → dirsql-0.4.113}/dirsql/resolve_package.py +0 -0
  47. {dirsql-0.4.111 → dirsql-0.4.113}/docs/.claude/CLAUDE.md +0 -0
  48. {dirsql-0.4.111 → dirsql-0.4.113}/docs/.vitepress/config.ts +0 -0
  49. {dirsql-0.4.111 → dirsql-0.4.113}/docs/.vitepress/theme/index.ts +0 -0
  50. {dirsql-0.4.111 → dirsql-0.4.113}/docs/.vitepress/theme/lang.ts +0 -0
  51. {dirsql-0.4.111 → dirsql-0.4.113}/docs/AGENTS.md +0 -0
  52. {dirsql-0.4.111 → dirsql-0.4.113}/docs/context/.gitattributes +0 -0
  53. {dirsql-0.4.111 → dirsql-0.4.113}/docs/context/recipes.md +0 -0
  54. {dirsql-0.4.111 → dirsql-0.4.113}/docs/context/troubleshooting.md +0 -0
  55. {dirsql-0.4.111 → dirsql-0.4.113}/docs/context/usage.md +0 -0
  56. {dirsql-0.4.111 → dirsql-0.4.113}/docs/explanation.md +0 -0
  57. {dirsql-0.4.111 → dirsql-0.4.113}/docs/getting-started.md +0 -0
  58. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/agent-skill.md +0 -0
  59. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/columns-from-paths.md +0 -0
  60. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/define-tables.md +0 -0
  61. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/embed.md +0 -0
  62. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/extract-from-contents.md +0 -0
  63. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/load-extension.md +0 -0
  64. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/parse-files-into-columns.md +0 -0
  65. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/persist.md +0 -0
  66. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/query-json.md +0 -0
  67. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/query-without-config.md +0 -0
  68. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/react-to-changes.md +0 -0
  69. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/search-by-meaning.md +0 -0
  70. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/search-indexes.md +0 -0
  71. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/skip-files.md +0 -0
  72. {dirsql-0.4.111 → dirsql-0.4.113}/docs/howto/write-a-plugin.md +0 -0
  73. {dirsql-0.4.111 → dirsql-0.4.113}/docs/index.md +0 -0
  74. {dirsql-0.4.111 → dirsql-0.4.113}/docs/package.json +0 -0
  75. {dirsql-0.4.111 → dirsql-0.4.113}/docs/plugins.md +0 -0
  76. {dirsql-0.4.111 → dirsql-0.4.113}/docs/pnpm-lock.yaml +0 -0
  77. {dirsql-0.4.111 → dirsql-0.4.113}/docs/pnpm-workspace.yaml +0 -0
  78. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/columns.md +0 -0
  79. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/config.md +0 -0
  80. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/glob.md +0 -0
  81. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/hooks.md +0 -0
  82. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/http-api.md +0 -0
  83. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/path-tables.md +0 -0
  84. {dirsql-0.4.111 → dirsql-0.4.113}/docs/reference/sdk.md +0 -0
  85. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/CHANGELOG.md +0 -0
  86. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/MIGRATIONS.md +0 -0
  87. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/README.md +0 -0
  88. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  89. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-13-plugin-discovery.md +0 -0
  90. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  91. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-13-repeatable-config.md +0 -0
  92. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  93. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-20-drop-implicit-files-table.md +0 -0
  94. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-21-remove-glob-captures.md +0 -0
  95. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-24-hookless-table-config-error.md +0 -0
  96. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  97. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-07-29-restore-python-310.md +0 -0
  98. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-02-release-profile.md +0 -0
  99. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-02-scan-failures.md +0 -0
  100. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-03-discovery-ext-resolution.md +0 -0
  101. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-03-manylinux-dynamic-binary.md +0 -0
  102. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-03-python-no-ignore.md +0 -0
  103. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-04-cast-lints.md +0 -0
  104. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-04-cli-in-process.md +0 -0
  105. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-20-curtaincall-dev-dependency.md +0 -0
  106. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-08-20-declared-table-name.md +0 -0
  107. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-04-config-paths-from-argv-module.md +0 -0
  108. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-05-config-extension-loader-split.md +0 -0
  109. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-05-resolve-config-extensions-split.md +0 -0
  110. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-05-resolve-extension-split.md +0 -0
  111. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-09-launcher-config-path-scan.md +0 -0
  112. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-17-extension-resolution-via-core.md +0 -0
  113. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-18-export-scan-failure.md +0 -0
  114. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-18-flatten-row-event-in-core.md +0 -0
  115. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-18-programmatic-extension-plan.md +0 -0
  116. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  117. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  118. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-02-readme-docs-host.md +0 -0
  119. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  120. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-03-path-table-directory-one-level.md +0 -0
  121. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  122. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  123. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-cli-context.md +0 -0
  124. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-gitignore-requires-repo.md +0 -0
  125. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-path-table-node-modules-named.md +0 -0
  126. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-path-table-symlinks.md +0 -0
  127. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-path-table-trailing-slash.md +0 -0
  128. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  129. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-braces.md +0 -0
  130. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-directory.md +0 -0
  131. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-dotnames.md +0 -0
  132. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-gitignore.md +0 -0
  133. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  134. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-config-links.md +0 -0
  135. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-one-glob-compiler.md +0 -0
  136. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-plugin-no-default-records.md +0 -0
  137. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-watch-broadcast.md +0 -0
  138. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  139. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-bracket-slash-literal.md +0 -0
  140. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  141. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-dotdot-as-written.md +0 -0
  142. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-glob-walks-node-modules.md +0 -0
  143. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-literal-gitignore.md +0 -0
  144. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-on-file-ndjson.md +0 -0
  145. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-parallel-hooks.md +0 -0
  146. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-persist-cache-outside-root.md +0 -0
  147. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-posix-classes-unicode.md +0 -0
  148. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-07-spread-few-large-files.md +0 -0
  149. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
  150. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/2026-10-08-watch-requires-named-table.md +0 -0
  151. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/changelog.d/README.md +0 -0
  152. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/conftest.py +0 -0
  153. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/.claude/CLAUDE.md +0 -0
  154. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/.vitepress/config.ts +0 -0
  155. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/.vitepress/theme/index.ts +0 -0
  156. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/.vitepress/theme/lang.ts +0 -0
  157. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/AGENTS.md +0 -0
  158. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/context/.gitattributes +0 -0
  159. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/context/recipes.md +0 -0
  160. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/context/troubleshooting.md +0 -0
  161. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/context/usage.md +0 -0
  162. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/explanation.md +0 -0
  163. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/getting-started.md +0 -0
  164. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/agent-skill.md +0 -0
  165. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/columns-from-paths.md +0 -0
  166. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/define-tables.md +0 -0
  167. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/embed.md +0 -0
  168. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/extract-from-contents.md +0 -0
  169. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/load-extension.md +0 -0
  170. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/parse-files-into-columns.md +0 -0
  171. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/persist.md +0 -0
  172. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/query-json.md +0 -0
  173. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/query-without-config.md +0 -0
  174. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/react-to-changes.md +0 -0
  175. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/search-by-meaning.md +0 -0
  176. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/search-indexes.md +0 -0
  177. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/skip-files.md +0 -0
  178. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/howto/write-a-plugin.md +0 -0
  179. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/index.md +0 -0
  180. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/package.json +0 -0
  181. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/plugins.md +0 -0
  182. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/pnpm-lock.yaml +0 -0
  183. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/pnpm-workspace.yaml +0 -0
  184. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/columns.md +0 -0
  185. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/config.md +0 -0
  186. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/glob.md +0 -0
  187. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/hooks.md +0 -0
  188. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/http-api.md +0 -0
  189. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/path-tables.md +0 -0
  190. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/docs/reference/sdk.md +0 -0
  191. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1334-listing-exemptions.json +0 -0
  192. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1397-watch-broadcast.json +0 -0
  193. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1398-inotify-error.json +0 -0
  194. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1399-server-cors.json +0 -0
  195. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1401-watch-scope.json +0 -0
  196. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1406-watch-no-tables-1008.json +0 -0
  197. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1407-child-place-depth.json +0 -0
  198. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1414-stat-speed.json +0 -0
  199. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1415-server-speed.json +0 -0
  200. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1416-watch-speed-1008.json +0 -0
  201. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1418-node-modules.json +0 -0
  202. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1419-dotdot-slashes.json +0 -0
  203. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1420-bracket-slash.json +0 -0
  204. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1421-posix-unicode.json +0 -0
  205. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1422-literal-gitignore.json +0 -0
  206. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1426-walk-spawn-threshold-1008.json +0 -0
  207. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1428-ndjson-hooks.json +0 -0
  208. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1429-parallel-hooks.json +0 -0
  209. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1430-dotdot-as-written.json +0 -0
  210. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1431-persist-cache-dir.json +0 -0
  211. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1437-test-cache-isolation.json +0 -0
  212. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1440-fix-main-build.json +0 -0
  213. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1448-wildcard-ignored-prefix.json +0 -0
  214. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1451-named-dir-never-hidden.json +0 -0
  215. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1454-split-few-files.json +0 -0
  216. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1457-incremental-refresh-1008.json +0 -0
  217. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1459-rescan-on-overflow-1008.json +0 -0
  218. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1461-row-footprint-1008.json +0 -0
  219. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1462-paired-speed-harness-1008.json +0 -0
  220. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1464-fastest-native-1008.json +0 -0
  221. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1469-ci-speed-sanity-1009.json +0 -0
  222. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1470-perf-suite-1009.json +0 -0
  223. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-1503-bench-watch-1011.json +0 -0
  224. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-fix-main-place-depth-20261007.json +0 -0
  225. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-issue-1486-frontend-20261009.json +0 -0
  226. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-speed-parse-paths-1009.json +0 -0
  227. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/bot-speed-walk-sched-1009.json +0 -0
  228. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/cc-keen-knuth-f11gyq.json +0 -0
  229. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1056-py-ofpf9.json +0 -0
  230. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1066-p1-resolve-extension.json +0 -0
  231. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1078-argv-config-paths-core.json +0 -0
  232. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1079-p2-resolve-config-extensions.json +0 -0
  233. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1080-share-vtab-scaffolding.json +0 -0
  234. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1081-indicatif-progress.json +0 -0
  235. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1096-watch-moved-dir.json +0 -0
  236. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1109-watch-moved-out.json +0 -0
  237. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1119-ext-plan.json +0 -0
  238. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1120-py-ext.json +0 -0
  239. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1122-ext-cleanup.json +0 -0
  240. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1130-codec-crates.json +0 -0
  241. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1131-flatten-row-event.json +0 -0
  242. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1139-sse-flatten.json +0 -0
  243. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1140-scan-failure-export.json +0 -0
  244. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1148-clippy-all-targets.json +0 -0
  245. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1164-sigint-fatal.json +0 -0
  246. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1170-projection-order.json +0 -0
  247. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1172-on-file-path.json +0 -0
  248. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1173-py-projection-order.json +0 -0
  249. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1184-win-rel-paths.json +0 -0
  250. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1185-win-abs-table-names.json +0 -0
  251. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1186-win-test-harness.json +0 -0
  252. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1196-join-index.json +0 -0
  253. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1199-glob-prefix.json +0 -0
  254. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1201-single-walk.json +0 -0
  255. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1204-embed-batch.json +0 -0
  256. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1207-win-argv-quote.json +0 -0
  257. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1208-win-nonverbatim-paths.json +0 -0
  258. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1215-on-file-batch.json +0 -0
  259. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1216-on-file-cleanup.json +0 -0
  260. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1223-config-glob-rule.json +0 -0
  261. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1223-dir-one-level.json +0 -0
  262. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1225-plugin-no-default.json +0 -0
  263. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1226-stale-docs.json +0 -0
  264. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1232-anchor-plumbing.json +0 -0
  265. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1232-config-anchor.json +0 -0
  266. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1232-multi-watch.json +0 -0
  267. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1232-zero-match.json +0 -0
  268. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1238-parallel-walk.json +0 -0
  269. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1241-content-prefetch.json +0 -0
  270. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1243-ingest-perf.json +0 -0
  271. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1249-dotfiles.json +0 -0
  272. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1256-symlinks.json +0 -0
  273. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1257-trailing-slash.json +0 -0
  274. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-config-braces.json +0 -0
  275. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-config-directory.json +0 -0
  276. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-config-dotnames.json +0 -0
  277. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-config-gitignore.json +0 -0
  278. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-config-links.json +0 -0
  279. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1258-one-pattern.json +0 -0
  280. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1262-brace-literal.json +0 -0
  281. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1264-context.json +0 -0
  282. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1267-posix-classes.json +0 -0
  283. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1268-unbalanced-brackets.json +0 -0
  284. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1269-utf8-chars.json +0 -0
  285. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1271-node-modules-named.json +0 -0
  286. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1272-ancestor-gitignore.json +0 -0
  287. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1273-walk-prune.json +0 -0
  288. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1285-ingest-fast.json +0 -0
  289. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1286-nested-repo.json +0 -0
  290. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1305-glob-speed.json +0 -0
  291. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1308-glob-speed.json +0 -0
  292. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1310-glob-speed.json +0 -0
  293. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1311-glob-speed.json +0 -0
  294. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1312-glob-speed.json +0 -0
  295. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1318-lazy-stat.json +0 -0
  296. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1320-walk-speed.json +0 -0
  297. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1322-walk-readdir.json +0 -0
  298. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1325-parallel-walk.json +0 -0
  299. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1326-stream-rows.json +0 -0
  300. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-python-dirsql-patch.json +0 -0
  301. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-python-extensions-patch.json +0 -0
  302. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-scanner-effects.json +0 -0
  303. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-scanner-gitignore.json +0 -0
  304. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-vtab-prefetch-flag.json +0 -0
  305. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1330-vtab-read.json +0 -0
  306. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-1351-dot-dirs.json +0 -0
  307. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-819-oneshot-timeout.json +0 -0
  308. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-827-unquote-doubled-quotes.json +0 -0
  309. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-epic-953-slice2-reedline.json +0 -0
  310. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-epic-953-slice3-format.json +0 -0
  311. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-epic-953-stacked-prs-x59wm3.json +0 -0
  312. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-github-issue-825-e4mhhp.json +0 -0
  313. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-issue-951-0eease.json +0 -0
  314. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-issue-962-0jjrfv.json +0 -0
  315. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-issue-986-red-test-e7sjrb.json +0 -0
  316. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-1034-cachesplit.json +0 -0
  317. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-1042-py12.json +0 -0
  318. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-956-xzen74.json +0 -0
  319. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6-worker-calls.json +0 -0
  320. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-957-lrm0z6.json +0 -0
  321. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/e2e-attestations/claude-tackle-975-n8mc2h.json +0 -0
  322. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-13-drop-cwd-config-auto-detect.md +0 -0
  323. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-13-rename-extract-to-on-file.md +0 -0
  324. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-13-sdk-default-baked-in-config.md +0 -0
  325. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-20-drop-implicit-files-table.md +0 -0
  326. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-21-remove-glob-captures.md +0 -0
  327. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-24-hookless-table-config-error.md +0 -0
  328. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-24-remove-stat-fact-injection.md +0 -0
  329. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-07-29-restore-python-310.md +0 -0
  330. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-08-04-cli-in-process.md +0 -0
  331. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-08-20-declared-table-name.md +0 -0
  332. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-09-20-sigint-ends-a-run-in-progress.md +0 -0
  333. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-09-24-query-rows-in-projection-order.md +0 -0
  334. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-02-readme-docs-host.md +0 -0
  335. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-03-one-glob-rule-for-config-globs.md +0 -0
  336. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-03-path-table-directory-one-level.md +0 -0
  337. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-04-path-table-dotfiles-hidden.md +0 -0
  338. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-brace-groups-follow-bash.md +0 -0
  339. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-cli-context.md +0 -0
  340. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-gitignore-requires-repo.md +0 -0
  341. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-path-table-node-modules-named.md +0 -0
  342. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-path-table-symlinks.md +0 -0
  343. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-path-table-trailing-slash.md +0 -0
  344. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-05-unbalanced-brackets-literal.md +0 -0
  345. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-braces.md +0 -0
  346. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-directory.md +0 -0
  347. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-dotnames.md +0 -0
  348. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-gitignore.md +0 -0
  349. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-globs-anchor-at-the-config.md +0 -0
  350. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-config-links.md +0 -0
  351. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-one-glob-compiler.md +0 -0
  352. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-plugin-no-default-records.md +0 -0
  353. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-watch-broadcast.md +0 -0
  354. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-06-zero-match-config-table-warning.md +0 -0
  355. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-bracket-slash-literal.md +0 -0
  356. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-dotdot-and-double-slashes.md +0 -0
  357. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-dotdot-as-written.md +0 -0
  358. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-glob-walks-node-modules.md +0 -0
  359. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-literal-gitignore.md +0 -0
  360. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-on-file-ndjson.md +0 -0
  361. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-parallel-hooks.md +0 -0
  362. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-persist-cache-outside-root.md +0 -0
  363. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-posix-classes-unicode.md +0 -0
  364. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-07-spread-few-large-files.md +0 -0
  365. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-08-small-walks-stay-on-one-thread.md +0 -0
  366. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/2026-10-08-watch-requires-named-table.md +0 -0
  367. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/migrations.d/README.md +0 -0
  368. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/src/lib.rs +0 -0
  369. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/testing-conventions.toml +0 -0
  370. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/__init__.py +0 -0
  371. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/conftest.py +0 -0
  372. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/__init__.py +0 -0
  373. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/bench_report.py +0 -0
  374. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/bench_suite.py +0 -0
  375. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/__init__.py +0 -0
  376. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/fixtures/dirsql_plugin_fixture/dirsql.toml +0 -0
  377. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/e2e/speed_of_light.py +0 -0
  378. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/integration/__init__.py +0 -0
  379. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/integration/binding/__init__.py +0 -0
  380. {dirsql-0.4.111 → dirsql-0.4.113}/packages/python/tests/integration/hermetic/__init__.py +0 -0
  381. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/CHANGELOG.md +0 -0
  382. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/MIGRATIONS.md +0 -0
  383. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/README.md +0 -0
  384. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/benches/db_bench.rs +0 -0
  385. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/benches/differ_bench.rs +0 -0
  386. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/benches/matcher_bench.rs +0 -0
  387. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/benches/scanner_bench.rs +0 -0
  388. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/context/.gitattributes +0 -0
  389. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/context/recipes.md +0 -0
  390. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/context/troubleshooting.md +0 -0
  391. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/context/usage.md +0 -0
  392. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/explanation.md +0 -0
  393. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/getting-started.md +0 -0
  394. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/agent-skill.md +0 -0
  395. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/columns-from-paths.md +0 -0
  396. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/define-tables.md +0 -0
  397. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/embed.md +0 -0
  398. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/extract-from-contents.md +0 -0
  399. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/load-extension.md +0 -0
  400. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/parse-files-into-columns.md +0 -0
  401. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/persist.md +0 -0
  402. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/query-json.md +0 -0
  403. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/query-without-config.md +0 -0
  404. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/react-to-changes.md +0 -0
  405. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/search-by-meaning.md +0 -0
  406. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/search-indexes.md +0 -0
  407. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/skip-files.md +0 -0
  408. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/howto/write-a-plugin.md +0 -0
  409. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/index.md +0 -0
  410. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/plugins.md +0 -0
  411. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/columns.md +0 -0
  412. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/config.md +0 -0
  413. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/glob.md +0 -0
  414. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/hooks.md +0 -0
  415. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/http-api.md +0 -0
  416. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/path-tables.md +0 -0
  417. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/docs/reference/sdk.md +0 -0
  418. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/bin/dirsql.rs +0 -0
  419. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/brace.rs +0 -0
  420. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/context.rs +0 -0
  421. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/execute.rs +0 -0
  422. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/init.rs +0 -0
  423. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/mod.rs +0 -0
  424. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/repl.rs +0 -0
  425. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/run.rs +0 -0
  426. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/serialize.rs +0 -0
  427. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/server.rs +0 -0
  428. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/cli/table.rs +0 -0
  429. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/command.rs +0 -0
  430. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/config.rs +0 -0
  431. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/default_config.toml +0 -0
  432. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/differ.rs +0 -0
  433. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/extension_resolution.rs +0 -0
  434. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/functions.rs +0 -0
  435. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/infer.rs +0 -0
  436. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/launcher.rs +0 -0
  437. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/listing.rs +0 -0
  438. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/parsed_vtab.rs +0 -0
  439. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/path_table.rs +0 -0
  440. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/persist.rs +0 -0
  441. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/posix_class.rs +0 -0
  442. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/progress.rs +0 -0
  443. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/row_event_flat.rs +0 -0
  444. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/sql_literal.rs +0 -0
  445. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/tree_walk.rs +0 -0
  446. {dirsql-0.4.111 → dirsql-0.4.113}/packages/rust/src/watcher.rs +0 -0
  447. {dirsql-0.4.111 → dirsql-0.4.113}/pyproject.toml +0 -0
@@ -573,7 +573,7 @@ dependencies = [
573
573
 
574
574
  [[package]]
575
575
  name = "dirsql"
576
- version = "0.4.111"
576
+ version = "0.4.113"
577
577
  dependencies = [
578
578
  "assert_cmd",
579
579
  "axum",
@@ -625,7 +625,7 @@ dependencies = [
625
625
 
626
626
  [[package]]
627
627
  name = "dirsql-py-ext"
628
- version = "0.4.111"
628
+ version = "0.4.113"
629
629
  dependencies = [
630
630
  "dirsql",
631
631
  "pyo3",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dirsql
3
- Version: 0.4.111
3
+ Version: 0.4.113
4
4
  Requires-Dist: bin-shim>=0.1
5
5
  Summary: Ephemeral SQL index over a local directory
6
6
  Keywords: sql,filesystem,directory,sqlite,index
@@ -240,18 +240,59 @@ requests, closes open `/events` streams, and exits.
240
240
  Pass `--frontend` to serve the bundled dirsql SQL explorer shell at `/` on
241
241
  the same origin as the HTTP API. It works offline and prints `Frontend at
242
242
  http://<host>:<actual-port>/` without opening a browser. With `--port 0`, the
243
- printed URL uses the assigned port. The initial shell shows server status;
244
- query controls are coming in a subsequent update.
243
+ printed URL uses the assigned port. The page offers an editable SQL box
244
+ holding the starter query `SELECT * FROM './' LIMIT 100`. Nothing runs until
245
+ you press **Run** (or Ctrl/Cmd+Enter); pressing it again refreshes the
246
+ result. Queries go through `POST /query`, so the read-only rule applies, and
247
+ run exactly as written. The page shows elapsed time, the number of rows
248
+ returned, and errors. Values render as text (`NULL` is marked), and only the
249
+ first 1000 rows are displayed. An empty result says so and shows no column
250
+ names, since the response carries none.
251
+
252
+ Above the SQL box the page shows the query root and the path-table columns
253
+ (`path`, `basename`, `dir`, `ext`, `size`, `mtime`, `ctime`, plus `content`,
254
+ read only when named), with a button that loads the starter query. A config
255
+ with declared tables adds each table and its columns; choosing one loads
256
+ `SELECT * FROM "<table>" LIMIT 100` into the box without running it.
257
+ Declared-table globs anchor at their config file's directory, while
258
+ path-tables resolve under the query root. With no declared tables, including
259
+ a config of only functions or extensions, the page shows the path-table
260
+ start alone. A config that fails to load shows its diagnostic and how to
261
+ restart. To refresh, run the query again: path-tables re-read the filesystem,
262
+ and declared tables reflect the server's index. The page does not use
263
+ `/events`.
245
264
 
246
265
  ```bash
247
266
  dirsql server --frontend
248
267
  dirsql server --frontend -c .dirsql.toml
249
268
  ```
250
269
 
251
- The shell reads `GET /frontend/state`: `{"error":null}` when the index is
252
- ready, or HTTP `503` with `{"error":"<diagnostic>"}` when config loading
253
- fails. Fix the config and restart the server. Without `--frontend`, the `/`
254
- and `/frontend/state` routes return `404`.
270
+ The shell reads `GET /frontend/state`. When the index is ready it returns
271
+ HTTP `200`:
272
+
273
+ ```json
274
+ {
275
+ "error": null,
276
+ "root": "/abs/path/of/the/invocation/directory",
277
+ "tables": [
278
+ {"name": "posts", "columns": [{"name": "basename", "type": "TEXT"}]}
279
+ ]
280
+ }
281
+ ```
282
+
283
+ `root` is the query root, where [path-tables](./path-tables.md) resolve.
284
+ `tables` lists the declared tables, ordered by name, each with its columns in
285
+ declaration order and the declared SQLite type (`""` when untyped). Empty
286
+ tables are listed. A configless server, or a config with only functions or
287
+ extensions, returns `"tables": []`. dirsql's bookkeeping tables, SQLite's own
288
+ tables, virtual tables with their shadow tables, and path-tables are never
289
+ listed. The metadata is read from SQLite's catalog: no file is parsed, no
290
+ directory walked, no table counted.
291
+
292
+ When config loading fails the endpoint returns HTTP `503` with
293
+ `{"error":"<diagnostic>"}` and no `root` or `tables`. Fix the config and
294
+ restart the server. Without `--frontend`, the `/` and `/frontend/state`
295
+ routes return `404`. `POST /query` is unchanged.
255
296
 
256
297
  ### Flags
257
298
 
@@ -4,7 +4,7 @@ name = "dirsql-py-ext"
4
4
  # pypi/maturin handler can rewrite it via `write-version` before
5
5
  # `maturin build`. `pyproject.toml` declares `dynamic = ["version"]`
6
6
  # and maturin reads this field. Mirrors `packages/rust/Cargo.toml`.
7
- version = "0.4.111"
7
+ version = "0.4.113"
8
8
  # abi3 note: the `abi3-py310` pyo3 feature (below) builds ONE stable-ABI
9
9
  # `cp310-abi3` wheel per platform that loads on every CPython >= 3.10
10
10
  # (matching `pyproject.toml`'s `requires-python = ">=3.10"`), instead of
@@ -240,18 +240,59 @@ requests, closes open `/events` streams, and exits.
240
240
  Pass `--frontend` to serve the bundled dirsql SQL explorer shell at `/` on
241
241
  the same origin as the HTTP API. It works offline and prints `Frontend at
242
242
  http://<host>:<actual-port>/` without opening a browser. With `--port 0`, the
243
- printed URL uses the assigned port. The initial shell shows server status;
244
- query controls are coming in a subsequent update.
243
+ printed URL uses the assigned port. The page offers an editable SQL box
244
+ holding the starter query `SELECT * FROM './' LIMIT 100`. Nothing runs until
245
+ you press **Run** (or Ctrl/Cmd+Enter); pressing it again refreshes the
246
+ result. Queries go through `POST /query`, so the read-only rule applies, and
247
+ run exactly as written. The page shows elapsed time, the number of rows
248
+ returned, and errors. Values render as text (`NULL` is marked), and only the
249
+ first 1000 rows are displayed. An empty result says so and shows no column
250
+ names, since the response carries none.
251
+
252
+ Above the SQL box the page shows the query root and the path-table columns
253
+ (`path`, `basename`, `dir`, `ext`, `size`, `mtime`, `ctime`, plus `content`,
254
+ read only when named), with a button that loads the starter query. A config
255
+ with declared tables adds each table and its columns; choosing one loads
256
+ `SELECT * FROM "<table>" LIMIT 100` into the box without running it.
257
+ Declared-table globs anchor at their config file's directory, while
258
+ path-tables resolve under the query root. With no declared tables, including
259
+ a config of only functions or extensions, the page shows the path-table
260
+ start alone. A config that fails to load shows its diagnostic and how to
261
+ restart. To refresh, run the query again: path-tables re-read the filesystem,
262
+ and declared tables reflect the server's index. The page does not use
263
+ `/events`.
245
264
 
246
265
  ```bash
247
266
  dirsql server --frontend
248
267
  dirsql server --frontend -c .dirsql.toml
249
268
  ```
250
269
 
251
- The shell reads `GET /frontend/state`: `{"error":null}` when the index is
252
- ready, or HTTP `503` with `{"error":"<diagnostic>"}` when config loading
253
- fails. Fix the config and restart the server. Without `--frontend`, the `/`
254
- and `/frontend/state` routes return `404`.
270
+ The shell reads `GET /frontend/state`. When the index is ready it returns
271
+ HTTP `200`:
272
+
273
+ ```json
274
+ {
275
+ "error": null,
276
+ "root": "/abs/path/of/the/invocation/directory",
277
+ "tables": [
278
+ {"name": "posts", "columns": [{"name": "basename", "type": "TEXT"}]}
279
+ ]
280
+ }
281
+ ```
282
+
283
+ `root` is the query root, where [path-tables](./path-tables.md) resolve.
284
+ `tables` lists the declared tables, ordered by name, each with its columns in
285
+ declaration order and the declared SQLite type (`""` when untyped). Empty
286
+ tables are listed. A configless server, or a config with only functions or
287
+ extensions, returns `"tables": []`. dirsql's bookkeeping tables, SQLite's own
288
+ tables, virtual tables with their shadow tables, and path-tables are never
289
+ listed. The metadata is read from SQLite's catalog: no file is parsed, no
290
+ directory walked, no table counted.
291
+
292
+ When config loading fails the endpoint returns HTTP `503` with
293
+ `{"error":"<diagnostic>"}` and no `root` or `tables`. Fix the config and
294
+ restart the server. Without `--frontend`, the `/` and `/frontend/state`
295
+ routes return `404`. `POST /query` is unchanged.
255
296
 
256
297
  ### Flags
257
298
 
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/cli_version_test.py tests/e2e/query_contract_test.py tests/e2e/fanout_test.py tests/e2e/extension_package_test.py tests/e2e/server_speed_test.py -x -q",
3
+ "ran_at": 1791765336,
4
+ "exit_code": 0,
5
+ "commit": "a2b5671787b3cfa038a128d5cbbeac13e6c268a9",
6
+ "branch": "bot/1487-frontend-query-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/cli_version_test.py tests/e2e/query_contract_test.py tests/e2e/declared_table_name_test.py tests/e2e/on_file_query_test.py -x -q",
3
+ "ran_at": 1791764712,
4
+ "exit_code": 0,
5
+ "commit": "ae61a26f7b9018c3e12aebeea7c6a3cf32ef4d87",
6
+ "branch": "bot/1488-frontend-metadata-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/cli_version_test.py tests/e2e/query_contract_test.py tests/e2e/fanout_test.py tests/e2e/extension_package_test.py -x -q",
3
+ "ran_at": 1791927030,
4
+ "exit_code": 0,
5
+ "commit": "59221551ed292a404b0342d8455c18d2a946d7d6",
6
+ "branch": "bot/1489-frontend-browse-1013"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m tests.e2e.bench_suite --pairs 3 --out /tmp/bench-1504 -k \"glob_speed_symlink or glob_speed_dotfiles or glob_speed_recursive\"",
3
+ "ran_at": 1791770495,
4
+ "exit_code": 0,
5
+ "commit": "cce3e83ece8026cc8feedbb1cd64f73242f1d230",
6
+ "branch": "bot/1504-bench-names-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_depth_bound_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/glob_speed_symlink_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_gitignore_test.py -x -q",
3
+ "ran_at": 1791777891,
4
+ "exit_code": 0,
5
+ "commit": "fb7068d3883fd35c014146a174f4f342aaf93dab",
6
+ "branch": "bot/speed-gap-childpath-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/jsonl_parse_speed_test.py tests/e2e/frontmatter_parse_speed_test.py tests/e2e/on_file_query_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791768023,
4
+ "exit_code": 0,
5
+ "commit": "db8e06627eb807a3932ae3989ef662019a288ce1",
6
+ "branch": "bot/speed-parse-overlap-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/jsonl_parse_speed_test.py tests/e2e/frontmatter_parse_speed_test.py tests/e2e/on_file_query_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791766109,
4
+ "exit_code": 0,
5
+ "commit": "a2a42d2c9ac8c5aa5292f4d4d540296cf1e1ee6c",
6
+ "branch": "bot/speed-parse-pragmas-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_depth_bound_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/glob_speed_symlink_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_node_modules_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/glob_speed_gitignore_test.py tests/e2e/stat_speed_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791771802,
4
+ "exit_code": 0,
5
+ "commit": "6a704d60f7963656097b921100e1f3aaefba6bbd",
6
+ "branch": "bot/speed-walk-components-1011"
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "command": "uv run python -m pytest tests/e2e/glob_speed_depth_bound_test.py tests/e2e/glob_speed_one_level_test.py tests/e2e/glob_speed_recursive_test.py tests/e2e/glob_speed_symlink_test.py tests/e2e/glob_speed_dotfiles_test.py tests/e2e/glob_speed_node_modules_test.py tests/e2e/glob_speed_matchers_test.py tests/e2e/glob_speed_gitignore_test.py tests/e2e/stat_speed_test.py tests/e2e/query_contract_test.py -x -q",
3
+ "ran_at": 1791768231,
4
+ "exit_code": 0,
5
+ "commit": "d6653e1f4d8a1d8b4b723b6f24c0bc805e4aa7e1",
6
+ "branch": "bot/speed-walk-rowpath-1011"
7
+ }
@@ -6,7 +6,7 @@ description = "Ephemeral SQL index over a local directory"
6
6
  # version stays for the binding crates (publish = false). The literal
7
7
  # intentionally lags the published version: putitoutthere rewrites it to
8
8
  # the planned release version at build time and never commits it back.
9
- version = "0.4.111"
9
+ version = "0.4.113"
10
10
  edition.workspace = true
11
11
  # Literal `license` (not `license.workspace = true`) because
12
12
  # putitoutthere's preflight check reads `[package].license` directly
@@ -240,18 +240,59 @@ requests, closes open `/events` streams, and exits.
240
240
  Pass `--frontend` to serve the bundled dirsql SQL explorer shell at `/` on
241
241
  the same origin as the HTTP API. It works offline and prints `Frontend at
242
242
  http://<host>:<actual-port>/` without opening a browser. With `--port 0`, the
243
- printed URL uses the assigned port. The initial shell shows server status;
244
- query controls are coming in a subsequent update.
243
+ printed URL uses the assigned port. The page offers an editable SQL box
244
+ holding the starter query `SELECT * FROM './' LIMIT 100`. Nothing runs until
245
+ you press **Run** (or Ctrl/Cmd+Enter); pressing it again refreshes the
246
+ result. Queries go through `POST /query`, so the read-only rule applies, and
247
+ run exactly as written. The page shows elapsed time, the number of rows
248
+ returned, and errors. Values render as text (`NULL` is marked), and only the
249
+ first 1000 rows are displayed. An empty result says so and shows no column
250
+ names, since the response carries none.
251
+
252
+ Above the SQL box the page shows the query root and the path-table columns
253
+ (`path`, `basename`, `dir`, `ext`, `size`, `mtime`, `ctime`, plus `content`,
254
+ read only when named), with a button that loads the starter query. A config
255
+ with declared tables adds each table and its columns; choosing one loads
256
+ `SELECT * FROM "<table>" LIMIT 100` into the box without running it.
257
+ Declared-table globs anchor at their config file's directory, while
258
+ path-tables resolve under the query root. With no declared tables, including
259
+ a config of only functions or extensions, the page shows the path-table
260
+ start alone. A config that fails to load shows its diagnostic and how to
261
+ restart. To refresh, run the query again: path-tables re-read the filesystem,
262
+ and declared tables reflect the server's index. The page does not use
263
+ `/events`.
245
264
 
246
265
  ```bash
247
266
  dirsql server --frontend
248
267
  dirsql server --frontend -c .dirsql.toml
249
268
  ```
250
269
 
251
- The shell reads `GET /frontend/state`: `{"error":null}` when the index is
252
- ready, or HTTP `503` with `{"error":"<diagnostic>"}` when config loading
253
- fails. Fix the config and restart the server. Without `--frontend`, the `/`
254
- and `/frontend/state` routes return `404`.
270
+ The shell reads `GET /frontend/state`. When the index is ready it returns
271
+ HTTP `200`:
272
+
273
+ ```json
274
+ {
275
+ "error": null,
276
+ "root": "/abs/path/of/the/invocation/directory",
277
+ "tables": [
278
+ {"name": "posts", "columns": [{"name": "basename", "type": "TEXT"}]}
279
+ ]
280
+ }
281
+ ```
282
+
283
+ `root` is the query root, where [path-tables](./path-tables.md) resolve.
284
+ `tables` lists the declared tables, ordered by name, each with its columns in
285
+ declaration order and the declared SQLite type (`""` when untyped). Empty
286
+ tables are listed. A configless server, or a config with only functions or
287
+ extensions, returns `"tables": []`. dirsql's bookkeeping tables, SQLite's own
288
+ tables, virtual tables with their shadow tables, and path-tables are never
289
+ listed. The metadata is read from SQLite's catalog: no file is parsed, no
290
+ directory walked, no table counted.
291
+
292
+ When config loading fails the endpoint returns HTTP `503` with
293
+ `{"error":"<diagnostic>"}` and no `root` or `tables`. Fix the config and
294
+ restart the server. Without `--frontend`, the `/` and `/frontend/state`
295
+ routes return `404`. `POST /query` is unchanged.
255
296
 
256
297
  ### Flags
257
298
 
@@ -0,0 +1,58 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>dirsql SQL explorer</title>
7
+ <style>
8
+ :root { color-scheme: light; font-family: ui-sans-serif, system-ui, sans-serif; background: #f4f6f4; color: #173026; }
9
+ * { box-sizing: border-box; }
10
+ body { margin: 0; min-height: 100vh; }
11
+ header { border-bottom: 1px solid #d9e1da; background: #fff; padding: 1.1rem max(1.5rem, calc((100vw - 56rem) / 2)); }
12
+ header strong { font-size: 1.15rem; letter-spacing: -.03em; }
13
+ main { max-width: 56rem; margin: 0 auto; padding: clamp(2rem, 7vw, 5rem) 1.5rem; }
14
+ h1 { font-size: clamp(2rem, 5vw, 3.4rem); line-height: 1.1; letter-spacing: -.055em; margin: 0 0 1rem; }
15
+ p { line-height: 1.6; color: #4a5d51; max-width: 42rem; }
16
+ .panel { margin-top: 2.5rem; padding: 1.5rem; border: 1px solid #d9e1da; border-radius: 12px; background: #fff; box-shadow: 0 3px 12px #17302609; }
17
+ .panel h2 { margin: 0 0 .5rem; font-size: 1rem; }
18
+ .panel p { margin: 0 0 .6rem; }
19
+ .panel h2:not(:first-child) { margin-top: 1.2rem; }
20
+ .panel ul { margin: .2rem 0 .8rem; padding-left: 1.2rem; line-height: 1.5; color: #4a5d51; }
21
+ .panel button.choice { margin: .2rem 0; padding: .25rem .6rem; background: #eef2ee; color: #173026; border: 1px solid #b9c7bd; font: .9rem/1.4 ui-monospace, monospace; }
22
+ form { margin-top: 2rem; }
23
+ label { display: block; font-weight: 600; margin-bottom: .4rem; }
24
+ textarea { width: 100%; min-height: 7rem; padding: .7rem; border: 1px solid #b9c7bd; border-radius: 8px; font: .95rem/1.5 ui-monospace, monospace; resize: vertical; }
25
+ button { margin-top: .6rem; padding: .5rem 1.2rem; border: 0; border-radius: 8px; background: #1f6b46; color: #fff; font: inherit; font-weight: 600; cursor: pointer; }
26
+ button[aria-busy="true"] { opacity: .6; cursor: progress; }
27
+ .hint { font-size: .85rem; margin: .4rem 0 0; }
28
+ #result { margin-top: 1.5rem; overflow-x: auto; }
29
+ #result p.error { color: #a0362a; white-space: pre-wrap; overflow-wrap: anywhere; }
30
+ table { border-collapse: collapse; font: .85rem/1.4 ui-monospace, monospace; background: #fff; }
31
+ th, td { border: 1px solid #d9e1da; padding: .3rem .6rem; text-align: left; vertical-align: top; white-space: pre-wrap; overflow-wrap: anywhere; max-width: 40rem; }
32
+ th { background: #eef2ee; }
33
+ td.null { color: #7a8a80; font-style: italic; }
34
+ .error { border-color: #d7a7a1; background: #fff8f7; }
35
+ .error h2 { color: #a0362a; }
36
+ .error pre { white-space: pre-wrap; overflow-wrap: anywhere; font: .9rem/1.5 ui-monospace, monospace; margin: .8rem 0; }
37
+ </style>
38
+ </head>
39
+ <body>
40
+ <header><strong>dirsql</strong></header>
41
+ <main>
42
+ <h1>dirsql SQL explorer</h1>
43
+ <p>Explore the files and tables in this directory with SQL.</p>
44
+ <section class="panel" id="state" aria-live="polite">
45
+ <h2 id="state-title">Connecting to dirsql…</h2>
46
+ <p id="state-message">Checking the server state.</p>
47
+ </section>
48
+ <form id="query" onsubmit="return false">
49
+ <label for="sql">SQL (read-only)</label>
50
+ <textarea id="sql" name="sql" spellcheck="false" aria-describedby="sql-hint">SELECT * FROM './' LIMIT 100</textarea>
51
+ <button type="button" id="run">Run</button>
52
+ <p class="hint" id="sql-hint">Runs exactly as written; edit the LIMIT as needed. Press Ctrl+Enter or Cmd+Enter to run.</p>
53
+ </form>
54
+ <section id="result" aria-live="polite" aria-label="Query result"></section>
55
+ </main>
56
+ <script type="module" src="/frontend.js"></script>
57
+ </body>
58
+ </html>