interlatch 0.28.4__tar.gz → 0.28.5__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 (496) hide show
  1. {interlatch-0.28.4 → interlatch-0.28.5}/CHANGELOG.md +7 -0
  2. {interlatch-0.28.4 → interlatch-0.28.5}/PKG-INFO +1 -1
  3. interlatch-0.28.5/changelog.d/hubs-inline.md +2 -0
  4. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/profiles.md +1 -1
  5. {interlatch-0.28.4 → interlatch-0.28.5}/docs/profiles.md +3 -3
  6. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/app.css +5 -0
  7. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/app.js +27 -24
  8. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/ja.js +0 -5
  9. interlatch-0.28.4/changelog.d/hub-pages.md +0 -4
  10. {interlatch-0.28.4 → interlatch-0.28.5}/.github/dependabot.yml +0 -0
  11. {interlatch-0.28.4 → interlatch-0.28.5}/.github/windows-ja-qa/driver.ps1 +0 -0
  12. {interlatch-0.28.4 → interlatch-0.28.5}/.github/windows-ja-qa/ja_check.py +0 -0
  13. {interlatch-0.28.4 → interlatch-0.28.5}/.github/windows-ja-qa/report.py +0 -0
  14. {interlatch-0.28.4 → interlatch-0.28.5}/.github/windows-ja-qa/shots.py +0 -0
  15. {interlatch-0.28.4 → interlatch-0.28.5}/.github/windows-ja-qa/user.ps1 +0 -0
  16. {interlatch-0.28.4 → interlatch-0.28.5}/.github/workflows/changelog.yml +0 -0
  17. {interlatch-0.28.4 → interlatch-0.28.5}/.github/workflows/ci.yml +0 -0
  18. {interlatch-0.28.4 → interlatch-0.28.5}/.github/workflows/docs.yml +0 -0
  19. {interlatch-0.28.4 → interlatch-0.28.5}/.github/workflows/release.yml +0 -0
  20. {interlatch-0.28.4 → interlatch-0.28.5}/.github/workflows/windows-ja-qa.yml +0 -0
  21. {interlatch-0.28.4 → interlatch-0.28.5}/.gitignore +0 -0
  22. {interlatch-0.28.4 → interlatch-0.28.5}/.pre-commit-config.yaml +0 -0
  23. {interlatch-0.28.4 → interlatch-0.28.5}/.python-version +0 -0
  24. {interlatch-0.28.4 → interlatch-0.28.5}/CONTRIBUTING.md +0 -0
  25. {interlatch-0.28.4 → interlatch-0.28.5}/LICENSE +0 -0
  26. {interlatch-0.28.4 → interlatch-0.28.5}/README.ja.md +0 -0
  27. {interlatch-0.28.4 → interlatch-0.28.5}/README.md +0 -0
  28. {interlatch-0.28.4 → interlatch-0.28.5}/ROADMAP.ja.md +0 -0
  29. {interlatch-0.28.4 → interlatch-0.28.5}/ROADMAP.md +0 -0
  30. {interlatch-0.28.4 → interlatch-0.28.5}/SECURITY.md +0 -0
  31. {interlatch-0.28.4 → interlatch-0.28.5}/careers/README.md +0 -0
  32. {interlatch-0.28.4 → interlatch-0.28.5}/careers/boards.json +0 -0
  33. {interlatch-0.28.4 → interlatch-0.28.5}/careers/pipeline.py +0 -0
  34. {interlatch-0.28.4 → interlatch-0.28.5}/changelog.d/README.md +0 -0
  35. {interlatch-0.28.4 → interlatch-0.28.5}/dev.sh +0 -0
  36. {interlatch-0.28.4 → interlatch-0.28.5}/docker/.dockerignore +0 -0
  37. {interlatch-0.28.4 → interlatch-0.28.5}/docker/.env.example +0 -0
  38. {interlatch-0.28.4 → interlatch-0.28.5}/docker/Caddyfile +0 -0
  39. {interlatch-0.28.4 → interlatch-0.28.5}/docker/Dockerfile +0 -0
  40. {interlatch-0.28.4 → interlatch-0.28.5}/docker/compose.yaml +0 -0
  41. {interlatch-0.28.4 → interlatch-0.28.5}/docker/wheels/.gitignore +0 -0
  42. {interlatch-0.28.4 → interlatch-0.28.5}/docs/README.md +0 -0
  43. {interlatch-0.28.4 → interlatch-0.28.5}/docs/_site/hooks.py +0 -0
  44. {interlatch-0.28.4 → interlatch-0.28.5}/docs/analysis.md +0 -0
  45. {interlatch-0.28.4 → interlatch-0.28.5}/docs/cli.md +0 -0
  46. {interlatch-0.28.4 → interlatch-0.28.5}/docs/configuration.md +0 -0
  47. {interlatch-0.28.4 → interlatch-0.28.5}/docs/dashboard.md +0 -0
  48. {interlatch-0.28.4 → interlatch-0.28.5}/docs/demo/make_demo.py +0 -0
  49. {interlatch-0.28.4 → interlatch-0.28.5}/docs/demo/record_demo.py +0 -0
  50. {interlatch-0.28.4 → interlatch-0.28.5}/docs/design/innerlatch.md +0 -0
  51. {interlatch-0.28.4 → interlatch-0.28.5}/docs/design/ja/innerlatch.md +0 -0
  52. {interlatch-0.28.4 → interlatch-0.28.5}/docs/design/ja/learning.md +0 -0
  53. {interlatch-0.28.4 → interlatch-0.28.5}/docs/design/learning.md +0 -0
  54. {interlatch-0.28.4 → interlatch-0.28.5}/docs/development.md +0 -0
  55. {interlatch-0.28.4 → interlatch-0.28.5}/docs/devices.md +0 -0
  56. {interlatch-0.28.4 → interlatch-0.28.5}/docs/diagrams/analysis.excalidraw.svg +0 -0
  57. {interlatch-0.28.4 → interlatch-0.28.5}/docs/diagrams/architecture.excalidraw.svg +0 -0
  58. {interlatch-0.28.4 → interlatch-0.28.5}/docs/docker.md +0 -0
  59. {interlatch-0.28.4 → interlatch-0.28.5}/docs/faq.md +0 -0
  60. {interlatch-0.28.4 → interlatch-0.28.5}/docs/images/demo.gif +0 -0
  61. {interlatch-0.28.4 → interlatch-0.28.5}/docs/images/home.png +0 -0
  62. {interlatch-0.28.4 → interlatch-0.28.5}/docs/images/map.png +0 -0
  63. {interlatch-0.28.4 → interlatch-0.28.5}/docs/images/palette.png +0 -0
  64. {interlatch-0.28.4 → interlatch-0.28.5}/docs/images/session.png +0 -0
  65. {interlatch-0.28.4 → interlatch-0.28.5}/docs/install.md +0 -0
  66. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/README.md +0 -0
  67. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/analysis.md +0 -0
  68. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/cli.md +0 -0
  69. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/configuration.md +0 -0
  70. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/dashboard.md +0 -0
  71. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/development.md +0 -0
  72. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/devices.md +0 -0
  73. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/docker.md +0 -0
  74. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/faq.md +0 -0
  75. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/install.md +0 -0
  76. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/join-a-hub.md +0 -0
  77. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/mcp.md +0 -0
  78. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/moving-from-chronicle.md +0 -0
  79. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/party.md +0 -0
  80. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/postgres.md +0 -0
  81. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/privacy.md +0 -0
  82. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/sources.md +0 -0
  83. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/suggestions.md +0 -0
  84. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/troubleshooting.md +0 -0
  85. {interlatch-0.28.4 → interlatch-0.28.5}/docs/ja/vscode.md +0 -0
  86. {interlatch-0.28.4 → interlatch-0.28.5}/docs/join-a-hub.md +0 -0
  87. {interlatch-0.28.4 → interlatch-0.28.5}/docs/mcp.md +0 -0
  88. {interlatch-0.28.4 → interlatch-0.28.5}/docs/moving-from-chronicle.md +0 -0
  89. {interlatch-0.28.4 → interlatch-0.28.5}/docs/party.md +0 -0
  90. {interlatch-0.28.4 → interlatch-0.28.5}/docs/postgres.md +0 -0
  91. {interlatch-0.28.4 → interlatch-0.28.5}/docs/privacy.md +0 -0
  92. {interlatch-0.28.4 → interlatch-0.28.5}/docs/sources.md +0 -0
  93. {interlatch-0.28.4 → interlatch-0.28.5}/docs/suggestions.md +0 -0
  94. {interlatch-0.28.4 → interlatch-0.28.5}/docs/troubleshooting.md +0 -0
  95. {interlatch-0.28.4 → interlatch-0.28.5}/docs/vscode.md +0 -0
  96. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/.firebaserc +0 -0
  97. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/.gitignore +0 -0
  98. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/README.md +0 -0
  99. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/firebase.json +0 -0
  100. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/firestore.indexes.json +0 -0
  101. {interlatch-0.28.4 → interlatch-0.28.5}/leaderboard/firestore.rules +0 -0
  102. {interlatch-0.28.4 → interlatch-0.28.5}/mkdocs.yml +0 -0
  103. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/README.md +0 -0
  104. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/art.json +0 -0
  105. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/filing.html +0 -0
  106. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/loops.json +0 -0
  107. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/loops.py +0 -0
  108. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/members.js +0 -0
  109. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/render.html +0 -0
  110. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/render.py +0 -0
  111. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/scenes-more.js +0 -0
  112. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/icons3d/scenes.html +0 -0
  113. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/Chronicle.icns +0 -0
  114. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/Interlatch.spec +0 -0
  115. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/build.sh +0 -0
  116. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/entitlements.plist +0 -0
  117. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/icon-3d.webp +0 -0
  118. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/icon-blueprint-prompt.md +0 -0
  119. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/icon-blueprint.webp +0 -0
  120. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/icon.png +0 -0
  121. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/interlatch_app.py +0 -0
  122. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/macos/make_icon.py +0 -0
  123. {interlatch-0.28.4 → interlatch-0.28.5}/packaging/release.py +0 -0
  124. {interlatch-0.28.4 → interlatch-0.28.5}/pyproject.toml +0 -0
  125. {interlatch-0.28.4 → interlatch-0.28.5}/src/chronicle/__init__.py +0 -0
  126. {interlatch-0.28.4 → interlatch-0.28.5}/src/chronicle/__main__.py +0 -0
  127. {interlatch-0.28.4 → interlatch-0.28.5}/src/chronicle/windows.py +0 -0
  128. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/__init__.py +0 -0
  129. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/__main__.py +0 -0
  130. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/__init__.py +0 -0
  131. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/digest.py +0 -0
  132. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/language.py +0 -0
  133. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/queue.py +0 -0
  134. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/__init__.py +0 -0
  135. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/api.py +0 -0
  136. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/base.py +0 -0
  137. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/bob.py +0 -0
  138. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/claude.py +0 -0
  139. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/codex.py +0 -0
  140. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/factory.py +0 -0
  141. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/off.py +0 -0
  142. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/opencode.py +0 -0
  143. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/process.py +0 -0
  144. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/replies.py +0 -0
  145. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/runners/settings.py +0 -0
  146. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/screen.py +0 -0
  147. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/session.py +0 -0
  148. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/analysis/worker.py +0 -0
  149. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/application/__init__.py +0 -0
  150. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/application/profiles.py +0 -0
  151. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/application/records.py +0 -0
  152. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/application/search.py +0 -0
  153. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/application/workflows.py +0 -0
  154. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/artifacts/__init__.py +0 -0
  155. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/artifacts/files.py +0 -0
  156. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/artifacts/queries.py +0 -0
  157. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/cli.py +0 -0
  158. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/__init__.py +0 -0
  159. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/agents.py +0 -0
  160. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/artifact_records.py +0 -0
  161. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/config.py +0 -0
  162. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/diagrams.py +0 -0
  163. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/i18n/__init__.py +0 -0
  164. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/i18n/ja.py +0 -0
  165. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/machine.py +0 -0
  166. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/paths.py +0 -0
  167. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/pricing.py +0 -0
  168. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/process.py +0 -0
  169. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/profiles.py +0 -0
  170. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/redact.py +0 -0
  171. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/sessions.py +0 -0
  172. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/core/util.py +0 -0
  173. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/__init__.py +0 -0
  174. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/analyses.py +0 -0
  175. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/archive.py +0 -0
  176. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/chat_import.py +0 -0
  177. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/deletion.py +0 -0
  178. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/history.py +0 -0
  179. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/memory.py +0 -0
  180. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/persistence.py +0 -0
  181. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/report.py +0 -0
  182. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/ingestion/service.py +0 -0
  183. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/__init__.py +0 -0
  184. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/__init__.py +0 -0
  185. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/__init__.py +0 -0
  186. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/archive.py +0 -0
  187. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/hubs.py +0 -0
  188. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/knowledge.py +0 -0
  189. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/operations.py +0 -0
  190. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/recording.py +0 -0
  191. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/setup.py +0 -0
  192. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/commands/sharing.py +0 -0
  193. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/common.py +0 -0
  194. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/main.py +0 -0
  195. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/cli/parser.py +0 -0
  196. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/exports/__init__.py +0 -0
  197. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/exports/diagrams.py +0 -0
  198. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/exports/markdown.py +0 -0
  199. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/exports/sessions.py +0 -0
  200. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/exports/vault.py +0 -0
  201. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/mcp.py +0 -0
  202. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/__init__.py +0 -0
  203. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/__init__.py +0 -0
  204. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/artifacts.py +0 -0
  205. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/common.py +0 -0
  206. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/devices.py +0 -0
  207. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/hub_admin.py +0 -0
  208. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/hubs.py +0 -0
  209. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/knowledge.py +0 -0
  210. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/leaderboard.py +0 -0
  211. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/party.py +0 -0
  212. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/projects.py +0 -0
  213. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/sessions.py +0 -0
  214. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/settings.py +0 -0
  215. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/sources.py +0 -0
  216. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/status.py +0 -0
  217. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/storage.py +0 -0
  218. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/api/team.py +0 -0
  219. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/app.py +0 -0
  220. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/assets.py +0 -0
  221. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/context.py +0 -0
  222. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/handler.py +0 -0
  223. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/jobs.py +0 -0
  224. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/routes.py +0 -0
  225. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/interfaces/web/server.py +0 -0
  226. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/__init__.py +0 -0
  227. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/arena.py +0 -0
  228. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/bag.py +0 -0
  229. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/cases.py +0 -0
  230. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/formation.py +0 -0
  231. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/friction.py +0 -0
  232. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/glossary.py +0 -0
  233. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/group_graph.py +0 -0
  234. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/instructions.py +0 -0
  235. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/ladder.py +0 -0
  236. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/learning.py +0 -0
  237. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/market.json +0 -0
  238. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/party.py +0 -0
  239. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/reviews.py +0 -0
  240. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/roadmap.json +0 -0
  241. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/study.py +0 -0
  242. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/suggest.py +0 -0
  243. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/synthesize.py +0 -0
  244. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/knowledge/weekly.py +0 -0
  245. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/__init__.py +0 -0
  246. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/groups.py +0 -0
  247. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/hubgroups.py +0 -0
  248. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/labels.py +0 -0
  249. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/owners.py +0 -0
  250. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/progress.py +0 -0
  251. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/routing.py +0 -0
  252. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/scope.py +0 -0
  253. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/projects/systems.py +0 -0
  254. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/__init__.py +0 -0
  255. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/connectors.py +0 -0
  256. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/container.py +0 -0
  257. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/hooks.py +0 -0
  258. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/install.py +0 -0
  259. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/migrate.py +0 -0
  260. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/notify.py +0 -0
  261. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/platforms/__init__.py +0 -0
  262. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/platforms/desktop.py +0 -0
  263. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/platforms/menubar.py +0 -0
  264. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/platforms/windows.py +0 -0
  265. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/statusline.py +0 -0
  266. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/tailnet.py +0 -0
  267. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/runtime/update.py +0 -0
  268. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/__init__.py +0 -0
  269. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/access.py +0 -0
  270. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/arena.py +0 -0
  271. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/client.py +0 -0
  272. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/identity.py +0 -0
  273. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/leaderboard.py +0 -0
  274. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/market.py +0 -0
  275. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/membership.py +0 -0
  276. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/news.py +0 -0
  277. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/people.py +0 -0
  278. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/projects.py +0 -0
  279. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/protocol.py +0 -0
  280. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/pull.py +0 -0
  281. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/push.py +0 -0
  282. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sharing/receiver.py +0 -0
  283. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/__init__.py +0 -0
  284. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/antigravity.py +0 -0
  285. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/bob.py +0 -0
  286. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/builder.py +0 -0
  287. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/chatgpt.py +0 -0
  288. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/chats.py +0 -0
  289. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/claude/__init__.py +0 -0
  290. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/claude/export.py +0 -0
  291. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/claude/files.py +0 -0
  292. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/claude/parser.py +0 -0
  293. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/codex/__init__.py +0 -0
  294. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/codex/cloud.py +0 -0
  295. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/codex/parser.py +0 -0
  296. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/copilot.py +0 -0
  297. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/discovery.py +0 -0
  298. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/opencode.py +0 -0
  299. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/sources/prompts.py +0 -0
  300. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/__init__.py +0 -0
  301. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/fts.py +0 -0
  302. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/kv.py +0 -0
  303. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/migrations.py +0 -0
  304. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/mirror.py +0 -0
  305. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/postgres.py +0 -0
  306. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/schema.py +0 -0
  307. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/sqlite.py +0 -0
  308. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/storage/team.py +0 -0
  309. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/AGENT-ICONS.txt +0 -0
  310. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/PLEX-OFL.txt +0 -0
  311. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/adventure.js +0 -0
  312. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-antigravity.svg +0 -0
  313. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-bob.svg +0 -0
  314. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-chatgpt.svg +0 -0
  315. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-claude-ai.svg +0 -0
  316. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-claude.svg +0 -0
  317. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-codex.svg +0 -0
  318. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-copilot.svg +0 -0
  319. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/agent-opencode.svg +0 -0
  320. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-book.webp +0 -0
  321. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-camera.webp +0 -0
  322. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-chip.webp +0 -0
  323. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-clock.webp +0 -0
  324. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-cloud.webp +0 -0
  325. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-coins.webp +0 -0
  326. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-container.webp +0 -0
  327. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-dashboard.webp +0 -0
  328. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-dex.webp +0 -0
  329. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-document.webp +0 -0
  330. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-flag.webp +0 -0
  331. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-folder.webp +0 -0
  332. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-gateway.webp +0 -0
  333. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-gears.webp +0 -0
  334. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-glitch.webp +0 -0
  335. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-globe.webp +0 -0
  336. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-laptop.webp +0 -0
  337. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-log.webp +0 -0
  338. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-lumi.webp +0 -0
  339. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-magnifier.webp +0 -0
  340. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-pip.webp +0 -0
  341. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-plug.webp +0 -0
  342. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-rack.webp +0 -0
  343. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/art-tink.webp +0 -0
  344. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/battle.js +0 -0
  345. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/boot.js +0 -0
  346. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/favicon.png +0 -0
  347. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/field.js +0 -0
  348. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/i18n.js +0 -0
  349. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/icon-180.png +0 -0
  350. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/icon-192.png +0 -0
  351. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/icon-512.png +0 -0
  352. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/icon.png +0 -0
  353. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/index.html +0 -0
  354. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/innerlatch.css +0 -0
  355. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/innerlatch.js +0 -0
  356. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/learning.js +0 -0
  357. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/manifest.webmanifest +0 -0
  358. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/panel.css +0 -0
  359. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/panel.html +0 -0
  360. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/panel.js +0 -0
  361. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-mono-400.woff2 +0 -0
  362. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-mono-500.woff2 +0 -0
  363. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-mono-600.woff2 +0 -0
  364. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-sans-400.woff2 +0 -0
  365. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-sans-500.woff2 +0 -0
  366. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-sans-600.woff2 +0 -0
  367. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/plex-sans-700.woff2 +0 -0
  368. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/rough.js +0 -0
  369. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/scene.js +0 -0
  370. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/web/sprites.js +0 -0
  371. {interlatch-0.28.4 → interlatch-0.28.5}/src/interlatch/windows.py +0 -0
  372. {interlatch-0.28.4 → interlatch-0.28.5}/tests/antigravity_fixture.py +0 -0
  373. {interlatch-0.28.4 → interlatch-0.28.5}/tests/codex_fixture.py +0 -0
  374. {interlatch-0.28.4 → interlatch-0.28.5}/tests/conftest.py +0 -0
  375. {interlatch-0.28.4 → interlatch-0.28.5}/tests/copilot_fixture.py +0 -0
  376. {interlatch-0.28.4 → interlatch-0.28.5}/tests/friction_fixture.py +0 -0
  377. {interlatch-0.28.4 → interlatch-0.28.5}/tests/golden.py +0 -0
  378. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/cli.json +0 -0
  379. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/diagram.json +0 -0
  380. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/antigravity.json +0 -0
  381. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/bob.json +0 -0
  382. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/claude_code.json +0 -0
  383. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/codex.json +0 -0
  384. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/copilot.json +0 -0
  385. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/parsers/opencode.json +0 -0
  386. {interlatch-0.28.4 → interlatch-0.28.5}/tests/goldens/systems.json +0 -0
  387. {interlatch-0.28.4 → interlatch-0.28.5}/tests/hubs_fixture.py +0 -0
  388. {interlatch-0.28.4 → interlatch-0.28.5}/tests/opencode_fixture.py +0 -0
  389. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_adventure_web.py +0 -0
  390. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_analysis.py +0 -0
  391. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_antigravity.py +0 -0
  392. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_architecture.py +0 -0
  393. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_arena.py +0 -0
  394. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_artifacts.py +0 -0
  395. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_bag.py +0 -0
  396. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_battle_web.py +0 -0
  397. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_bob_analysis.py +0 -0
  398. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_boot_web.py +0 -0
  399. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_careers.py +0 -0
  400. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_case_files.py +0 -0
  401. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_cases.py +0 -0
  402. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_chat_import.py +0 -0
  403. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_cli_pins.py +0 -0
  404. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_codex.py +0 -0
  405. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_codex_analysis.py +0 -0
  406. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_codex_cloud.py +0 -0
  407. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_container.py +0 -0
  408. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_copilot_bob.py +0 -0
  409. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_dedicated_hub.py +0 -0
  410. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_dedupe.py +0 -0
  411. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_desktop.py +0 -0
  412. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_diagram.py +0 -0
  413. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_ee_boundary.py +0 -0
  414. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_field_web.py +0 -0
  415. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_fix_effect.py +0 -0
  416. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_formation.py +0 -0
  417. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_friction.py +0 -0
  418. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_game_mode.py +0 -0
  419. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_glossary.py +0 -0
  420. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_group_graph.py +0 -0
  421. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_group_sharing.py +0 -0
  422. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_guidance.py +0 -0
  423. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_home_agents.py +0 -0
  424. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub.py +0 -0
  425. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_accept.py +0 -0
  426. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_cookie.py +0 -0
  427. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_groups.py +0 -0
  428. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_inventory_scope.py +0 -0
  429. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_leave_join.py +0 -0
  430. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_news.py +0 -0
  431. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_payload_privacy.py +0 -0
  432. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_projects.py +0 -0
  433. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_projects_listed.py +0 -0
  434. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_purge.py +0 -0
  435. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_send_problems.py +0 -0
  436. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_hub_sharing_race.py +0 -0
  437. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_i18n_web.py +0 -0
  438. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_ingest.py +0 -0
  439. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_instructions.py +0 -0
  440. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_integration.py +0 -0
  441. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_ladder.py +0 -0
  442. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_language.py +0 -0
  443. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_leaderboard.py +0 -0
  444. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_learning_glance.py +0 -0
  445. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_learning_interests.py +0 -0
  446. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_learning_web.py +0 -0
  447. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_leave_project.py +0 -0
  448. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_legacy_package.py +0 -0
  449. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_map_goldens.py +0 -0
  450. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_market.py +0 -0
  451. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_menubar.py +0 -0
  452. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_migrate.py +0 -0
  453. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_mirror.py +0 -0
  454. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_notify.py +0 -0
  455. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_opencode.py +0 -0
  456. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_opencode_analysis.py +0 -0
  457. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_parser.py +0 -0
  458. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_parser_goldens.py +0 -0
  459. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_party.py +0 -0
  460. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_party_map.py +0 -0
  461. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_people.py +0 -0
  462. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_people_hub.py +0 -0
  463. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_people_web.py +0 -0
  464. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_profile_hubs.py +0 -0
  465. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_profile_scope.py +0 -0
  466. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_profiles.py +0 -0
  467. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_project_groups.py +0 -0
  468. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_project_progress.py +0 -0
  469. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_providers.py +0 -0
  470. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_queue.py +0 -0
  471. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_regressions.py +0 -0
  472. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_release.py +0 -0
  473. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_roadmap_catalog.py +0 -0
  474. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_route_matrix.py +0 -0
  475. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_screen.py +0 -0
  476. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_security.py +0 -0
  477. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_setup.py +0 -0
  478. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_statusline.py +0 -0
  479. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_study.py +0 -0
  480. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_suggest.py +0 -0
  481. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_suggest_cli.py +0 -0
  482. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_systems.py +0 -0
  483. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_team.py +0 -0
  484. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_team_home.py +0 -0
  485. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_update.py +0 -0
  486. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_weekly_reanalysis.py +0 -0
  487. {interlatch-0.28.4 → interlatch-0.28.5}/tests/test_windows.py +0 -0
  488. {interlatch-0.28.4 → interlatch-0.28.5}/tests/windows_smoke.py +0 -0
  489. {interlatch-0.28.4 → interlatch-0.28.5}/uv.lock +0 -0
  490. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/.vscodeignore +0 -0
  491. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/LICENSE +0 -0
  492. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/README.md +0 -0
  493. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/extension.js +0 -0
  494. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/media/icon.png +0 -0
  495. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/media/interlatch.svg +0 -0
  496. {interlatch-0.28.4 → interlatch-0.28.5}/vscode-extension/package.json +0 -0
@@ -3,6 +3,13 @@
3
3
  <!-- Don't add lines here: a pull request puts its line in a new file in changelog.d/ (see changelog.d/README.md),
4
4
  and each release moves the files it took into a dated section below. -->
5
5
 
6
+ ## 0.28.4 (2026-10-20)
7
+
8
+ - **Every hub has the same page.** Settings › Hubs lists each hub, Personal's too, and each one opens a page of its own
9
+ with how sending goes, **Projects on the hub** (join a project with a folder here, add or remove a folder, leave or
10
+ rejoin) and what this computer shares with it. Settings › Devices is about this computer and your phone again
11
+ ([Several hubs on one computer](docs/profiles.md)).
12
+
6
13
  ## 0.28.3 (2026-10-20)
7
14
 
8
15
  - **Settings › Hubs.** Each hub this computer sends to has its own card: whether sending works, the last share,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: interlatch
3
- Version: 0.28.4
3
+ Version: 0.28.5
4
4
  Summary: Shared memory for your coding agents: records every session (Claude Code, Codex, Copilot, Bob, Antigravity, OpenCode) locally and keeps what they learned, each lesson linked to the session it came from.
5
5
  Project-URL: Homepage, https://interlatch.com
6
6
  Project-URL: Documentation, https://interlatch.com/docs/
@@ -0,0 +1,2 @@
1
+ - **Settings › Hubs shows each hub's projects and sharing right under it**, on one page, instead of a page per hub
2
+ ([Several hubs on one computer](docs/profiles.md)).
@@ -29,7 +29,7 @@
29
29
 
30
30
  グループのフォルダーですでに記録されたセッションは Acme に移り、それ以降は Acme のハブに送られます。Personal のハブがすでに持っているものは、先にそのハブが取り下げます([移すとハブから取り下げる](#moving-takes-sessions-back))。`--dry-run` を付けると、何も変えずに、移るものと、そのうちハブが持っている数を表示します。
31
31
 
32
- **ダッシュボードでは:** **設定 › ハブ**に Personal のものを含むすべてのハブが並び、ハブの追加(名前、アドレス、招待コード)もここで行います。ハブごとに同じ構成のページがあります。送信がうまくいっているか、**今すぐ共有**、ハブのダッシュボード、**ハブのプロジェクト**(ここのフォルダーでハブのプロジェクトに参加する、抜ける)、そのハブと何を共有するか、です。グループのページの**送り先**で、そのグループのセッションを送るハブを選びます。**プロジェクト**のサイドバーでは、ハブにつないだグループにそのハブの名前が表示され、選択を待つフォルダーが先頭に並びます。
32
+ **ダッシュボードでは:** **設定 › ハブ**に Personal のものを含むすべてのハブが並び、ハブの追加(名前、アドレス、招待コード)もここで行います。各ハブの下に、どのハブも同じ構成で並びます。送信がうまくいっているか、**今すぐ共有**、ハブのダッシュボード、**ハブのプロジェクト**(ここのフォルダーでハブのプロジェクトに参加する、抜ける)、そのハブと何を共有するか、です。グループのページの**送り先**で、そのグループのセッションを送るハブを選びます。**プロジェクト**のサイドバーでは、ハブにつないだグループにそのハブの名前が表示され、選択を待つフォルダーが先頭に並びます。
33
33
 
34
34
  ほかのコンピューターと同じく、ハブに送られるのは、そのハブのプロジェクトに追加したフォルダーのものだけです(`interlatch --hub Acme hub add-folder ~/work/acme/app --project App`)。`--all-folders` を付けて参加した場合は別です。
35
35
 
@@ -38,9 +38,9 @@ Personal's hub already has, it takes back first (see [Moving takes sessions back
38
38
  `--dry-run` shows what would move, and how many of them a hub has, without changing anything.
39
39
 
40
40
  **On the dashboard:** **Settings › Hubs** lists every hub, Personal's too, and adds one (its name, address and
41
- invite code). Each hub has a page of its own, the same for every hub: whether sending to it works, **Share now**, its
42
- dashboard, **Projects on the hub** (join one of its projects with a folder here, or leave one) and what this computer
43
- shares with it. A group's page has **Goes to**, where you pick the hub its sessions go to. In the **Projects** sidebar,
41
+ invite code). Under each hub, the same for every hub: whether sending to it works, **Share now**, its dashboard,
42
+ **Projects on the hub** (join one of its projects with a folder here, or leave one) and what this computer shares with
43
+ it. A group's page has **Goes to**, where you pick the hub its sessions go to. In the **Projects** sidebar,
44
44
  a group connected to a hub shows that hub's name, and folders waiting for you are listed first.
45
45
 
46
46
  As on any computer, a hub gets only the folders added to one of its projects
@@ -473,6 +473,11 @@ select:focus, .input:focus { outline: 2px solid var(--accent-wash-2); border-col
473
473
  .filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
474
474
  .filters .spacer { flex: 1; }
475
475
  .grid { display: grid; gap: 16px; }
476
+ /* Settings › Hubs: each hub, then its projects and what this computer shares with it, set in under it */
477
+ .hubs-grid { gap: 28px; }
478
+ .hub-block { display: grid; gap: 12px; scroll-margin-top: 16px; }
479
+ .hub-block > .card ~ .card { margin-left: 20px; }
480
+ @media (max-width: 640px) { .hub-block > .card ~ .card { margin-left: 10px; } }
476
481
  .cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
477
482
  .cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
478
483
  .cols-main { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
@@ -7141,42 +7141,46 @@ async function waitingHomeCard(box) {
7141
7141
  // Settings › Hubs (docs/profiles.md): Personal's hub and each other one this computer sends to, one card each: how
7142
7142
  // sending goes, what it gets (its groups), Share now, its dashboard, joining and leaving it; then the folders that wait
7143
7143
  // for you, and adding a hub. Only from the computer itself (/api/hubs).
7144
- route(/^\/hubs$/, async () => {
7144
+ route(/^\/hubs$/, (params) => hubsPage(params.focus));
7145
+ route(/^\/hub$/, (params) => hubsPage(params.name || "personal")); // a link to one hub: Settings › Hubs, at that hub
7146
+
7147
+ // Settings › Hubs (docs/profiles.md): every hub this computer sends to, Personal's too, each the same: how sending goes,
7148
+ // then its projects (join one with a folder here, remove a folder, leave, rejoin) and what this computer shares with it.
7149
+ // Then adding a hub. Only from the computer itself (/api/hubs). `focus`: a hub's name, scrolled to.
7150
+ async function hubsPage(focus) {
7145
7151
  const head = h("div", { class: "page-head" }, titled("gateway", h("h1", null, t("Hubs")),
7146
7152
  h("div", { class: "sub" }, t("Where this computer's knowledge goes: Personal's hub, and a hub for each group you connect to one."))));
7147
7153
  let hb;
7148
7154
  try { hb = await api("/api/hubs"); } catch (e) {
7149
- return h("div", { class: "narrow-page" }, head, h("section", { class: "card empty" }, e.status === 403 ? notHere() : e.message));
7155
+ if (e.status !== 403 || (focus && focus.toLowerCase() !== "personal")) {
7156
+ return h("div", { class: "narrow-page" }, head, h("section", { class: "card empty" }, e.status === 403 ? notHere() : e.message));
7157
+ }
7158
+ // from another device: Personal's hub only, as Settings › Devices showed it
7159
+ const dv = await api("/api/devices");
7160
+ return h("div", { class: "narrow-page" }, head, dv.role === "spoke"
7161
+ ? h("div", { class: "grid" }, spokeHubCard(dv, t("Personal")), spokeProjectsCard(dv), spokeSharingCard(dv))
7162
+ : h("section", { class: "card empty" }, notHere()));
7150
7163
  }
7151
7164
  const draw = () => render();
7152
7165
  const others = hb.hubs.filter((x) => x.id !== "personal");
7153
- const cards = hb.hubs.map((x) => hubCard(x, hb.groups.filter((g) => (x.id === "personal" ? !g.hub : g.hub === x.label)), others.length, draw));
7166
+ const blocks = await Promise.all(hb.hubs.map(async (x) => {
7167
+ const key = x.id === "personal" ? "" : x.label;
7168
+ const card = hubCard(x, hb.groups.filter((g) => (x.id === "personal" ? !g.hub : g.hub === x.label)), others.length, draw);
7169
+ const dv = x.joined ? await api("/api/devices", key ? { hub: key } : null).catch(() => null) : null;
7170
+ return h("div", { class: "hub-block", "data-hub": (key || "personal").toLowerCase() }, card,
7171
+ dv?.role === "spoke" ? [spokeProjectsCard(dv), spokeSharingCard(dv)] : null);
7172
+ }));
7154
7173
  const waiting = hb.waiting.length ? h("section", { class: "card needs-you" },
7155
7174
  cardHead(t("Waiting for you"), { iconName: "flame", hint: tn(hb.waiting.length, "{n} folder waits for a hub", "{n} folders wait for a hub") }),
7156
7175
  h("p", { class: "muted" }, t("Recorded here, but no hub gets them and no agent sees them until you choose.")),
7157
7176
  h("ul", { class: "hub-list" }, hb.waiting.map((w) => waitingRow(w, others, draw)))) : null;
7177
+ const want = (focus || "").toLowerCase();
7178
+ const target = want ? blocks.find((b) => b.dataset.hub === want) : null;
7179
+ if (target) setTimeout(() => target.scrollIntoView({ block: "start" }), 0);
7158
7180
  return h("div", { class: "narrow-page" }, head,
7159
7181
  hb.error ? h("section", { class: "card", role: "alert" }, h("p", { class: "warn-line" }, hb.error)) : null,
7160
- h("div", { class: "grid" }, waiting, ...cards, addHubCard(draw)));
7161
- });
7162
-
7163
- // One hub's page (Settings › Hubs › a hub): the same for every hub, Personal's or another. How sending goes, the hub's
7164
- // projects this computer's folders go to (join one, add or remove a folder, leave, rejoin) and what it shares.
7165
- route(/^\/hub$/, async (params) => {
7166
- const key = params.name && params.name.toLowerCase() !== "personal" ? params.name : "";
7167
- const dv = await api("/api/devices", key ? { hub: key } : null);
7168
- const name = key || t("Personal");
7169
- const head = h("div", { class: "page-head" }, titled("gateway", h("h1", null, name),
7170
- h("div", { class: "sub" }, h("a", { href: "#/hubs" }, t("Hubs")), " › ", key ? t("A hub for the groups you connect to it.")
7171
- : t("Personal's hub: everything no other hub's groups hold."))));
7172
- if (dv.role !== "spoke") {
7173
- return h("div", { class: "narrow-page" }, head, h("section", { class: "card empty" }, key
7174
- ? t("{name} hasn't joined a hub yet: join it on Settings › Hubs.", { name })
7175
- : t("Personal hasn't joined a hub. Joining one shares what you learn with your team: ask its admin for an invite.")));
7176
- }
7177
- return h("div", { class: "narrow-page" }, head,
7178
- h("div", { class: "grid" }, spokeHubCard(dv, t("Sending")), spokeProjectsCard(dv), spokeSharingCard(dv)));
7179
- });
7182
+ h("div", { class: "grid hubs-grid" }, waiting, ...blocks, addHubCard(draw)));
7183
+ }
7180
7184
 
7181
7185
  // One hub on Settings › Hubs. `groups`: the groups it gets (Personal's: those connected to no other hub)
7182
7186
  function hubCard(x, groups, otherCount, draw) {
@@ -7225,7 +7229,6 @@ function hubCard(x, groups, otherCount, draw) {
7225
7229
  !x.joined && !personal ? joinHubForm(x.label, draw) : null,
7226
7230
  !x.joined && personal ? h("p", { class: "muted hl-note" }, t("Personal hasn't joined a hub. Joining one shares what you learn with your team: ask its admin for an invite.")) : null,
7227
7231
  h("div", { class: "hl-actions" }, shareNow, x.joined ? hubDashboardLink(x.hub, "btn small", personal ? "" : x.label) : null,
7228
- x.joined ? h("a", { class: "btn small", href: `#/hub?name=${encodeURIComponent(key)}` }, t("Projects and sharing")) : null,
7229
7232
  h("span", { class: "grow" }), leave, remove));
7230
7233
  }
7231
7234
  function joinHubForm(label, draw) {
@@ -2711,14 +2711,9 @@ window.INTERLATCH_JA = {
2711
2711
  "The hub turned this computer's token away. Ask its admin for a new invite, then run: {command}": "ハブがこのコンピューターのトークンを受け付けなくなりました。管理者に新しい招待を頼み、次を実行してください:{command}",
2712
2712
  "where each group's knowledge goes": "グループごとのナレッジの送り先",
2713
2713
  "Where this computer's knowledge goes: Personal's hub, and a hub for each group you connect to one.": "このコンピューターのナレッジの送り先:Personal のハブと、グループをつないだそれぞれのハブ。",
2714
- "A hub for the groups you connect to it.": "つないだグループのためのハブ。",
2715
2714
  "Every folder its groups hold, including ones in no project on the hub: each becomes a project of its own there.": "グループに入っているすべてのフォルダー。ハブのどのプロジェクトにも入っていないものは、ハブでそれぞれ別のプロジェクトになります。",
2716
2715
  "Join a hub to share what you learn with a team, or send a group of projects to a hub of its own: Settings › Hubs.": "ハブに参加すると、学んだことをチームと共有できます。プロジェクトのグループを専用のハブに送ることもできます:設定 › ハブ。",
2717
- "Projects and sharing": "プロジェクトと共有",
2718
2716
  "Records and analyzes its own sessions, and shares what it learned with its hubs.": "自分のセッションを記録・分析し、学んだことをハブと共有します。",
2719
- "Sending": "送信",
2720
2717
  "Sends its sessions to its hub, which records and analyzes them.": "セッションをハブに送り、ハブが記録・分析します。",
2721
- "{name} hasn't joined a hub yet: join it on Settings › Hubs.": "{name} はまだハブに参加していません。設定 › ハブで参加してください。",
2722
2718
  "Personal hasn't joined a hub. Joining one shares what you learn with your team: ask its admin for an invite.": "Personal はハブに参加していません。参加すると学んだことをチームと共有できます。ハブの管理者に招待を頼んでください。",
2723
- "Personal's hub: everything no other hub's groups hold.": "Personal のハブ:ほかのハブのグループに入っていないものすべて。",
2724
2719
  };
@@ -1,4 +0,0 @@
1
- - **Every hub has the same page.** Settings › Hubs lists each hub, Personal's too, and each one opens a page of its own
2
- with how sending goes, **Projects on the hub** (join a project with a folder here, add or remove a folder, leave or
3
- rejoin) and what this computer shares with it. Settings › Devices is about this computer and your phone again
4
- ([Several hubs on one computer](docs/profiles.md)).
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes