interlatch 0.28.4__tar.gz → 0.28.6__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.6}/CHANGELOG.md +12 -0
  2. {interlatch-0.28.4 → interlatch-0.28.6}/PKG-INFO +1 -1
  3. interlatch-0.28.6/changelog.d/hubs-tabs.md +2 -0
  4. {interlatch-0.28.4 → interlatch-0.28.6}/docs/devices.md +7 -6
  5. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/devices.md +8 -8
  6. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/join-a-hub.md +3 -3
  7. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/profiles.md +1 -1
  8. {interlatch-0.28.4 → interlatch-0.28.6}/docs/join-a-hub.md +5 -5
  9. {interlatch-0.28.4 → interlatch-0.28.6}/docs/profiles.md +3 -3
  10. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/app.css +44 -0
  11. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/app.js +99 -113
  12. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/ja.js +8 -18
  13. interlatch-0.28.4/changelog.d/hub-pages.md +0 -4
  14. {interlatch-0.28.4 → interlatch-0.28.6}/.github/dependabot.yml +0 -0
  15. {interlatch-0.28.4 → interlatch-0.28.6}/.github/windows-ja-qa/driver.ps1 +0 -0
  16. {interlatch-0.28.4 → interlatch-0.28.6}/.github/windows-ja-qa/ja_check.py +0 -0
  17. {interlatch-0.28.4 → interlatch-0.28.6}/.github/windows-ja-qa/report.py +0 -0
  18. {interlatch-0.28.4 → interlatch-0.28.6}/.github/windows-ja-qa/shots.py +0 -0
  19. {interlatch-0.28.4 → interlatch-0.28.6}/.github/windows-ja-qa/user.ps1 +0 -0
  20. {interlatch-0.28.4 → interlatch-0.28.6}/.github/workflows/changelog.yml +0 -0
  21. {interlatch-0.28.4 → interlatch-0.28.6}/.github/workflows/ci.yml +0 -0
  22. {interlatch-0.28.4 → interlatch-0.28.6}/.github/workflows/docs.yml +0 -0
  23. {interlatch-0.28.4 → interlatch-0.28.6}/.github/workflows/release.yml +0 -0
  24. {interlatch-0.28.4 → interlatch-0.28.6}/.github/workflows/windows-ja-qa.yml +0 -0
  25. {interlatch-0.28.4 → interlatch-0.28.6}/.gitignore +0 -0
  26. {interlatch-0.28.4 → interlatch-0.28.6}/.pre-commit-config.yaml +0 -0
  27. {interlatch-0.28.4 → interlatch-0.28.6}/.python-version +0 -0
  28. {interlatch-0.28.4 → interlatch-0.28.6}/CONTRIBUTING.md +0 -0
  29. {interlatch-0.28.4 → interlatch-0.28.6}/LICENSE +0 -0
  30. {interlatch-0.28.4 → interlatch-0.28.6}/README.ja.md +0 -0
  31. {interlatch-0.28.4 → interlatch-0.28.6}/README.md +0 -0
  32. {interlatch-0.28.4 → interlatch-0.28.6}/ROADMAP.ja.md +0 -0
  33. {interlatch-0.28.4 → interlatch-0.28.6}/ROADMAP.md +0 -0
  34. {interlatch-0.28.4 → interlatch-0.28.6}/SECURITY.md +0 -0
  35. {interlatch-0.28.4 → interlatch-0.28.6}/careers/README.md +0 -0
  36. {interlatch-0.28.4 → interlatch-0.28.6}/careers/boards.json +0 -0
  37. {interlatch-0.28.4 → interlatch-0.28.6}/careers/pipeline.py +0 -0
  38. {interlatch-0.28.4 → interlatch-0.28.6}/changelog.d/README.md +0 -0
  39. {interlatch-0.28.4 → interlatch-0.28.6}/dev.sh +0 -0
  40. {interlatch-0.28.4 → interlatch-0.28.6}/docker/.dockerignore +0 -0
  41. {interlatch-0.28.4 → interlatch-0.28.6}/docker/.env.example +0 -0
  42. {interlatch-0.28.4 → interlatch-0.28.6}/docker/Caddyfile +0 -0
  43. {interlatch-0.28.4 → interlatch-0.28.6}/docker/Dockerfile +0 -0
  44. {interlatch-0.28.4 → interlatch-0.28.6}/docker/compose.yaml +0 -0
  45. {interlatch-0.28.4 → interlatch-0.28.6}/docker/wheels/.gitignore +0 -0
  46. {interlatch-0.28.4 → interlatch-0.28.6}/docs/README.md +0 -0
  47. {interlatch-0.28.4 → interlatch-0.28.6}/docs/_site/hooks.py +0 -0
  48. {interlatch-0.28.4 → interlatch-0.28.6}/docs/analysis.md +0 -0
  49. {interlatch-0.28.4 → interlatch-0.28.6}/docs/cli.md +0 -0
  50. {interlatch-0.28.4 → interlatch-0.28.6}/docs/configuration.md +0 -0
  51. {interlatch-0.28.4 → interlatch-0.28.6}/docs/dashboard.md +0 -0
  52. {interlatch-0.28.4 → interlatch-0.28.6}/docs/demo/make_demo.py +0 -0
  53. {interlatch-0.28.4 → interlatch-0.28.6}/docs/demo/record_demo.py +0 -0
  54. {interlatch-0.28.4 → interlatch-0.28.6}/docs/design/innerlatch.md +0 -0
  55. {interlatch-0.28.4 → interlatch-0.28.6}/docs/design/ja/innerlatch.md +0 -0
  56. {interlatch-0.28.4 → interlatch-0.28.6}/docs/design/ja/learning.md +0 -0
  57. {interlatch-0.28.4 → interlatch-0.28.6}/docs/design/learning.md +0 -0
  58. {interlatch-0.28.4 → interlatch-0.28.6}/docs/development.md +0 -0
  59. {interlatch-0.28.4 → interlatch-0.28.6}/docs/diagrams/analysis.excalidraw.svg +0 -0
  60. {interlatch-0.28.4 → interlatch-0.28.6}/docs/diagrams/architecture.excalidraw.svg +0 -0
  61. {interlatch-0.28.4 → interlatch-0.28.6}/docs/docker.md +0 -0
  62. {interlatch-0.28.4 → interlatch-0.28.6}/docs/faq.md +0 -0
  63. {interlatch-0.28.4 → interlatch-0.28.6}/docs/images/demo.gif +0 -0
  64. {interlatch-0.28.4 → interlatch-0.28.6}/docs/images/home.png +0 -0
  65. {interlatch-0.28.4 → interlatch-0.28.6}/docs/images/map.png +0 -0
  66. {interlatch-0.28.4 → interlatch-0.28.6}/docs/images/palette.png +0 -0
  67. {interlatch-0.28.4 → interlatch-0.28.6}/docs/images/session.png +0 -0
  68. {interlatch-0.28.4 → interlatch-0.28.6}/docs/install.md +0 -0
  69. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/README.md +0 -0
  70. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/analysis.md +0 -0
  71. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/cli.md +0 -0
  72. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/configuration.md +0 -0
  73. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/dashboard.md +0 -0
  74. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/development.md +0 -0
  75. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/docker.md +0 -0
  76. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/faq.md +0 -0
  77. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/install.md +0 -0
  78. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/mcp.md +0 -0
  79. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/moving-from-chronicle.md +0 -0
  80. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/party.md +0 -0
  81. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/postgres.md +0 -0
  82. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/privacy.md +0 -0
  83. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/sources.md +0 -0
  84. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/suggestions.md +0 -0
  85. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/troubleshooting.md +0 -0
  86. {interlatch-0.28.4 → interlatch-0.28.6}/docs/ja/vscode.md +0 -0
  87. {interlatch-0.28.4 → interlatch-0.28.6}/docs/mcp.md +0 -0
  88. {interlatch-0.28.4 → interlatch-0.28.6}/docs/moving-from-chronicle.md +0 -0
  89. {interlatch-0.28.4 → interlatch-0.28.6}/docs/party.md +0 -0
  90. {interlatch-0.28.4 → interlatch-0.28.6}/docs/postgres.md +0 -0
  91. {interlatch-0.28.4 → interlatch-0.28.6}/docs/privacy.md +0 -0
  92. {interlatch-0.28.4 → interlatch-0.28.6}/docs/sources.md +0 -0
  93. {interlatch-0.28.4 → interlatch-0.28.6}/docs/suggestions.md +0 -0
  94. {interlatch-0.28.4 → interlatch-0.28.6}/docs/troubleshooting.md +0 -0
  95. {interlatch-0.28.4 → interlatch-0.28.6}/docs/vscode.md +0 -0
  96. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/.firebaserc +0 -0
  97. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/.gitignore +0 -0
  98. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/README.md +0 -0
  99. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/firebase.json +0 -0
  100. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/firestore.indexes.json +0 -0
  101. {interlatch-0.28.4 → interlatch-0.28.6}/leaderboard/firestore.rules +0 -0
  102. {interlatch-0.28.4 → interlatch-0.28.6}/mkdocs.yml +0 -0
  103. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/README.md +0 -0
  104. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/art.json +0 -0
  105. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/filing.html +0 -0
  106. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/loops.json +0 -0
  107. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/loops.py +0 -0
  108. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/members.js +0 -0
  109. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/render.html +0 -0
  110. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/render.py +0 -0
  111. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/scenes-more.js +0 -0
  112. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/icons3d/scenes.html +0 -0
  113. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/Chronicle.icns +0 -0
  114. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/Interlatch.spec +0 -0
  115. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/build.sh +0 -0
  116. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/entitlements.plist +0 -0
  117. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/icon-3d.webp +0 -0
  118. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/icon-blueprint-prompt.md +0 -0
  119. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/icon-blueprint.webp +0 -0
  120. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/icon.png +0 -0
  121. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/interlatch_app.py +0 -0
  122. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/macos/make_icon.py +0 -0
  123. {interlatch-0.28.4 → interlatch-0.28.6}/packaging/release.py +0 -0
  124. {interlatch-0.28.4 → interlatch-0.28.6}/pyproject.toml +0 -0
  125. {interlatch-0.28.4 → interlatch-0.28.6}/src/chronicle/__init__.py +0 -0
  126. {interlatch-0.28.4 → interlatch-0.28.6}/src/chronicle/__main__.py +0 -0
  127. {interlatch-0.28.4 → interlatch-0.28.6}/src/chronicle/windows.py +0 -0
  128. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/__init__.py +0 -0
  129. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/__main__.py +0 -0
  130. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/__init__.py +0 -0
  131. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/digest.py +0 -0
  132. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/language.py +0 -0
  133. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/queue.py +0 -0
  134. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/__init__.py +0 -0
  135. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/api.py +0 -0
  136. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/base.py +0 -0
  137. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/bob.py +0 -0
  138. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/claude.py +0 -0
  139. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/codex.py +0 -0
  140. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/factory.py +0 -0
  141. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/off.py +0 -0
  142. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/opencode.py +0 -0
  143. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/process.py +0 -0
  144. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/replies.py +0 -0
  145. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/runners/settings.py +0 -0
  146. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/screen.py +0 -0
  147. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/session.py +0 -0
  148. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/analysis/worker.py +0 -0
  149. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/application/__init__.py +0 -0
  150. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/application/profiles.py +0 -0
  151. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/application/records.py +0 -0
  152. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/application/search.py +0 -0
  153. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/application/workflows.py +0 -0
  154. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/artifacts/__init__.py +0 -0
  155. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/artifacts/files.py +0 -0
  156. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/artifacts/queries.py +0 -0
  157. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/cli.py +0 -0
  158. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/__init__.py +0 -0
  159. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/agents.py +0 -0
  160. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/artifact_records.py +0 -0
  161. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/config.py +0 -0
  162. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/diagrams.py +0 -0
  163. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/i18n/__init__.py +0 -0
  164. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/i18n/ja.py +0 -0
  165. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/machine.py +0 -0
  166. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/paths.py +0 -0
  167. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/pricing.py +0 -0
  168. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/process.py +0 -0
  169. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/profiles.py +0 -0
  170. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/redact.py +0 -0
  171. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/sessions.py +0 -0
  172. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/core/util.py +0 -0
  173. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/__init__.py +0 -0
  174. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/analyses.py +0 -0
  175. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/archive.py +0 -0
  176. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/chat_import.py +0 -0
  177. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/deletion.py +0 -0
  178. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/history.py +0 -0
  179. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/memory.py +0 -0
  180. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/persistence.py +0 -0
  181. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/report.py +0 -0
  182. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/ingestion/service.py +0 -0
  183. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/__init__.py +0 -0
  184. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/__init__.py +0 -0
  185. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/__init__.py +0 -0
  186. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/archive.py +0 -0
  187. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/hubs.py +0 -0
  188. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/knowledge.py +0 -0
  189. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/operations.py +0 -0
  190. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/recording.py +0 -0
  191. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/setup.py +0 -0
  192. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/commands/sharing.py +0 -0
  193. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/common.py +0 -0
  194. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/main.py +0 -0
  195. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/cli/parser.py +0 -0
  196. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/exports/__init__.py +0 -0
  197. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/exports/diagrams.py +0 -0
  198. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/exports/markdown.py +0 -0
  199. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/exports/sessions.py +0 -0
  200. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/exports/vault.py +0 -0
  201. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/mcp.py +0 -0
  202. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/__init__.py +0 -0
  203. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/__init__.py +0 -0
  204. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/artifacts.py +0 -0
  205. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/common.py +0 -0
  206. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/devices.py +0 -0
  207. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/hub_admin.py +0 -0
  208. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/hubs.py +0 -0
  209. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/knowledge.py +0 -0
  210. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/leaderboard.py +0 -0
  211. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/party.py +0 -0
  212. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/projects.py +0 -0
  213. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/sessions.py +0 -0
  214. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/settings.py +0 -0
  215. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/sources.py +0 -0
  216. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/status.py +0 -0
  217. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/storage.py +0 -0
  218. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/api/team.py +0 -0
  219. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/app.py +0 -0
  220. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/assets.py +0 -0
  221. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/context.py +0 -0
  222. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/handler.py +0 -0
  223. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/jobs.py +0 -0
  224. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/routes.py +0 -0
  225. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/interfaces/web/server.py +0 -0
  226. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/__init__.py +0 -0
  227. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/arena.py +0 -0
  228. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/bag.py +0 -0
  229. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/cases.py +0 -0
  230. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/formation.py +0 -0
  231. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/friction.py +0 -0
  232. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/glossary.py +0 -0
  233. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/group_graph.py +0 -0
  234. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/instructions.py +0 -0
  235. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/ladder.py +0 -0
  236. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/learning.py +0 -0
  237. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/market.json +0 -0
  238. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/party.py +0 -0
  239. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/reviews.py +0 -0
  240. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/roadmap.json +0 -0
  241. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/study.py +0 -0
  242. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/suggest.py +0 -0
  243. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/synthesize.py +0 -0
  244. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/knowledge/weekly.py +0 -0
  245. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/__init__.py +0 -0
  246. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/groups.py +0 -0
  247. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/hubgroups.py +0 -0
  248. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/labels.py +0 -0
  249. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/owners.py +0 -0
  250. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/progress.py +0 -0
  251. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/routing.py +0 -0
  252. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/scope.py +0 -0
  253. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/projects/systems.py +0 -0
  254. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/__init__.py +0 -0
  255. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/connectors.py +0 -0
  256. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/container.py +0 -0
  257. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/hooks.py +0 -0
  258. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/install.py +0 -0
  259. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/migrate.py +0 -0
  260. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/notify.py +0 -0
  261. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/platforms/__init__.py +0 -0
  262. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/platforms/desktop.py +0 -0
  263. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/platforms/menubar.py +0 -0
  264. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/platforms/windows.py +0 -0
  265. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/statusline.py +0 -0
  266. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/tailnet.py +0 -0
  267. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/runtime/update.py +0 -0
  268. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/__init__.py +0 -0
  269. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/access.py +0 -0
  270. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/arena.py +0 -0
  271. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/client.py +0 -0
  272. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/identity.py +0 -0
  273. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/leaderboard.py +0 -0
  274. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/market.py +0 -0
  275. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/membership.py +0 -0
  276. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/news.py +0 -0
  277. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/people.py +0 -0
  278. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/projects.py +0 -0
  279. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/protocol.py +0 -0
  280. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/pull.py +0 -0
  281. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/push.py +0 -0
  282. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sharing/receiver.py +0 -0
  283. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/__init__.py +0 -0
  284. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/antigravity.py +0 -0
  285. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/bob.py +0 -0
  286. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/builder.py +0 -0
  287. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/chatgpt.py +0 -0
  288. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/chats.py +0 -0
  289. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/claude/__init__.py +0 -0
  290. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/claude/export.py +0 -0
  291. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/claude/files.py +0 -0
  292. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/claude/parser.py +0 -0
  293. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/codex/__init__.py +0 -0
  294. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/codex/cloud.py +0 -0
  295. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/codex/parser.py +0 -0
  296. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/copilot.py +0 -0
  297. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/discovery.py +0 -0
  298. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/opencode.py +0 -0
  299. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/sources/prompts.py +0 -0
  300. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/__init__.py +0 -0
  301. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/fts.py +0 -0
  302. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/kv.py +0 -0
  303. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/migrations.py +0 -0
  304. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/mirror.py +0 -0
  305. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/postgres.py +0 -0
  306. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/schema.py +0 -0
  307. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/sqlite.py +0 -0
  308. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/storage/team.py +0 -0
  309. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/AGENT-ICONS.txt +0 -0
  310. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/PLEX-OFL.txt +0 -0
  311. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/adventure.js +0 -0
  312. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-antigravity.svg +0 -0
  313. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-bob.svg +0 -0
  314. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-chatgpt.svg +0 -0
  315. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-claude-ai.svg +0 -0
  316. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-claude.svg +0 -0
  317. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-codex.svg +0 -0
  318. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-copilot.svg +0 -0
  319. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/agent-opencode.svg +0 -0
  320. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-book.webp +0 -0
  321. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-camera.webp +0 -0
  322. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-chip.webp +0 -0
  323. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-clock.webp +0 -0
  324. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-cloud.webp +0 -0
  325. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-coins.webp +0 -0
  326. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-container.webp +0 -0
  327. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-dashboard.webp +0 -0
  328. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-dex.webp +0 -0
  329. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-document.webp +0 -0
  330. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-flag.webp +0 -0
  331. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-folder.webp +0 -0
  332. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-gateway.webp +0 -0
  333. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-gears.webp +0 -0
  334. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-glitch.webp +0 -0
  335. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-globe.webp +0 -0
  336. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-laptop.webp +0 -0
  337. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-log.webp +0 -0
  338. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-lumi.webp +0 -0
  339. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-magnifier.webp +0 -0
  340. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-pip.webp +0 -0
  341. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-plug.webp +0 -0
  342. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-rack.webp +0 -0
  343. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/art-tink.webp +0 -0
  344. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/battle.js +0 -0
  345. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/boot.js +0 -0
  346. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/favicon.png +0 -0
  347. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/field.js +0 -0
  348. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/i18n.js +0 -0
  349. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/icon-180.png +0 -0
  350. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/icon-192.png +0 -0
  351. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/icon-512.png +0 -0
  352. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/icon.png +0 -0
  353. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/index.html +0 -0
  354. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/innerlatch.css +0 -0
  355. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/innerlatch.js +0 -0
  356. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/learning.js +0 -0
  357. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/manifest.webmanifest +0 -0
  358. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/panel.css +0 -0
  359. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/panel.html +0 -0
  360. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/panel.js +0 -0
  361. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-mono-400.woff2 +0 -0
  362. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-mono-500.woff2 +0 -0
  363. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-mono-600.woff2 +0 -0
  364. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-sans-400.woff2 +0 -0
  365. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-sans-500.woff2 +0 -0
  366. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-sans-600.woff2 +0 -0
  367. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/plex-sans-700.woff2 +0 -0
  368. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/rough.js +0 -0
  369. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/scene.js +0 -0
  370. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/web/sprites.js +0 -0
  371. {interlatch-0.28.4 → interlatch-0.28.6}/src/interlatch/windows.py +0 -0
  372. {interlatch-0.28.4 → interlatch-0.28.6}/tests/antigravity_fixture.py +0 -0
  373. {interlatch-0.28.4 → interlatch-0.28.6}/tests/codex_fixture.py +0 -0
  374. {interlatch-0.28.4 → interlatch-0.28.6}/tests/conftest.py +0 -0
  375. {interlatch-0.28.4 → interlatch-0.28.6}/tests/copilot_fixture.py +0 -0
  376. {interlatch-0.28.4 → interlatch-0.28.6}/tests/friction_fixture.py +0 -0
  377. {interlatch-0.28.4 → interlatch-0.28.6}/tests/golden.py +0 -0
  378. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/cli.json +0 -0
  379. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/diagram.json +0 -0
  380. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/antigravity.json +0 -0
  381. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/bob.json +0 -0
  382. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/claude_code.json +0 -0
  383. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/codex.json +0 -0
  384. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/copilot.json +0 -0
  385. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/parsers/opencode.json +0 -0
  386. {interlatch-0.28.4 → interlatch-0.28.6}/tests/goldens/systems.json +0 -0
  387. {interlatch-0.28.4 → interlatch-0.28.6}/tests/hubs_fixture.py +0 -0
  388. {interlatch-0.28.4 → interlatch-0.28.6}/tests/opencode_fixture.py +0 -0
  389. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_adventure_web.py +0 -0
  390. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_analysis.py +0 -0
  391. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_antigravity.py +0 -0
  392. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_architecture.py +0 -0
  393. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_arena.py +0 -0
  394. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_artifacts.py +0 -0
  395. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_bag.py +0 -0
  396. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_battle_web.py +0 -0
  397. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_bob_analysis.py +0 -0
  398. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_boot_web.py +0 -0
  399. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_careers.py +0 -0
  400. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_case_files.py +0 -0
  401. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_cases.py +0 -0
  402. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_chat_import.py +0 -0
  403. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_cli_pins.py +0 -0
  404. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_codex.py +0 -0
  405. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_codex_analysis.py +0 -0
  406. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_codex_cloud.py +0 -0
  407. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_container.py +0 -0
  408. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_copilot_bob.py +0 -0
  409. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_dedicated_hub.py +0 -0
  410. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_dedupe.py +0 -0
  411. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_desktop.py +0 -0
  412. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_diagram.py +0 -0
  413. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_ee_boundary.py +0 -0
  414. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_field_web.py +0 -0
  415. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_fix_effect.py +0 -0
  416. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_formation.py +0 -0
  417. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_friction.py +0 -0
  418. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_game_mode.py +0 -0
  419. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_glossary.py +0 -0
  420. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_group_graph.py +0 -0
  421. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_group_sharing.py +0 -0
  422. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_guidance.py +0 -0
  423. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_home_agents.py +0 -0
  424. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub.py +0 -0
  425. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_accept.py +0 -0
  426. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_cookie.py +0 -0
  427. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_groups.py +0 -0
  428. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_inventory_scope.py +0 -0
  429. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_leave_join.py +0 -0
  430. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_news.py +0 -0
  431. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_payload_privacy.py +0 -0
  432. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_projects.py +0 -0
  433. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_projects_listed.py +0 -0
  434. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_purge.py +0 -0
  435. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_send_problems.py +0 -0
  436. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_hub_sharing_race.py +0 -0
  437. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_i18n_web.py +0 -0
  438. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_ingest.py +0 -0
  439. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_instructions.py +0 -0
  440. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_integration.py +0 -0
  441. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_ladder.py +0 -0
  442. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_language.py +0 -0
  443. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_leaderboard.py +0 -0
  444. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_learning_glance.py +0 -0
  445. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_learning_interests.py +0 -0
  446. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_learning_web.py +0 -0
  447. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_leave_project.py +0 -0
  448. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_legacy_package.py +0 -0
  449. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_map_goldens.py +0 -0
  450. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_market.py +0 -0
  451. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_menubar.py +0 -0
  452. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_migrate.py +0 -0
  453. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_mirror.py +0 -0
  454. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_notify.py +0 -0
  455. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_opencode.py +0 -0
  456. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_opencode_analysis.py +0 -0
  457. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_parser.py +0 -0
  458. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_parser_goldens.py +0 -0
  459. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_party.py +0 -0
  460. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_party_map.py +0 -0
  461. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_people.py +0 -0
  462. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_people_hub.py +0 -0
  463. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_people_web.py +0 -0
  464. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_profile_hubs.py +0 -0
  465. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_profile_scope.py +0 -0
  466. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_profiles.py +0 -0
  467. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_project_groups.py +0 -0
  468. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_project_progress.py +0 -0
  469. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_providers.py +0 -0
  470. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_queue.py +0 -0
  471. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_regressions.py +0 -0
  472. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_release.py +0 -0
  473. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_roadmap_catalog.py +0 -0
  474. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_route_matrix.py +0 -0
  475. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_screen.py +0 -0
  476. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_security.py +0 -0
  477. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_setup.py +0 -0
  478. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_statusline.py +0 -0
  479. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_study.py +0 -0
  480. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_suggest.py +0 -0
  481. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_suggest_cli.py +0 -0
  482. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_systems.py +0 -0
  483. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_team.py +0 -0
  484. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_team_home.py +0 -0
  485. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_update.py +0 -0
  486. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_weekly_reanalysis.py +0 -0
  487. {interlatch-0.28.4 → interlatch-0.28.6}/tests/test_windows.py +0 -0
  488. {interlatch-0.28.4 → interlatch-0.28.6}/tests/windows_smoke.py +0 -0
  489. {interlatch-0.28.4 → interlatch-0.28.6}/uv.lock +0 -0
  490. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/.vscodeignore +0 -0
  491. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/LICENSE +0 -0
  492. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/README.md +0 -0
  493. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/extension.js +0 -0
  494. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/media/icon.png +0 -0
  495. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/media/interlatch.svg +0 -0
  496. {interlatch-0.28.4 → interlatch-0.28.6}/vscode-extension/package.json +0 -0
@@ -3,6 +3,18 @@
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.5 (2026-10-20)
7
+
8
+ - **Settings › Hubs shows each hub's projects and sharing right under it**, on one page, instead of a page per hub
9
+ ([Several hubs on one computer](docs/profiles.md)).
10
+
11
+ ## 0.28.4 (2026-10-20)
12
+
13
+ - **Every hub has the same page.** Settings › Hubs lists each hub, Personal's too, and each one opens a page of its own
14
+ with how sending goes, **Projects on the hub** (join a project with a folder here, add or remove a folder, leave or
15
+ rejoin) and what this computer shares with it. Settings › Devices is about this computer and your phone again
16
+ ([Several hubs on one computer](docs/profiles.md)).
17
+
6
18
  ## 0.28.3 (2026-10-20)
7
19
 
8
20
  - **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.6
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
+ - **Hubs page, tidier:** **Settings › Hubs** has a tab for each hub and one to add a hub. A hub's tab fits on one
2
+ screen: how sending goes and its buttons on top, then its projects beside what this computer shares with it.
@@ -93,7 +93,7 @@ matching project of its own:
93
93
  already on the hub: they move with their knowledge, and both projects' knowledge bases are rebuilt. The more
94
94
  specific match wins, so a repository inside the folder whose git remote the hub knows still follows its remote. A
95
95
  folder inside a repository the hub files under another project is refused, because a repository belongs to one
96
- project. `interlatch hub folders` shows what goes where. **Settings › Hubs › (the hub) › Projects on the hub** does the same
96
+ project. `interlatch hub folders` shows what goes where. **Settings › Hubs › (the hub) › Projects** does the same
97
97
  from the dashboard: **Join a project** picks one of the hub's projects and a folder here. To take back a folder
98
98
  added by mistake, see [Leaving](#leaving). The hub's **Team › Computers** lists the folders each computer added.
99
99
  On this computer's **Projects** page and sidebar, the hub's projects that folders here go to come first, under
@@ -126,7 +126,7 @@ projects there from its next push, as if you had added each of their folders to
126
126
  above. A project recorded on another computer (such as `server:/root/app`) can't go from here.
127
127
 
128
128
  The project must already be on the hub (a member's computer can't make one), and the choice is made on this computer
129
- itself, not from another device. **Settings › Hubs › (the hub) › Projects on the hub** shows the group under that project, and
129
+ itself, not from another device. **Settings › Hubs › (the hub) › Projects** shows the group under that project, and
130
130
  the Projects page and sidebar list the group's projects under that project as well as in the group.
131
131
 
132
132
  ### What is sent
@@ -169,7 +169,7 @@ It does that only for sessions the hub files under one of its projects: those in
169
169
  computer, and its push counts them as "kept here". A hub that has never run a session in a repository itself doesn't
170
170
  know its remote, as with a hub in Docker or on a server, so add your folder for each project there. To share
171
171
  sessions from every folder, join with `--all-folders`, run `interlatch config set hub.all_folders true`, or choose
172
- **Every folder** under **Settings › Hubs › (the hub) › What this computer sends**.
172
+ **Every folder** under **Settings › Hubs › (the hub) › What this computer shares**.
173
173
 
174
174
  Prompts, shell commands, file paths, transcripts and lessons about you (global ones and preferences) never leave
175
175
  the computer. Sessions from GitHub Copilot, IBM Bob, Google Antigravity and OpenCode are shared too; imported chats are not.
@@ -242,7 +242,8 @@ unless the connection works, the password is never shown again, and only an admi
242
242
  kept read-only in its own database, under its own folder for that repository, where its MCP tools answer with them
243
243
  (marked as teammates') and the start-of-session notes list them under **From teammates' sessions**. Its dashboard
244
244
  shows them on project pages and in **All knowledge**, marked **from** the computers whose sessions stated them;
245
- the source **From teammates** there lists only them, and **Read them** in **Settings › Hubs** opens that list.
245
+ the source **From teammates** there lists only them, and the **teammates' lessons** count in **Settings › Hubs**
246
+ opens that list.
246
247
  Lessons it stated itself are not sent back. One it dismisses stays dismissed; one the team no longer has disappears.
247
248
  `interlatch hub status` and its **Settings › Hubs** show how many it holds; **Share now** there
248
249
  pushes at once.
@@ -257,7 +258,7 @@ Not yet: of the sessions the hub analyzes itself, only its own sessions in a pro
257
258
  ### Leaving
258
259
 
259
260
  A computer that shares knowledge can leave one of the hub's projects and stay in the others. In **Settings ›
260
- Devices › Projects on the hub**, each project has these buttons:
261
+ Hubs › (the hub) › Projects**, each project has these buttons:
261
262
 
262
263
  - **Leave**: this computer stops sharing its sessions there and stops getting the project's teammates' lessons.
263
264
  What it already shared stays on the hub, in the project, for the team. **Rejoin** undoes it. On the command line:
@@ -269,7 +270,7 @@ Devices › Projects on the hub**, each project has these buttons:
269
270
  command line: `interlatch hub remove-folder <folder>`. A computer that sends transcripts keeps them on the hub: the
270
271
  hub files them by their git remote or their own folder again.
271
272
 
272
- `interlatch hub leave`, or **Leave the hub…** in **Settings › Hubs**, makes the computer record and analyze its own
273
+ `interlatch hub leave`, or **Leave…** in **Settings › Hubs**, makes the computer record and analyze its own
273
274
  sessions again; the hub keeps what it was sent. It also removes the teammates' lessons that came from the hub, and
274
275
  puts aside what the computer had for that hub (its folders, the projects it left, and its groups shared there) in
275
276
  `~/.interlatch/hub-left/`, so a different hub joined later never gets any of it. Whether it shares knowledge only
@@ -90,7 +90,7 @@ interlatch hub join https://pc.tail1234.ts.net --token …
90
90
  両方のプロジェクトのナレッジベースが作り直されます。より具体的な指定が優先されるので、フォルダーの中にあってもハブが
91
91
  git リモートを知っているリポジトリはそのリモートに従います。ハブが別のプロジェクトに入れているリポジトリの中のフォルダーは追加できません
92
92
  (1 つのリポジトリは 1 つのプロジェクトに属します)。`interlatch hub folders` でどこに入るかを確認できます。
93
- ダッシュボードの **Settings › Hubs › (the hub) › Projects on the hub** でも同じことができ、**Join a project** でハブの
93
+ ダッシュボードの **Settings › Hubs › (the hub) › Projects** でも同じことができ、**Join a project** でハブの
94
94
  プロジェクトとこのコンピューターのフォルダーを選びます。間違えて追加したフォルダーを外すには[やめるとき](#やめるとき)を
95
95
  見てください。ハブの **Team › Computers** に、各コンピューターが追加したフォルダーが表示されます。
96
96
  このコンピューターの **Projects** ページとサイドバーでは、ここのフォルダーの送り先になっているハブのプロジェクトが
@@ -123,7 +123,7 @@ interlatch hub join https://pc.tail1234.ts.net --token …
123
123
  別のコンピューターで記録されたプロジェクト(`server:/root/app` など)は、ここからは送れません。
124
124
 
125
125
  プロジェクトはハブにすでにある必要があり(メンバーのコンピューターでは作れません)、選ぶのはこのコンピューター自身で、ほかの
126
- デバイスからはできません。**Settings › Hubs › (the hub) › Projects on the hub** ではそのプロジェクトの下にグループが表示され、グループの
126
+ デバイスからはできません。**Settings › Hubs › (the hub) › Projects** ではそのプロジェクトの下にグループが表示され、グループの
127
127
  プロジェクトは Projects ページとサイドバーで、グループの中に加えてそのプロジェクトの下にも並びます。
128
128
 
129
129
  ### 送られるもの
@@ -148,7 +148,7 @@ interlatch hub join https://pc.tail1234.ts.net --token … --share knowledge
148
148
  ```
149
149
 
150
150
  (参加済みのコンピューターでは `interlatch config set hub.share knowledge`、またはそのダッシュボードの **Settings › Hubs › (the hub) ›
151
- What this computer sends**)。そのコンピューターは単独の Interlatch と同じように
151
+ What this computer shares**)。そのコンピューターは単独の Interlatch と同じように
152
152
  動きます。自分のセッションを記録し、自分で分析し(自分の Claude Code か Codex のログイン、Bob API キー、または
153
153
  モデルプロバイダーで)、ダッシュボードと MCP ツールも更新され続けます。分析のたびにハブへ送るのは次のものだけです。
154
154
 
@@ -162,7 +162,7 @@ What this computer sends**)。そのコンピューターは単独の Interlat
162
162
  それ以外のフォルダーのセッションはコンピューターに残り、送信の結果には「kept here」として数えられます。Docker やサーバー上の
163
163
  ハブのように、ハブ自身がそのリポジトリでセッションを実行したことがなければ、ハブはその git リモートを知りません。その場合は
164
164
  プロジェクトごとに自分のフォルダーを追加してください。すべてのフォルダーのセッションを共有するには、`--all-folders` を付けて
165
- 参加するか、`interlatch config set hub.all_folders true` を実行するか、**Settings › Hubs › (the hub) › What this computer sends** で
165
+ 参加するか、`interlatch config set hub.all_folders true` を実行するか、**Settings › Hubs › (the hub) › What this computer shares** で
166
166
  **すべてのフォルダー** を選びます。
167
167
 
168
168
  プロンプト、シェルのコマンド、ファイルのパス、トランスクリプト、あなた自身についてのナレッジ(全体のものと好み)は
@@ -222,8 +222,8 @@ interlatch hub store # 接続し、テーブルを用
222
222
  15 分ごと)と、`interlatch push` または **Settings › Hubs** の **Share now** を使ったときです。自分のデータベースに読み取り専用で、そのリポジトリの自分のフォルダーの下に保存されます。MCP ツールはそれも
223
223
  (チームメイトのものと示して)答えに使い、セッション開始時のメモは **From teammates' sessions** の下に並べます。
224
224
  ダッシュボードでも、プロジェクトのページと **All knowledge** に、それを述べたセッションのコンピューター名を **from** で
225
- 示して表示します。そこで取得元に **From teammates** を選ぶとそれだけが並び、**Settings › Hubs** の **Read them** で
226
- その一覧が開きます。自分が述べたナレッジは返ってきません。却下したものは却下されたまま残り、チームから消えたものは消えます。持っている数は
225
+ 示して表示します。そこで取得元に **From teammates** を選ぶとそれだけが並び、**Settings › Hubs** の **teammates' lessons**
226
+ の数を押すとその一覧が開きます。自分が述べたナレッジは返ってきません。却下したものは却下されたまま残り、チームから消えたものは消えます。持っている数は
227
227
  `interlatch hub status` とそのコンピューターの **Settings › Hubs** で分かり、そこの **Share now** ですぐに
228
228
  プッシュできます。
229
229
  - **データベースにつなぐのはハブだけです。** 各コンピューターはそのアドレスもパスワードも知らないので、ハブだけが届く
@@ -237,7 +237,7 @@ interlatch hub store # 接続し、テーブルを用
237
237
  ### やめるとき
238
238
 
239
239
  ナレッジを共有するコンピューターは、ハブのプロジェクトのうち一つから抜けて、ほかには残れます。**Settings › Hubs › (the hub) ›
240
- Projects on the hub** で、プロジェクトごとに次のボタンがあります。
240
+ Projects** で、プロジェクトごとに次のボタンがあります。
241
241
 
242
242
  - **Leave**:このコンピューターはそこへのセッションの共有と、そのプロジェクトのチームメイトのナレッジの受け取りを
243
243
  やめます。すでに共有したものはチームのためにハブのそのプロジェクトに残ります。**Rejoin** で元に戻せます。コマンドでは
@@ -249,7 +249,7 @@ Projects on the hub** で、プロジェクトごとに次のボタンがあり
249
249
  `interlatch hub remove-folder <folder>` です。トランスクリプトを送るコンピューターでは、ハブにトランスクリプトが残り、
250
250
  ハブは git リモートか元のフォルダーで振り分け直します。
251
251
 
252
- `interlatch hub leave`、または **Settings › Hubs** の **Leave the hub…** で、そのコンピューターは再び自分でセッションを
252
+ `interlatch hub leave`、または **Settings › Hubs** の **Leave…** で、そのコンピューターは再び自分でセッションを
253
253
  記録・分析します。ハブは受け取ったものを残します。そのハブから来たチームメイトのナレッジも削除し、そのハブのための設定
254
254
  (フォルダー、抜けたプロジェクト、そこに共有したグループ)は `~/.interlatch/hub-left/` に保存するので、
255
255
  あとで参加するほかのハブには渡りません。ナレッジだけを共有するかどうか(`[hub] share`)はそのままです。再び参加するには新しい招待が必要です。同じハブにもう一度参加すると、それらを
@@ -69,7 +69,7 @@ interlatch hub add-folder ~/code/website --project Website
69
69
  これで、そこで分析済みのものが送られます。ハブがすでに知っている git リポジトリのクローンは、この手順がなくても
70
70
  そのプロジェクトに入りますが、実行しても問題ありません。
71
71
 
72
- ダッシュボードでも同じことができます:**Settings › Hubs › (the hub) › Projects on the hub › Join a project** で、
72
+ ダッシュボードでも同じことができます:**Settings › Hubs › (the hub) › Projects › Join a project** で、
73
73
  プロジェクトとあなたのフォルダーを選びます。
74
74
 
75
75
  ハブにそのプロジェクトがないと言われたり、**Join a project** が「一致するものはありません。」となったりしたら、
@@ -95,12 +95,12 @@ interlatch hub status
95
95
  (`interlatch install --inject-context`)、新しいセッションの "From teammates' sessions" にも並びます。
96
96
  - **あなたのダッシュボード**には、これまでどおりあなた自身のセッションが表示されます。チームメイトのナレッジは、
97
97
  プロジェクトのページと **All knowledge** に、どのコンピューターから来たかを示して並びます。**Settings › Hubs** の
98
- **Read them** でそれだけの一覧が開きます。
98
+ **teammates' lessons** の数を押すと、それだけの一覧が開きます。
99
99
 
100
100
  一つのプロジェクトへの共有をやめるには、**Settings › Hubs** でその横の **Leave** を選びます(または
101
101
  `interlatch hub leave --project <name>`)。そこで共有したものはハブに残ります。間違ったフォルダーを追加したときは、
102
102
  その横の **Remove** でフォルダーを外すと、あなたのコンピューターがそこから共有したものをハブが削除します。送るのを
103
- すべてやめるには **Leave the hub…** を選びます(または `interlatch hub leave`)。すでに送ったものはハブに残ります。
103
+ すべてやめるには **Leave…** を選びます(または `interlatch hub leave`)。すでに送ったものはハブに残ります。
104
104
  そのハブからのチームメイトのナレッジはあなたのコンピューターから削除され、そのハブのために追加したフォルダー、抜けた
105
105
  プロジェクト、共有したグループは `~/.interlatch/hub-left/` に保存されます。あとで参加するほかのハブには渡りません。
106
106
  同じハブにもう一度参加すると、`interlatch hub join` が元に戻すか尋ねます(`--restore` か `--no-restore` で尋ねずに
@@ -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
 
@@ -67,7 +67,7 @@ Use your folder for the project and the project's name from step 2. This sends w
67
67
  analyzed there. A clone of a git repository the hub already knows is filed under its project without this step,
68
68
  but running it does no harm.
69
69
 
70
- Your dashboard can do the same: **Settings › Hubs › (the hub) › Projects on the hub › Join a project**, then pick the project
70
+ Your dashboard can do the same: **Settings › Hubs › (the hub) › Projects › Join a project**, then pick the project
71
71
  and your folder.
72
72
 
73
73
  If the hub says it has no such project, or **Join a project** answers "Nothing matches.", you don't see that
@@ -92,13 +92,13 @@ dashboard, where you see your projects.
92
92
  through Interlatch's MCP tools, marked as teammates'. With start-of-session notes on (`interlatch install
93
93
  --inject-context`), new sessions also list them under "From teammates' sessions".
94
94
  - **Your own dashboard** keeps showing your own sessions, as before. Your teammates' lessons appear on its project
95
- pages and in **All knowledge**, marked with the computers they came from; **Read them** in **Settings › Hubs**
96
- lists only those.
95
+ pages and in **All knowledge**, marked with the computers they came from; the **teammates' lessons** count in
96
+ **Settings › Hubs** lists only those.
97
97
 
98
98
  To stop sharing to one project, choose **Leave** next to it in **Settings › Hubs** (or run `interlatch hub leave
99
99
  --project <name>`). What you shared there stays on the hub. Added the wrong folder? **Remove** next to it takes the
100
- folder back, and the hub deletes what your computer shared from it. To stop sending altogether, choose **Leave the
101
- hub…** (or run `interlatch hub leave`). What you already sent stays on the hub. Your teammates' lessons from it are
100
+ folder back, and the hub deletes what your computer shared from it. To stop sending altogether, choose **Leave…**
101
+ (or run `interlatch hub leave`). What you already sent stays on the hub. Your teammates' lessons from it are
102
102
  removed from your computer, and the folders, left projects and shared groups you had for that hub are put aside in
103
103
  `~/.interlatch/hub-left/`: another hub you join later never gets them. If you join the same hub again, `interlatch hub
104
104
  join` asks whether to bring them back (`--restore` or `--no-restore` answers without asking).
@@ -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). Each hub has a tab, the same for every hub: whether sending to it works, **Share now**, its dashboard,
42
+ then **Projects** (join one of its projects with a folder here, or leave one) beside 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,50 @@ 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: a tab per hub; each tab one panel, its projects beside what this computer shares with it */
477
+ .hubtabs { display: flex; gap: 6px; overflow-x: auto; padding: 2px 2px 0; margin-bottom: -1px; position: relative; z-index: 1; scrollbar-width: thin; }
478
+ .hubtab { flex: none; display: grid; gap: 1px; padding: 8px 14px 9px; min-width: 120px; border: 1px solid var(--border); border-bottom: 0;
479
+ border-radius: 8px 8px 0 0; background: var(--surface-2); color: var(--ink-2); }
480
+ .hubtab b { display: flex; align-items: center; gap: 7px; font-size: 13.5px; font-weight: 600; color: var(--ink); }
481
+ .hubtab > span { font-size: 11.5px; padding-left: 15px; max-width: 26ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
482
+ .hubtab:hover { text-decoration: none; color: var(--ink); background: var(--surface); }
483
+ .hubtab.on { background: var(--surface); box-shadow: inset 0 2px 0 var(--accent); }
484
+ .hubtab.add { align-content: center; min-width: 0; border-style: dashed; }
485
+ .hubtab.add b { color: var(--ink-2); font-weight: 500; }
486
+ .hubtab .sdot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex: none; }
487
+ .hubtab .sdot.good { background: var(--good); }
488
+ .hubtab .sdot.warning { background: var(--warning); }
489
+ .hubtab .sdot.critical { background: var(--critical); }
490
+ .hubtabs + .card { border-top-left-radius: 0; }
491
+ .hubp-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px 20px; flex-wrap: wrap; }
492
+ .hubp-id { display: flex; align-items: center; gap: 12px; min-width: 0; }
493
+ .hubp-name { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
494
+ .hubp-name h2 { font-size: 19px; letter-spacing: -0.01em; }
495
+ .hubp-host { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-top: 3px; color: var(--ink-2); font-size: 13px; }
496
+ .hubp-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
497
+ .hubp-actions a.btn { text-decoration: none; color: var(--ink); }
498
+ .hubp-facts { margin: 16px 0 0; padding: 12px 0 0; border-top: 1px solid var(--grid); }
499
+ a.fact:hover { text-decoration: none; }
500
+ a.fact:hover b { color: var(--accent-ink); }
501
+ .hubp-join { margin-top: 14px; }
502
+ .hubp-join > p { margin: 0 0 8px; font-size: 12.5px; }
503
+ .hubp-body { display: grid; grid-template-columns: minmax(0, 1fr) minmax(240px, 300px); gap: 0 28px; margin-top: 16px; padding-top: 4px; border-top: 1px solid var(--grid); }
504
+ .hubp-body.solo { grid-template-columns: minmax(0, 1fr); }
505
+ .hubp-side { display: grid; align-content: start; gap: 4px; padding-left: 24px; border-left: 1px solid var(--grid); }
506
+ .hubp-body.solo .hubp-side { padding-left: 0; border-left: 0; }
507
+ .hubp-sec { padding-top: 12px; min-width: 0; }
508
+ .hubp-sec-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
509
+ .hubp-sec-head h3 { font-size: 12px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
510
+ .hubp-sec > p { margin: 0; font-size: 12.5px; }
511
+ .hubp-set { display: grid; gap: 6px; justify-items: start; padding: 8px 0 10px; }
512
+ .hubp-set + .hubp-set { border-top: 1px solid var(--grid); padding-top: 12px; }
513
+ .hubp-set b { font-size: 13px; font-weight: 600; }
514
+ .hubp-set .muted { font-size: 12px; }
515
+ .hubp-projects .sp-list { margin-bottom: 4px; }
516
+ @media (max-width: 820px) {
517
+ .hubp-body { grid-template-columns: minmax(0, 1fr); }
518
+ .hubp-side { padding-left: 0; border-left: 0; border-top: 1px solid var(--grid); margin-top: 8px; }
519
+ }
476
520
  .cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
477
521
  .cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
478
522
  .cols-main { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }