interlatch 0.23.2__tar.gz → 0.23.4__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 (431) hide show
  1. {interlatch-0.23.2 → interlatch-0.23.4}/.pre-commit-config.yaml +1 -1
  2. {interlatch-0.23.2 → interlatch-0.23.4}/CHANGELOG.md +27 -0
  3. {interlatch-0.23.2 → interlatch-0.23.4}/CONTRIBUTING.md +2 -2
  4. {interlatch-0.23.2 → interlatch-0.23.4}/PKG-INFO +4 -3
  5. {interlatch-0.23.2 → interlatch-0.23.4}/README.ja.md +3 -2
  6. {interlatch-0.23.2 → interlatch-0.23.4}/README.md +3 -2
  7. interlatch-0.23.4/changelog.d/codex-cloud-error-log.md +2 -0
  8. interlatch-0.23.4/changelog.d/friction-order.md +2 -0
  9. interlatch-0.23.4/changelog.d/project-needs-you.md +4 -0
  10. interlatch-0.23.4/changelog.d/project-page.md +5 -0
  11. {interlatch-0.23.2 → interlatch-0.23.4}/dev.sh +1 -1
  12. {interlatch-0.23.2 → interlatch-0.23.4}/docs/README.md +1 -0
  13. {interlatch-0.23.2 → interlatch-0.23.4}/docs/analysis.md +2 -1
  14. {interlatch-0.23.2 → interlatch-0.23.4}/docs/dashboard.md +44 -3
  15. {interlatch-0.23.2 → interlatch-0.23.4}/docs/demo/make_demo.py +2 -2
  16. {interlatch-0.23.2 → interlatch-0.23.4}/docs/demo/record_demo.py +1 -1
  17. {interlatch-0.23.2 → interlatch-0.23.4}/docs/development.md +57 -10
  18. interlatch-0.23.4/docs/faq.md +124 -0
  19. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/README.md +1 -0
  20. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/dashboard.md +37 -1
  21. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/development.md +55 -8
  22. interlatch-0.23.4/docs/ja/faq.md +119 -0
  23. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/privacy.md +5 -2
  24. {interlatch-0.23.2 → interlatch-0.23.4}/docs/privacy.md +5 -2
  25. {interlatch-0.23.2 → interlatch-0.23.4}/docs/sources.md +3 -1
  26. {interlatch-0.23.2 → interlatch-0.23.4}/mkdocs.yml +2 -0
  27. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/README.md +1 -1
  28. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/render.py +2 -2
  29. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/Interlatch.spec +7 -7
  30. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/icon-blueprint-prompt.md +2 -2
  31. interlatch-0.23.2/packaging/macos/chronicle_app.py → interlatch-0.23.4/packaging/macos/interlatch_app.py +2 -2
  32. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/make_icon.py +1 -1
  33. {interlatch-0.23.2 → interlatch-0.23.4}/pyproject.toml +3 -3
  34. interlatch-0.23.4/src/chronicle/__init__.py +8 -0
  35. interlatch-0.23.4/src/chronicle/__main__.py +3 -0
  36. interlatch-0.23.4/src/chronicle/windows.py +11 -0
  37. interlatch-0.23.4/src/interlatch/__main__.py +3 -0
  38. interlatch-0.23.4/src/interlatch/analysis/__init__.py +2 -0
  39. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/analysis}/digest.py +3 -3
  40. interlatch-0.23.4/src/interlatch/analysis/language.py +22 -0
  41. interlatch-0.23.4/src/interlatch/analysis/queue.py +132 -0
  42. interlatch-0.23.4/src/interlatch/analysis/runners/__init__.py +2 -0
  43. interlatch-0.23.2/src/chronicle/providers.py → interlatch-0.23.4/src/interlatch/analysis/runners/api.py +15 -134
  44. interlatch-0.23.4/src/interlatch/analysis/runners/base.py +148 -0
  45. interlatch-0.23.4/src/interlatch/analysis/runners/bob.py +121 -0
  46. interlatch-0.23.4/src/interlatch/analysis/runners/claude.py +89 -0
  47. interlatch-0.23.4/src/interlatch/analysis/runners/codex.py +127 -0
  48. interlatch-0.23.4/src/interlatch/analysis/runners/factory.py +25 -0
  49. interlatch-0.23.4/src/interlatch/analysis/runners/process.py +67 -0
  50. interlatch-0.23.4/src/interlatch/analysis/runners/replies.py +38 -0
  51. interlatch-0.23.4/src/interlatch/analysis/runners/settings.py +131 -0
  52. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/analysis}/screen.py +7 -5
  53. interlatch-0.23.2/src/chronicle/analyze.py → interlatch-0.23.4/src/interlatch/analysis/session.py +12 -10
  54. interlatch-0.23.4/src/interlatch/analysis/worker.py +116 -0
  55. interlatch-0.23.4/src/interlatch/application/__init__.py +2 -0
  56. interlatch-0.23.4/src/interlatch/application/records.py +54 -0
  57. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/application}/search.py +6 -6
  58. interlatch-0.23.4/src/interlatch/application/workflows.py +180 -0
  59. interlatch-0.23.4/src/interlatch/artifacts/__init__.py +2 -0
  60. interlatch-0.23.4/src/interlatch/artifacts/files.py +123 -0
  61. interlatch-0.23.4/src/interlatch/artifacts/queries.py +183 -0
  62. interlatch-0.23.4/src/interlatch/cli.py +4 -0
  63. interlatch-0.23.4/src/interlatch/core/__init__.py +2 -0
  64. interlatch-0.23.2/src/chronicle/artifacts.py → interlatch-0.23.4/src/interlatch/core/artifact_records.py +5 -296
  65. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/core}/config.py +4 -4
  66. interlatch-0.23.4/src/interlatch/core/diagrams.py +124 -0
  67. interlatch-0.23.2/src/chronicle/i18n.py → interlatch-0.23.4/src/interlatch/core/i18n/__init__.py +1 -1
  68. interlatch-0.23.4/src/interlatch/core/machine.py +54 -0
  69. interlatch-0.23.4/src/interlatch/core/paths.py +86 -0
  70. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/core}/pricing.py +51 -0
  71. interlatch-0.23.4/src/interlatch/core/process.py +20 -0
  72. interlatch-0.23.4/src/interlatch/core/sessions.py +238 -0
  73. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/core}/util.py +0 -79
  74. interlatch-0.23.4/src/interlatch/ingestion/__init__.py +2 -0
  75. interlatch-0.23.4/src/interlatch/ingestion/analyses.py +75 -0
  76. interlatch-0.23.4/src/interlatch/ingestion/archive.py +176 -0
  77. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/ingestion}/chat_import.py +17 -37
  78. interlatch-0.23.4/src/interlatch/ingestion/deletion.py +76 -0
  79. interlatch-0.23.4/src/interlatch/ingestion/history.py +66 -0
  80. interlatch-0.23.4/src/interlatch/ingestion/memory.py +150 -0
  81. interlatch-0.23.4/src/interlatch/ingestion/persistence.py +274 -0
  82. interlatch-0.23.4/src/interlatch/ingestion/report.py +30 -0
  83. interlatch-0.23.4/src/interlatch/ingestion/service.py +485 -0
  84. interlatch-0.23.4/src/interlatch/interfaces/__init__.py +2 -0
  85. interlatch-0.23.4/src/interlatch/interfaces/cli/__init__.py +2 -0
  86. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/__init__.py +3 -0
  87. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/archive.py +311 -0
  88. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/knowledge.py +599 -0
  89. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/operations.py +259 -0
  90. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/recording.py +312 -0
  91. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/setup.py +679 -0
  92. interlatch-0.23.4/src/interlatch/interfaces/cli/commands/sharing.py +913 -0
  93. interlatch-0.23.4/src/interlatch/interfaces/cli/common.py +85 -0
  94. interlatch-0.23.4/src/interlatch/interfaces/cli/main.py +52 -0
  95. interlatch-0.23.4/src/interlatch/interfaces/cli/parser.py +45 -0
  96. interlatch-0.23.4/src/interlatch/interfaces/exports/__init__.py +1 -0
  97. interlatch-0.23.2/src/chronicle/diagram.py → interlatch-0.23.4/src/interlatch/interfaces/exports/diagrams.py +13 -129
  98. interlatch-0.23.2/src/chronicle/views.py → interlatch-0.23.4/src/interlatch/interfaces/exports/markdown.py +5 -85
  99. interlatch-0.23.2/src/chronicle/session_export.py → interlatch-0.23.4/src/interlatch/interfaces/exports/sessions.py +7 -6
  100. interlatch-0.23.2/src/chronicle/export_md.py → interlatch-0.23.4/src/interlatch/interfaces/exports/vault.py +9 -7
  101. interlatch-0.23.2/src/chronicle/mcp_server.py → interlatch-0.23.4/src/interlatch/interfaces/mcp.py +19 -17
  102. interlatch-0.23.4/src/interlatch/interfaces/web/__init__.py +3 -0
  103. interlatch-0.23.4/src/interlatch/interfaces/web/api/__init__.py +18 -0
  104. interlatch-0.23.4/src/interlatch/interfaces/web/api/artifacts.py +55 -0
  105. interlatch-0.23.4/src/interlatch/interfaces/web/api/common.py +141 -0
  106. interlatch-0.23.4/src/interlatch/interfaces/web/api/devices.py +235 -0
  107. interlatch-0.23.4/src/interlatch/interfaces/web/api/hub_admin.py +222 -0
  108. interlatch-0.23.4/src/interlatch/interfaces/web/api/knowledge.py +312 -0
  109. interlatch-0.23.4/src/interlatch/interfaces/web/api/leaderboard.py +80 -0
  110. interlatch-0.23.4/src/interlatch/interfaces/web/api/projects.py +305 -0
  111. interlatch-0.23.4/src/interlatch/interfaces/web/api/sessions.py +211 -0
  112. interlatch-0.23.4/src/interlatch/interfaces/web/api/settings.py +204 -0
  113. interlatch-0.23.4/src/interlatch/interfaces/web/api/sources.py +111 -0
  114. interlatch-0.23.4/src/interlatch/interfaces/web/api/status.py +330 -0
  115. interlatch-0.23.4/src/interlatch/interfaces/web/api/storage.py +116 -0
  116. interlatch-0.23.4/src/interlatch/interfaces/web/api/team.py +144 -0
  117. interlatch-0.23.4/src/interlatch/interfaces/web/app.py +80 -0
  118. interlatch-0.23.4/src/interlatch/interfaces/web/assets.py +37 -0
  119. interlatch-0.23.4/src/interlatch/interfaces/web/context.py +45 -0
  120. interlatch-0.23.4/src/interlatch/interfaces/web/handler.py +519 -0
  121. interlatch-0.23.4/src/interlatch/interfaces/web/jobs.py +51 -0
  122. interlatch-0.23.4/src/interlatch/interfaces/web/routes.py +372 -0
  123. interlatch-0.23.4/src/interlatch/interfaces/web/server.py +106 -0
  124. interlatch-0.23.4/src/interlatch/knowledge/__init__.py +2 -0
  125. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/cases.py +3 -3
  126. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/friction.py +7 -5
  127. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/glossary.py +12 -10
  128. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/instructions.py +8 -8
  129. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/ladder.py +2 -2
  130. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/learning.py +3 -3
  131. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/reviews.py +7 -5
  132. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/suggest.py +4 -4
  133. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/knowledge}/synthesize.py +8 -6
  134. interlatch-0.23.4/src/interlatch/projects/__init__.py +2 -0
  135. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/projects}/groups.py +4 -4
  136. interlatch-0.23.4/src/interlatch/projects/labels.py +17 -0
  137. interlatch-0.23.4/src/interlatch/projects/progress.py +315 -0
  138. interlatch-0.23.4/src/interlatch/projects/routing.py +201 -0
  139. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/projects}/systems.py +2 -6
  140. interlatch-0.23.4/src/interlatch/runtime/__init__.py +2 -0
  141. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/connectors.py +14 -36
  142. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/container.py +20 -18
  143. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/hooks.py +11 -22
  144. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/install.py +18 -17
  145. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/migrate.py +12 -10
  146. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/notify.py +3 -3
  147. interlatch-0.23.4/src/interlatch/runtime/platforms/__init__.py +2 -0
  148. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime/platforms}/desktop.py +21 -19
  149. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime/platforms}/menubar.py +21 -18
  150. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime/platforms}/windows.py +11 -9
  151. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/statusline.py +4 -4
  152. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/update.py +7 -7
  153. interlatch-0.23.4/src/interlatch/sharing/__init__.py +20 -0
  154. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/sharing}/access.py +2 -2
  155. interlatch-0.23.4/src/interlatch/sharing/client.py +400 -0
  156. interlatch-0.23.4/src/interlatch/sharing/identity.py +91 -0
  157. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/sharing}/leaderboard.py +5 -5
  158. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/sharing}/news.py +7 -7
  159. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/sharing}/people.py +5 -4
  160. interlatch-0.23.4/src/interlatch/sharing/projects.py +370 -0
  161. interlatch-0.23.4/src/interlatch/sharing/protocol.py +111 -0
  162. interlatch-0.23.4/src/interlatch/sharing/pull.py +162 -0
  163. interlatch-0.23.4/src/interlatch/sharing/push.py +320 -0
  164. interlatch-0.23.4/src/interlatch/sharing/receiver.py +620 -0
  165. interlatch-0.23.4/src/interlatch/sources/__init__.py +2 -0
  166. interlatch-0.23.2/src/chronicle/antigravity_parser.py → interlatch-0.23.4/src/interlatch/sources/antigravity.py +6 -6
  167. interlatch-0.23.2/src/chronicle/bob_parser.py → interlatch-0.23.4/src/interlatch/sources/bob.py +10 -10
  168. interlatch-0.23.4/src/interlatch/sources/builder.py +179 -0
  169. interlatch-0.23.2/src/chronicle/chatgpt_export.py → interlatch-0.23.4/src/interlatch/sources/chatgpt.py +4 -4
  170. interlatch-0.23.4/src/interlatch/sources/chats.py +33 -0
  171. interlatch-0.23.4/src/interlatch/sources/claude/__init__.py +1 -0
  172. interlatch-0.23.2/src/chronicle/claude_export.py → interlatch-0.23.4/src/interlatch/sources/claude/export.py +7 -7
  173. interlatch-0.23.4/src/interlatch/sources/claude/files.py +71 -0
  174. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/sources/claude}/parser.py +13 -245
  175. interlatch-0.23.4/src/interlatch/sources/codex/__init__.py +1 -0
  176. interlatch-0.23.2/src/chronicle/codex_cloud.py → interlatch-0.23.4/src/interlatch/sources/codex/cloud.py +10 -8
  177. interlatch-0.23.2/src/chronicle/codex_parser.py → interlatch-0.23.4/src/interlatch/sources/codex/parser.py +10 -21
  178. interlatch-0.23.2/src/chronicle/copilot_parser.py → interlatch-0.23.4/src/interlatch/sources/copilot.py +9 -179
  179. interlatch-0.23.4/src/interlatch/sources/discovery.py +39 -0
  180. interlatch-0.23.4/src/interlatch/sources/prompts.py +23 -0
  181. interlatch-0.23.4/src/interlatch/storage/__init__.py +2 -0
  182. interlatch-0.23.4/src/interlatch/storage/fts.py +21 -0
  183. interlatch-0.23.4/src/interlatch/storage/kv.py +17 -0
  184. interlatch-0.23.4/src/interlatch/storage/migrations.py +66 -0
  185. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/storage}/mirror.py +8 -7
  186. interlatch-0.23.2/src/chronicle/pg.py → interlatch-0.23.4/src/interlatch/storage/postgres.py +1 -1
  187. interlatch-0.23.2/src/chronicle/db.py → interlatch-0.23.4/src/interlatch/storage/schema.py +4 -115
  188. interlatch-0.23.4/src/interlatch/storage/sqlite.py +33 -0
  189. interlatch-0.23.2/src/chronicle/team_store.py → interlatch-0.23.4/src/interlatch/storage/team.py +6 -6
  190. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/app.css +84 -0
  191. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/app.js +294 -28
  192. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/ja.js +72 -1
  193. interlatch-0.23.4/src/interlatch/windows.py +10 -0
  194. {interlatch-0.23.2 → interlatch-0.23.4}/tests/conftest.py +5 -5
  195. {interlatch-0.23.2 → interlatch-0.23.4}/tests/friction_fixture.py +5 -5
  196. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/parsers/antigravity.json +4 -4
  197. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_analysis.py +31 -25
  198. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_antigravity.py +7 -7
  199. interlatch-0.23.4/tests/test_architecture.py +165 -0
  200. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_artifacts.py +34 -30
  201. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_bob_analysis.py +19 -16
  202. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_boot_web.py +1 -1
  203. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_case_files.py +10 -8
  204. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_cases.py +8 -7
  205. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_chat_import.py +10 -7
  206. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_cli_pins.py +4 -4
  207. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_codex.py +6 -6
  208. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_codex_analysis.py +14 -10
  209. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_codex_cloud.py +25 -6
  210. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_container.py +13 -10
  211. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_copilot_bob.py +11 -11
  212. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_dedicated_hub.py +1 -1
  213. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_dedupe.py +3 -3
  214. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_desktop.py +11 -11
  215. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_diagram.py +6 -4
  216. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_ee_boundary.py +5 -3
  217. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_friction.py +40 -1
  218. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_glossary.py +13 -12
  219. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_group_sharing.py +38 -31
  220. interlatch-0.23.4/tests/test_home_agents.py +60 -0
  221. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub.py +106 -94
  222. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_accept.py +7 -5
  223. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_news.py +17 -13
  224. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_projects.py +44 -36
  225. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_projects_listed.py +17 -15
  226. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_purge.py +24 -18
  227. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_hub_sharing_race.py +25 -19
  228. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_i18n_web.py +1 -1
  229. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_ingest.py +9 -7
  230. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_instructions.py +9 -9
  231. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_integration.py +43 -42
  232. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_ladder.py +7 -6
  233. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_language.py +40 -29
  234. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_leaderboard.py +8 -7
  235. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_learning_glance.py +5 -4
  236. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_learning_interests.py +7 -5
  237. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_learning_web.py +1 -1
  238. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_leave_project.py +42 -34
  239. interlatch-0.23.4/tests/test_legacy_package.py +39 -0
  240. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_map_goldens.py +5 -4
  241. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_menubar.py +44 -36
  242. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_migrate.py +21 -20
  243. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_mirror.py +8 -8
  244. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_notify.py +11 -11
  245. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_parser.py +19 -2
  246. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_parser_goldens.py +7 -6
  247. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_people.py +2 -2
  248. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_people_hub.py +59 -54
  249. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_people_web.py +12 -9
  250. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_project_groups.py +16 -14
  251. interlatch-0.23.4/tests/test_project_progress.py +249 -0
  252. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_providers.py +26 -22
  253. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_queue.py +15 -14
  254. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_regressions.py +10 -9
  255. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_release.py +3 -3
  256. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_route_matrix.py +43 -21
  257. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_screen.py +6 -5
  258. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_security.py +56 -49
  259. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_setup.py +26 -26
  260. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_statusline.py +10 -9
  261. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_suggest.py +5 -4
  262. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_suggest_cli.py +10 -9
  263. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_systems.py +4 -3
  264. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_team.py +37 -30
  265. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_team_home.py +6 -5
  266. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_update.py +14 -12
  267. {interlatch-0.23.2 → interlatch-0.23.4}/tests/test_windows.py +37 -31
  268. interlatch-0.23.2/changelog.d/agent-icons.md +0 -3
  269. interlatch-0.23.2/changelog.d/devices-admin-only.md +0 -3
  270. interlatch-0.23.2/changelog.d/windows-polish.md +0 -5
  271. interlatch-0.23.2/src/chronicle/__main__.py +0 -3
  272. interlatch-0.23.2/src/chronicle/cli.py +0 -3058
  273. interlatch-0.23.2/src/chronicle/hub.py +0 -2308
  274. interlatch-0.23.2/src/chronicle/ingest.py +0 -1190
  275. interlatch-0.23.2/src/chronicle/llm.py +0 -577
  276. interlatch-0.23.2/src/chronicle/server.py +0 -3151
  277. interlatch-0.23.2/src/chronicle/worker.py +0 -390
  278. {interlatch-0.23.2 → interlatch-0.23.4}/.github/dependabot.yml +0 -0
  279. {interlatch-0.23.2 → interlatch-0.23.4}/.github/workflows/changelog.yml +0 -0
  280. {interlatch-0.23.2 → interlatch-0.23.4}/.github/workflows/ci.yml +0 -0
  281. {interlatch-0.23.2 → interlatch-0.23.4}/.github/workflows/docs.yml +0 -0
  282. {interlatch-0.23.2 → interlatch-0.23.4}/.github/workflows/release.yml +0 -0
  283. {interlatch-0.23.2 → interlatch-0.23.4}/.gitignore +0 -0
  284. {interlatch-0.23.2 → interlatch-0.23.4}/.python-version +0 -0
  285. {interlatch-0.23.2 → interlatch-0.23.4}/LICENSE +0 -0
  286. {interlatch-0.23.2 → interlatch-0.23.4}/ROADMAP.ja.md +0 -0
  287. {interlatch-0.23.2 → interlatch-0.23.4}/ROADMAP.md +0 -0
  288. {interlatch-0.23.2 → interlatch-0.23.4}/SECURITY.md +0 -0
  289. {interlatch-0.23.2 → interlatch-0.23.4}/changelog.d/README.md +0 -0
  290. {interlatch-0.23.2 → interlatch-0.23.4}/docker/.dockerignore +0 -0
  291. {interlatch-0.23.2 → interlatch-0.23.4}/docker/.env.example +0 -0
  292. {interlatch-0.23.2 → interlatch-0.23.4}/docker/Caddyfile +0 -0
  293. {interlatch-0.23.2 → interlatch-0.23.4}/docker/Dockerfile +0 -0
  294. {interlatch-0.23.2 → interlatch-0.23.4}/docker/compose.yaml +0 -0
  295. {interlatch-0.23.2 → interlatch-0.23.4}/docker/wheels/.gitignore +0 -0
  296. {interlatch-0.23.2 → interlatch-0.23.4}/docs/_site/hooks.py +0 -0
  297. {interlatch-0.23.2 → interlatch-0.23.4}/docs/cli.md +0 -0
  298. {interlatch-0.23.2 → interlatch-0.23.4}/docs/configuration.md +0 -0
  299. {interlatch-0.23.2 → interlatch-0.23.4}/docs/design/ja/learning.md +0 -0
  300. {interlatch-0.23.2 → interlatch-0.23.4}/docs/design/learning.md +0 -0
  301. {interlatch-0.23.2 → interlatch-0.23.4}/docs/devices.md +0 -0
  302. {interlatch-0.23.2 → interlatch-0.23.4}/docs/diagrams/analysis.excalidraw.svg +0 -0
  303. {interlatch-0.23.2 → interlatch-0.23.4}/docs/diagrams/architecture.excalidraw.svg +0 -0
  304. {interlatch-0.23.2 → interlatch-0.23.4}/docs/docker.md +0 -0
  305. {interlatch-0.23.2 → interlatch-0.23.4}/docs/images/demo.gif +0 -0
  306. {interlatch-0.23.2 → interlatch-0.23.4}/docs/images/home.png +0 -0
  307. {interlatch-0.23.2 → interlatch-0.23.4}/docs/images/map.png +0 -0
  308. {interlatch-0.23.2 → interlatch-0.23.4}/docs/images/palette.png +0 -0
  309. {interlatch-0.23.2 → interlatch-0.23.4}/docs/images/session.png +0 -0
  310. {interlatch-0.23.2 → interlatch-0.23.4}/docs/install.md +0 -0
  311. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/analysis.md +0 -0
  312. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/cli.md +0 -0
  313. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/configuration.md +0 -0
  314. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/devices.md +0 -0
  315. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/docker.md +0 -0
  316. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/install.md +0 -0
  317. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/join-a-hub.md +0 -0
  318. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/mcp.md +0 -0
  319. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/moving-from-chronicle.md +0 -0
  320. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/postgres.md +0 -0
  321. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/sources.md +0 -0
  322. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/suggestions.md +0 -0
  323. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/troubleshooting.md +0 -0
  324. {interlatch-0.23.2 → interlatch-0.23.4}/docs/ja/vscode.md +0 -0
  325. {interlatch-0.23.2 → interlatch-0.23.4}/docs/join-a-hub.md +0 -0
  326. {interlatch-0.23.2 → interlatch-0.23.4}/docs/mcp.md +0 -0
  327. {interlatch-0.23.2 → interlatch-0.23.4}/docs/moving-from-chronicle.md +0 -0
  328. {interlatch-0.23.2 → interlatch-0.23.4}/docs/postgres.md +0 -0
  329. {interlatch-0.23.2 → interlatch-0.23.4}/docs/suggestions.md +0 -0
  330. {interlatch-0.23.2 → interlatch-0.23.4}/docs/troubleshooting.md +0 -0
  331. {interlatch-0.23.2 → interlatch-0.23.4}/docs/vscode.md +0 -0
  332. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/.firebaserc +0 -0
  333. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/.gitignore +0 -0
  334. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/README.md +0 -0
  335. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/firebase.json +0 -0
  336. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/firestore.indexes.json +0 -0
  337. {interlatch-0.23.2 → interlatch-0.23.4}/leaderboard/firestore.rules +0 -0
  338. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/art.json +0 -0
  339. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/filing.html +0 -0
  340. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/loops.json +0 -0
  341. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/loops.py +0 -0
  342. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/members.js +0 -0
  343. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/render.html +0 -0
  344. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/scenes-more.js +0 -0
  345. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/icons3d/scenes.html +0 -0
  346. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/Chronicle.icns +0 -0
  347. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/build.sh +0 -0
  348. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/entitlements.plist +0 -0
  349. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/icon-3d.webp +0 -0
  350. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/icon-blueprint.webp +0 -0
  351. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/macos/icon.png +0 -0
  352. {interlatch-0.23.2 → interlatch-0.23.4}/packaging/release.py +0 -0
  353. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/__init__.py +0 -0
  354. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/core}/agents.py +0 -0
  355. /interlatch-0.23.2/src/chronicle/i18n_ja.py → /interlatch-0.23.4/src/interlatch/core/i18n/ja.py +0 -0
  356. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/core}/redact.py +0 -0
  357. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch/runtime}/tailnet.py +0 -0
  358. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/AGENT-ICONS.txt +0 -0
  359. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/PLEX-OFL.txt +0 -0
  360. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-antigravity.svg +0 -0
  361. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-bob.svg +0 -0
  362. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-chatgpt.svg +0 -0
  363. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-claude-ai.svg +0 -0
  364. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-claude.svg +0 -0
  365. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-codex.svg +0 -0
  366. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/agent-copilot.svg +0 -0
  367. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-book.webp +0 -0
  368. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-camera.webp +0 -0
  369. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-chip.webp +0 -0
  370. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-clock.webp +0 -0
  371. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-cloud.webp +0 -0
  372. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-coins.webp +0 -0
  373. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-container.webp +0 -0
  374. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-dashboard.webp +0 -0
  375. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-dex.webp +0 -0
  376. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-document.webp +0 -0
  377. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-flag.webp +0 -0
  378. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-folder.webp +0 -0
  379. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-gateway.webp +0 -0
  380. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-gears.webp +0 -0
  381. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-glitch.webp +0 -0
  382. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-globe.webp +0 -0
  383. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-laptop.webp +0 -0
  384. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-log.webp +0 -0
  385. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-lumi.webp +0 -0
  386. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-magnifier.webp +0 -0
  387. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-pip.webp +0 -0
  388. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-plug.webp +0 -0
  389. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-rack.webp +0 -0
  390. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/art-tink.webp +0 -0
  391. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/boot.js +0 -0
  392. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/favicon.png +0 -0
  393. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/i18n.js +0 -0
  394. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/icon-180.png +0 -0
  395. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/icon-192.png +0 -0
  396. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/icon-512.png +0 -0
  397. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/icon.png +0 -0
  398. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/index.html +0 -0
  399. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/learning.js +0 -0
  400. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/manifest.webmanifest +0 -0
  401. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/panel.css +0 -0
  402. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/panel.html +0 -0
  403. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/panel.js +0 -0
  404. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-mono-400.woff2 +0 -0
  405. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-mono-500.woff2 +0 -0
  406. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-mono-600.woff2 +0 -0
  407. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-sans-400.woff2 +0 -0
  408. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-sans-500.woff2 +0 -0
  409. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-sans-600.woff2 +0 -0
  410. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/plex-sans-700.woff2 +0 -0
  411. {interlatch-0.23.2/src/chronicle → interlatch-0.23.4/src/interlatch}/web/rough.js +0 -0
  412. {interlatch-0.23.2 → interlatch-0.23.4}/tests/antigravity_fixture.py +0 -0
  413. {interlatch-0.23.2 → interlatch-0.23.4}/tests/codex_fixture.py +0 -0
  414. {interlatch-0.23.2 → interlatch-0.23.4}/tests/copilot_fixture.py +0 -0
  415. {interlatch-0.23.2 → interlatch-0.23.4}/tests/golden.py +0 -0
  416. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/cli.json +0 -0
  417. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/diagram.json +0 -0
  418. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/parsers/bob.json +0 -0
  419. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/parsers/claude_code.json +0 -0
  420. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/parsers/codex.json +0 -0
  421. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/parsers/copilot.json +0 -0
  422. {interlatch-0.23.2 → interlatch-0.23.4}/tests/goldens/systems.json +0 -0
  423. {interlatch-0.23.2 → interlatch-0.23.4}/tests/windows_smoke.py +0 -0
  424. {interlatch-0.23.2 → interlatch-0.23.4}/uv.lock +0 -0
  425. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/.vscodeignore +0 -0
  426. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/LICENSE +0 -0
  427. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/README.md +0 -0
  428. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/extension.js +0 -0
  429. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/media/icon.png +0 -0
  430. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/media/interlatch.svg +0 -0
  431. {interlatch-0.23.2 → interlatch-0.23.4}/vscode-extension/package.json +0 -0
@@ -45,4 +45,4 @@ repos:
45
45
  name: node --check (dashboard and VS Code extension JavaScript parses)
46
46
  language: system
47
47
  entry: node --check
48
- files: ^(src/chronicle/web|vscode-extension)/.*\.js$
48
+ files: ^(src/interlatch/web|vscode-extension)/.*\.js$
@@ -3,6 +3,33 @@
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.23.3 (2026-10-14)
7
+
8
+ - **`python -m interlatch`:** Interlatch's Python package is now `interlatch` too, so it runs as `python -m interlatch`.
9
+ Hooks, background tasks and MCP servers set up with `python -m chronicle` keep working, as does the `chronicle`
10
+ command.
11
+ - **Agents on Home:** a table with one row per coding agent: whether it is connected (or imported, or has issues),
12
+ when it was last used, and its sessions, active time, prompts, tool calls, lines changed, tokens, est. cost and
13
+ knowledge for the period, each with an inline bar. A dash marks what an agent doesn't record (a ChatGPT export has
14
+ no tokens); click a row to see only that agent, or its status to open it in **Sources**.
15
+ - **Gemini costs:** Google Antigravity sessions, and GitHub Copilot sessions on Gemini models, now show an estimated
16
+ cost at Google's Gemini API list prices instead of $0 ([Sources](docs/sources.md)). The next sync re-prices the
17
+ sessions already recorded. Analysis through an OpenAI-compatible provider on a Gemini model is priced the same way.
18
+
19
+ ## 0.23.2 (2026-10-14)
20
+
21
+ - **Hub computers stay with admins:** on a hub with people, a member or read-only person no longer receives the hub's
22
+ computers, its team store's database, host and status, or its allowed sign-ins; only admins (and the hub computer
23
+ itself) do.
24
+ - **Agent logos:** the Sessions list and its agent filter, Sources, MCP and the menu-bar panel mark each session and
25
+ source with its agent's own logo (Claude Code, Codex, GitHub Copilot, IBM Bob, Google Antigravity, claude.ai,
26
+ ChatGPT) instead of a colour dot.
27
+ - **Windows polish:** The dashboard can show an Interlatch icon in the notification area (turn on the menu-bar icon
28
+ under **Status › Recording**, or run `interlatch ui --menu-bar`): click it to open the dashboard, right-click for Sync
29
+ Now and Quit, which stops the dashboard until you next sign in. Release notifications show as Windows toasts. The VS
30
+ Code extension's file history and folder list, hub folders and projects, and a person's projects now match Windows
31
+ paths however they're spelled (`C:\work\app`, `c:/work/app`).
32
+
6
33
  ## 0.23.1 (2026-10-13)
7
34
 
8
35
  - **`agents-chronicle` is retired:** Interlatch is published only as `interlatch` now, and `agents-chronicle` is no
@@ -4,9 +4,9 @@ Thanks for helping. Interlatch is a small Python project with no build step for
4
4
 
5
5
  1. `uv sync && uv run pytest -q` runs the tests in about 40 seconds. They use a fake `claude` binary and synthetic
6
6
  Codex, Copilot, Bob and Antigravity stores, so they never touch your real data or spend tokens.
7
- 2. `uv run python -m chronicle ui --port 8799` serves the dashboard from your checkout. To work on it without your
7
+ 2. `uv run python -m interlatch ui --port 8799` serves the dashboard from your checkout. To work on it without your
8
8
  own sessions, build the demo home first (see [Demo data](docs/development.md#demo-data)).
9
- 3. `uv run --extra app python -m chronicle app` runs the macOS app from the checkout.
9
+ 3. `uv run --extra app python -m interlatch app` runs the macOS app from the checkout.
10
10
  4. `uvx pre-commit install` checks each commit the way CI does: secrets, `ruff check`, the lockfile, the workflows
11
11
  ([Pre-commit hooks](docs/development.md#pre-commit-hooks)).
12
12
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: interlatch
3
- Version: 0.23.2
3
+ Version: 0.23.4
4
4
  Summary: Shared memory for your coding agents: records every session (Claude Code, Codex, Copilot, Bob, Antigravity) 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/
@@ -201,7 +201,8 @@ team's hub also runs [in Docker](https://github.com/Chatixia-AI/interlatch/blob/
201
201
  **How do I remove it?** `interlatch uninstall` removes the hooks, background agents and MCP registrations and keeps
202
202
  your data; add `--purge` to delete the data too.
203
203
 
204
- Something not working? See [Troubleshooting](https://github.com/Chatixia-AI/interlatch/blob/main/docs/troubleshooting.md).
204
+ More questions, on privacy, cost, teams and updating, are answered in the [FAQ](https://github.com/Chatixia-AI/interlatch/blob/main/docs/faq.md). Something not
205
+ working? See [Troubleshooting](https://github.com/Chatixia-AI/interlatch/blob/main/docs/troubleshooting.md).
205
206
 
206
207
  ## Documentation
207
208
 
@@ -211,7 +212,7 @@ Something not working? See [Troubleshooting](https://github.com/Chatixia-AI/inte
211
212
  [Joining your team's hub](https://github.com/Chatixia-AI/interlatch/blob/main/docs/join-a-hub.md) · [A copy in Postgres](https://github.com/Chatixia-AI/interlatch/blob/main/docs/postgres.md) ·
212
213
  [What gets recorded and how analysis works](https://github.com/Chatixia-AI/interlatch/blob/main/docs/analysis.md) ·
213
214
  [Configuration](https://github.com/Chatixia-AI/interlatch/blob/main/docs/configuration.md) · [Data and privacy](https://github.com/Chatixia-AI/interlatch/blob/main/docs/privacy.md) ·
214
- [Troubleshooting](https://github.com/Chatixia-AI/interlatch/blob/main/docs/troubleshooting.md) · [Moving from Chronicle](https://github.com/Chatixia-AI/interlatch/blob/main/docs/moving-from-chronicle.md) ·
215
+ [FAQ](https://github.com/Chatixia-AI/interlatch/blob/main/docs/faq.md) · [Troubleshooting](https://github.com/Chatixia-AI/interlatch/blob/main/docs/troubleshooting.md) · [Moving from Chronicle](https://github.com/Chatixia-AI/interlatch/blob/main/docs/moving-from-chronicle.md) ·
215
216
  [Development](https://github.com/Chatixia-AI/interlatch/blob/main/docs/development.md)
216
217
 
217
218
  ## Contributing
@@ -164,7 +164,8 @@ Windows のコンピューターからのチームのハブへの参加はまだ
164
164
  **削除するには?** `interlatch uninstall` でフック、バックグラウンドのエージェント、MCP の登録を削除します(データは残ります)。
165
165
  データも消すには `--purge` を付けます。
166
166
 
167
- うまく動かないときは[トラブルシューティング](docs/ja/troubleshooting.md)を参照してください。
167
+ プライバシー、費用、チーム、アップデートなど、ほかの質問は[よくある質問](docs/ja/faq.md)にあります。うまく動かないときは
168
+ [トラブルシューティング](docs/ja/troubleshooting.md)を参照してください。
168
169
 
169
170
  ## ドキュメント
170
171
 
@@ -173,7 +174,7 @@ Windows のコンピューターからのチームのハブへの参加はまだ
173
174
  [スマートフォンとほかのコンピューター](docs/ja/devices.md) · [Docker でハブを動かす](docs/ja/docker.md) ·
174
175
  [チームのハブに参加する](docs/ja/join-a-hub.md) · [Postgres へのコピー](docs/ja/postgres.md) ·
175
176
  [記録内容と分析の仕組み](docs/ja/analysis.md) · [設定](docs/ja/configuration.md) ·
176
- [データとプライバシー](docs/ja/privacy.md) · [トラブルシューティング](docs/ja/troubleshooting.md) ·
177
+ [データとプライバシー](docs/ja/privacy.md) · [よくある質問](docs/ja/faq.md) · [トラブルシューティング](docs/ja/troubleshooting.md) ·
177
178
  [Chronicle からの移行](docs/ja/moving-from-chronicle.md) · [開発](docs/ja/development.md)
178
179
 
179
180
  ## コントリビュート
@@ -166,7 +166,8 @@ team's hub also runs [in Docker](docs/docker.md).
166
166
  **How do I remove it?** `interlatch uninstall` removes the hooks, background agents and MCP registrations and keeps
167
167
  your data; add `--purge` to delete the data too.
168
168
 
169
- Something not working? See [Troubleshooting](docs/troubleshooting.md).
169
+ More questions, on privacy, cost, teams and updating, are answered in the [FAQ](docs/faq.md). Something not
170
+ working? See [Troubleshooting](docs/troubleshooting.md).
170
171
 
171
172
  ## Documentation
172
173
 
@@ -176,7 +177,7 @@ Something not working? See [Troubleshooting](docs/troubleshooting.md).
176
177
  [Joining your team's hub](docs/join-a-hub.md) · [A copy in Postgres](docs/postgres.md) ·
177
178
  [What gets recorded and how analysis works](docs/analysis.md) ·
178
179
  [Configuration](docs/configuration.md) · [Data and privacy](docs/privacy.md) ·
179
- [Troubleshooting](docs/troubleshooting.md) · [Moving from Chronicle](docs/moving-from-chronicle.md) ·
180
+ [FAQ](docs/faq.md) · [Troubleshooting](docs/troubleshooting.md) · [Moving from Chronicle](docs/moving-from-chronicle.md) ·
180
181
  [Development](docs/development.md)
181
182
 
182
183
  ## Contributing
@@ -0,0 +1,2 @@
1
+ - **Codex Cloud:** listing Codex Cloud tasks no longer leaves an `error.log` from the Codex CLI in the folder Interlatch
2
+ was started from (a sync run in a project left one there).
@@ -0,0 +1,2 @@
1
+ - **What goes wrong:** the projects and agents a cause hit equally often are listed by name, in the same order every
2
+ time, instead of in a different order after each restart of the dashboard.
@@ -0,0 +1,4 @@
1
+ - **What needs you, and where the project is going:** a project's page now starts with **Needs you**: changes not
2
+ committed and commits on no remote, each with how long it has waited, and the decisions and open questions the last
3
+ sessions left to you (amber after two days). Beside it, the project's own `ROADMAP.md`, `BACKLOG.md` or `TODO.md`
4
+ by section, or else a backlog of its to-do items and open threads ([A project's page](docs/dashboard.md#a-projects-page)).
@@ -0,0 +1,5 @@
1
+ - **A project's page tells you where you left off:** it opens on the last session's goal and what it left open, the
2
+ sessions before it, the project folder's git state (branch, uncommitted changes, last commit, other worktrees) and
3
+ the work week by week with the pull requests and commits it made. The knowledge base, lessons, sessions, artifacts
4
+ and usage numbers move into tabs. On a hub with people it shows whose each session is
5
+ ([A project's page](docs/dashboard.md#a-projects-page)).
@@ -39,7 +39,7 @@ while [ $# -gt 0 ]; do
39
39
  shift
40
40
  done
41
41
 
42
- [ -f "$TREE/pyproject.toml" ] && [ -d "$TREE/src/chronicle" ] || { echo "dev.sh: $TREE is not an Interlatch checkout" >&2; exit 1; }
42
+ [ -f "$TREE/pyproject.toml" ] && { [ -d "$TREE/src/interlatch" ] || [ -d "$TREE/src/chronicle" ]; } || { echo "dev.sh: $TREE is not an Interlatch checkout" >&2; exit 1; }
43
43
 
44
44
  listening() { lsof -nP -iTCP:"$1" -sTCP:LISTEN >/dev/null 2>&1; }
45
45
 
@@ -18,6 +18,7 @@
18
18
  | [What gets recorded and how analysis works](analysis.md) | Session data, knowledge kinds, the analysis pipeline and its cost |
19
19
  | [Configuration](configuration.md) | Every `config.toml` setting |
20
20
  | [Data and privacy](privacy.md) | What is stored where, and what leaves your machine |
21
+ | [FAQ](faq.md) | Short answers to the questions people ask most: privacy, cost, agents, teams, updating |
21
22
  | [Troubleshooting](troubleshooting.md) | Known issues and common problems |
22
23
  | [Moving from Chronicle](moving-from-chronicle.md) | Interlatch was called Chronicle: what moves by itself when you update, and what keeps working |
23
24
  | [Development](development.md) | Tests, building the app, releasing, demo data, code layout |
@@ -198,7 +198,8 @@ interlatch config set analysis.backend openai
198
198
  `max_output_tokens`. Anthropic and Bedrock calls send `effort` and allow 32,000 output tokens by default.
199
199
 
200
200
  Cost: with a provider, the cost is what the API reports (OpenRouter) or an estimate from the token counts at
201
- Anthropic's or OpenAI's list prices (Anthropic, Bedrock, OpenAI); Azure, Ollama and other servers show tokens only. Otherwise,
201
+ Anthropic's, OpenAI's or Google's list prices (Anthropic, Bedrock, OpenAI, and Gemini models on an OpenAI-compatible
202
+ server); Azure, Ollama and other models show tokens only. Otherwise,
202
203
  analysis runs through your own Claude Code or Codex login, or your Bob API key (Bob reports what each analysis cost).
203
204
  With Claude, the reported cost is the API
204
205
  list-price equivalent: sessions averaged about $0.38 each with Sonnet (digests average ~150k characters), and
@@ -71,9 +71,11 @@ There is no overdue counter or required backlog. Changed lesson material receive
71
71
  in progress are excluded.
72
72
 
73
73
  Pages: Home (active-time headline with active days and longest run; stat tiles with sparklines and a per-day rate
74
- until a full prior period exists to compare against; daily chart with a 7-day average; outcome breakdown; activity
75
- calendar with streaks; busiest hour; projects, tools with failed calls, models and agents), a sortable, filterable
76
- session list, project cards with 12 weeks of activity (in [your own groups](#project-groups)), the [Systems map](#systems-map), session pages (headline figures, the summary and the knowledge
74
+ until a full prior period exists to compare against; an **Agents** table with each agent's status from Sources, when
75
+ it was last used and its numbers for the period as inline bars, a dash where an agent doesn't record a metric (a chat
76
+ export has no tokens or cost), and a click on a row filtering Home to that agent; daily chart with a 7-day average;
77
+ outcome breakdown; activity calendar with streaks; busiest hour; projects, tools with failed calls and models), a sortable, filterable
78
+ session list, project cards with 12 weeks of activity (in [your own groups](#project-groups)), [project pages](#a-projects-page), the [Systems map](#systems-map), session pages (headline figures, the summary and the knowledge
77
79
  it produced up top, then **Details**, where a session opens: goal, highlights, open threads, the knowledge items,
78
80
  context-window chart with compactions, tools, files, subagents, and the [artifacts](#artifacts) the session made; or
79
81
  **Transcript**, where a search result opens: the conversation with one-line tool calls that expand to their input and
@@ -94,6 +96,45 @@ there with the terms still marked. Glossary
94
96
  terms are underlined wherever they appear (transcripts, knowledge, summaries): hover for the definition, click for
95
97
  the entry. Every chart has a table view; light and dark themes.
96
98
 
99
+ ## A project's page
100
+
101
+ A project's page is for coming back to a project. Under its name: whether it is **Active** (a session in the last
102
+ week), **Quiet** (in the last month) or **Dormant**, when the last session was, and its sessions, active time, tokens
103
+ and estimated API cost. Below that, the overview from its knowledge base says what the project is.
104
+
105
+ **Overview** shows where things stand, read from your sessions and git, with nothing written by a model:
106
+
107
+ - **Needs you,** shown only when something waits:
108
+ - **Not saved in git yet:** tracked files changed but not committed, with the date of the oldest edit, and commits
109
+ on no remote branch, with the oldest one's date (none counted in a repository without remotes). New, untracked
110
+ files are only counted, since build output and scratch files stay there for good.
111
+ - **Decisions and open questions:** what the last three analyzed sessions left open that waits on a person (a
112
+ decision, an approval, an answer), picked by how the session's analysis worded it, so check it before acting.
113
+ - Anything waiting more than two days turns amber. Nothing turns red.
114
+ - **Roadmap:** when the folder, or its repository's root, has a `ROADMAP.md`, `BACKLOG.md`, `TODO.md` or `TODOS.md`
115
+ (there or in `docs/`, in any case): its first three `##` sections with their items (each top-level bullet by its
116
+ bold lead or first words, or else its `###` headings), how many checkboxes are open and done, and when the file was
117
+ last committed. Without one, **Backlog** lists the project's to-do items (**Done** dismisses one) and the knowledge
118
+ base's open threads, as of its last update.
119
+ - **Where you left off:** the last session's goal, how it ended and what it left open, then the four sessions before
120
+ it, each opening to its own goal and open threads. These are what each session left open when it ended: a later
121
+ session, or work you did outside one, may have dealt with them since.
122
+ - **The folder now:** the folder's git branch and how far it is from its upstream, how many changes aren't committed,
123
+ the last commit and the repository's other worktrees. It shows only in a browser on the computer the folder is on.
124
+ Git only reads: it takes no lock, and the repository's own hooks and fsmonitor don't run.
125
+ - **Week by week:** each week with sessions, newest first, with its sessions and their outcomes, the pull requests
126
+ they opened and the commits they made (each counted once), and the quiet weeks between marked.
127
+
128
+ The other tabs hold the rest: **Working here** (the knowledge base, its [architecture sketch](#architecture-sketch)
129
+ and the glossary), **Knowledge**, **Sessions**, **Artifacts** and **Usage** (the totals and the most edited files).
130
+ The tab you pick stays in the address, so a link or a reload opens it again.
131
+
132
+ The git rows and the roadmap file are read only in a browser on the computer the folder is on. On a hub with people,
133
+ the cards are **Needs attention** and **Where the team left off**, and each session shows whose it is. Pull requests come
134
+ from the transcripts computers send (`share = "everything"`), or from the links a session lists when a computer shares
135
+ knowledge; commits only from transcripts. Someone limited to some projects sees the sessions, not their pull requests,
136
+ as on a session's page.
137
+
97
138
  ## Project groups
98
139
 
99
140
  Put related projects under one heading, such as **Aktio** for every Aktio repository, on the Projects page and in
@@ -1,7 +1,7 @@
1
1
  """Build a demo Interlatch home from made-up sessions, for screenshots and trying the dashboard without your own data.
2
2
 
3
3
  uv run python docs/demo/make_demo.py /tmp/interlatch-demo
4
- INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m chronicle ui --port 8898 --open
4
+ INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m interlatch ui --port 8898 --open
5
5
 
6
6
  It writes synthetic Claude Code transcripts for a fictional developer (five projects, about six weeks), then runs the
7
7
  real pipeline over them: sync, analysis, knowledge bases, glossary and weekly reviews. The only stand-in is `claude`:
@@ -529,7 +529,7 @@ def main() -> None:
529
529
  for w in range(1, WEEKS_REVIEWED + 1):
530
530
  week = (now - timedelta(weeks=w)).strftime("%G-W%V")
531
531
  chronicle("review", week)
532
- print(f"\nDemo ready. Open it with:\n INTERLATCH_HOME={home} uv run python -m chronicle ui --port 8898 --open")
532
+ print(f"\nDemo ready. Open it with:\n INTERLATCH_HOME={home} uv run python -m interlatch ui --port 8898 --open")
533
533
 
534
534
 
535
535
  if __name__ == "__main__":
@@ -1,7 +1,7 @@
1
1
  """Record the README demo video: a scripted walk through the dashboard on the demo data.
2
2
 
3
3
  uv run python docs/demo/make_demo.py /tmp/interlatch-demo
4
- INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m chronicle ui --port 8898
4
+ INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m interlatch ui --port 8898
5
5
  uv run --with playwright python docs/demo/record_demo.py --port 8898
6
6
 
7
7
  It drives headless Chromium through Home, a session (a glossary hover, an expanded tool call), the ⌘K palette, the
@@ -116,19 +116,66 @@ Excalidraw VS Code extension (`pomdtr.excalidraw-editor`) or on excalidraw.com;
116
116
 
117
117
  ## Code layout
118
118
 
119
- `parser.py` (Claude transcript format), `codex_parser.py` (Codex rollouts), `copilot_parser.py` (Copilot agent
120
- sessions + VS Code chat logs), `bob_parser.py` (Bob tasks), `antigravity_parser.py` (Antigravity step logs), `agents.py` (agent names), `connectors.py` (Sources),
121
- `ingest.py` (archive + store), `digest.py` / `analyze.py` /
122
- `llm.py` (analysis), `synthesize.py` (knowledge bases), `diagram.py` (architecture sketch: layout, Excalidraw and
123
- Mermaid export), `artifacts.py` (what sessions made, and where each stands), `glossary.py`, `reviews.py`, `worker.py` (queue), `server.py` + `web/`
124
- (dashboard), `mcp_server.py`, `export_md.py`, `hooks.py` / `install.py`, `desktop.py` (macOS app), `cli.py`; `packaging/macos/` builds the app.
125
-
126
- The dashboard page runs under a Content-Security-Policy (`PAGE_CSP` in `server.py`) that allows scripts and styles
119
+ The code is the `interlatch` package in `src/interlatch/` (`src/chronicle/` only forwards `python -m chronicle`,
120
+ which installs from before the rename still run):
121
+
122
+ - `core/`: configuration, session records, paths, translations, agent names, pricing, redaction, this computer's
123
+ identity, and what counts as an artifact a session made
124
+ - `storage/`: the SQLite archive (schema, migrations, connections) and the optional Postgres stores
125
+ - `sources/`: where each agent keeps its files (`discovery.py`), a reader per agent (`claude/`, `codex/`, `copilot.py`, `bob.py`, `antigravity.py`) and per chat export
126
+ (`claude/export.py`, `chatgpt.py`)
127
+ - `artifacts/`: what sessions made, where each stands, and opening it
128
+ - `ingestion/`: syncing every source (`service.py`): the raw-file archive, storing parsed sessions, chat imports,
129
+ agent memory and history, forgetting
130
+ - `analysis/`: condensing a transcript (`digest.py`), asking a model for its lessons (`session.py`), screening
131
+ imported chats, the queue and the worker; `analysis/runners/` asks the model, through an agent's CLI or a
132
+ provider's API
133
+ - `knowledge/`: per-project knowledge bases (`synthesize.py`), the maturity ladder, glossaries, case files, learning
134
+ topics, friction, suggestions, instruction files, the weekly review
135
+ - `projects/`: folders that belong together, project names, which project another computer's folder belongs to
136
+ (`routing.py`), the systems map
137
+ - `sharing/`: a hub and the computers that join it: the protocol, tokens, the client and what it pushes and pulls,
138
+ the hub's receiver, projects on the hub, people and what each may see, the Team page's news, the leaderboard
139
+ - `application/`: what a worker run does from start to finish (`workflows.py`), session records and search, which
140
+ span the features
141
+ - `interfaces/`: the MCP server (`mcp.py`) and the files Interlatch exports (`exports/`: the Markdown vault, session
142
+ exports, Excalidraw diagrams)
143
+ - `runtime/`: Interlatch on this computer: installing it (hooks, MCP servers, background jobs), connecting agents
144
+ (`connectors.py`), the status line, moving from Chronicle, updates, notifications, the hub in a container;
145
+ `runtime/platforms/`: Windows (Task Scheduler, the notification area), the macOS app and its menu-bar icon
146
+ - `interfaces/cli/`: the command line: `parser.py` assembles the commands, and each module in `commands/` holds a
147
+ group of them (recording, archive, knowledge, setup, sharing, operations), each command's options beside its code;
148
+ `cli.py` at the top is the entry point the `interlatch` command runs
149
+ - `interfaces/web/`: the dashboard: `server.py` starts it, `handler.py` checks who asks, `routes.py` lists every route
150
+ with who may call it and what answers it, mostly a function in `api/`, where each page's reads and actions are
151
+ functions of a `Context` (the config, this request's connection, the jobs), one module per feature; `app.py` holds
152
+ what lives as long as the dashboard; `assets.py` serves the page from `web/`; `packaging/macos/` builds the app
153
+
154
+ Each layer imports only the ones below it: `core`, then `storage` and `sources`, then the features (`ingestion`,
155
+ `analysis`, `knowledge`, `projects`, `artifacts`, `sharing`), then `application`, then `interfaces`; `runtime` starts
156
+ the dashboard only from the modules that compose it. `tests/test_architecture.py` checks every import against this.
157
+
158
+ Where to add:
159
+
160
+ - **a source** (another coding agent or chat export): a reader in `sources/` that returns `ParsedSession`s
161
+ (`core/sessions.py`; `sources/builder.py` builds one for any agent that isn't Claude Code), where it keeps its files
162
+ in `sources/discovery.py`, its sync in `ingestion/service.py`, connecting it in `runtime/connectors.py`
163
+ - **an analysis backend**: a `Runner` in `analysis/runners/` (`base.py` is the contract), named in `factory.py`; a
164
+ model provider's API is a `Provider` in `analysis/runners/settings.py`
165
+ - **a dashboard endpoint**: a function of a `Context` in the feature's module in `interfaces/web/api/`, its route and
166
+ who may call it in `interfaces/web/routes.py`, and its row in `ROUTES` in `tests/test_route_matrix.py` (a route
167
+ without one fails the suite)
168
+ - **a command**: `add_<command>` and `cmd_<command>` in the fitting group in `interfaces/cli/commands/`, and the
169
+ command in `COMMANDS` in `interfaces/cli/parser.py`, whose order is `interlatch --help`'s; `tests/goldens/cli.json`
170
+ pins it (rerun with `UPDATE_GOLDENS=1`)
171
+ - **an MCP tool**: `TOOLS` in `interfaces/mcp.py`
172
+
173
+ The dashboard page runs under a Content-Security-Policy (`PAGE_CSP` in `interfaces/web/assets.py`) that allows scripts and styles
127
174
  from its own files only. Add no inline `<script>` or `on…=` attribute to `index.html`, and give `h()` a style as an
128
175
  object (`style: { "--h": "40px" }`), never a string: a string becomes a style attribute the policy refuses.
129
176
  `tests/test_security.py` checks both.
130
177
 
131
- `ee/` is Interlatch Enterprise: its own package (`chronicle_ee`) under the [Interlatch Enterprise License](../ee/LICENSE),
178
+ `ee/` is Interlatch Enterprise: its own package (`interlatch_ee`) under the [Interlatch Enterprise License](../ee/LICENSE),
132
179
  left out of the MIT wheel and sdist. The core never imports it; [ee/README.md](../ee/README.md) says what belongs there.
133
180
 
134
181
  ## Trying a change
@@ -155,7 +202,7 @@ come from it.
155
202
 
156
203
  ```bash
157
204
  uv run python docs/demo/make_demo.py /tmp/interlatch-demo
158
- INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m chronicle ui --port 8898 --open
205
+ INTERLATCH_HOME=/tmp/interlatch-demo/home uv run python -m interlatch ui --port 8898 --open
159
206
  ```
160
207
 
161
208
  The README's GIF and tour video come from it too. With that dashboard running, `docs/demo/record_demo.py` drives
@@ -0,0 +1,124 @@
1
+ # FAQ
2
+
3
+ [← Interlatch](../README.md) · [Docs index](README.md)
4
+
5
+ Short answers to the questions people ask most, each linking to the page with the details. Something not working?
6
+ See [Troubleshooting](troubleshooting.md).
7
+
8
+ ## Getting started
9
+
10
+ **What does Interlatch do that my agent's own memory doesn't?** An agent's memory (`CLAUDE.md`, `AGENTS.md`, its
11
+ memory notes) is what you or that agent wrote down, for that agent. Interlatch records every session from every agent
12
+ you use, keeps the transcripts after Claude Code deletes them (at 30 days), pulls out what was learned with a link to
13
+ the session it came from, and gives it to all your agents through one [MCP server](mcp.md). It can also propose
14
+ lines for your instruction files, which it writes only when you approve them ([Suggestions](suggestions.md)).
15
+
16
+ **Which agents does it record?** Claude Code, Codex, Codex Cloud, GitHub Copilot (the CLI and Copilot Chat in VS
17
+ Code), IBM Bob and Google Antigravity, plus chats you import from claude.ai and ChatGPT ([Sources](sources.md)).
18
+ Claude Desktop, Cursor, Windsurf and Gemini CLI aren't recorded, but they can use Interlatch's tools
19
+ ([MCP server](mcp.md#connecting-a-client)).
20
+
21
+ **Do I need Claude Code?** No. Analysis runs through Claude Code, Codex or IBM Bob, or a model provider's API with
22
+ your own key: Anthropic, Amazon Bedrock, OpenAI, Azure OpenAI, OpenRouter, any OpenAI-compatible server, or Ollama on
23
+ your own computer. Pick one in **Status › Analysis** or with `interlatch config set analysis.backend <name>`
24
+ ([Model providers](analysis.md#model-providers)). Recording and browsing work either way; with none set up, sessions
25
+ are archived and wait in the analysis queue.
26
+
27
+ **The desktop app or the command line?** The app (Apple silicon, macOS 13+) lives in the menu bar and runs its own
28
+ background sync. The command-line install (`uv tool install interlatch`, then `interlatch install`) runs the sync
29
+ and the dashboard as background agents, and is the one for an Intel Mac, Windows or Linux. Both use the same data in
30
+ `~/.interlatch` and can run side by side ([Install](install.md)).
31
+
32
+ **Windows or Linux?** The desktop app is macOS only. On Windows, `uv tool install interlatch` and `interlatch install`
33
+ work as on a Mac, with Task Scheduler running the sync and the dashboard ([Windows](install.md#windows)); a Windows
34
+ computer joining a team hub is untested yet. On Linux, `interlatch install` runs the sync and the dashboard as systemd user
35
+ units, so a Linux box can be the [hub](devices.md#a-linux-hub) for your other computers. A team's hub also runs
36
+ [in Docker](docker.md).
37
+
38
+ **Will it slow down my agent?** No. The session-end hook hands off to a detached process and returns in
39
+ milliseconds; analysis runs later in the background.
40
+
41
+ **What about the sessions I had before installing?** `interlatch install` imports the past sessions still on disk and
42
+ offers to analyze them: all of them, the newest 20, or later in the background. For Claude Code sessions older than
43
+ 30 days, whose transcripts are gone, it recovers the prompts from `~/.claude/history.jsonl`. Set
44
+ `analysis.backfill = false` to analyze only sessions from after the install ([Configuration](configuration.md#analysis)).
45
+
46
+ ## Privacy and cost
47
+
48
+ **What leaves my machine?** Only a condensed digest of each session, with secrets redacted, sent to whatever you
49
+ chose for analysis, through your own login or key (with Ollama, not even that). No telemetry, and nothing goes to
50
+ Interlatch's authors unless you join the leaderboard (below). The update check asks pypi.org for the latest version number only when you click it, unless
51
+ you turn on a daily check ([Data and privacy](privacy.md)).
52
+
53
+ **What does analysis cost?** Through Claude Code or Codex, analysis draws from your Claude or ChatGPT plan like any
54
+ other use of the agent; Bob and model providers bill your own account, and Ollama costs nothing. With Claude, in API
55
+ terms it averages about $0.38 per session with Sonnet. `interlatch analyze --pending --dry-run` sizes a backlog
56
+ before you spend anything, and `analysis.auto = false` stops automatic analysis
57
+ ([How analysis works](analysis.md#how-analysis-works)).
58
+
59
+ **Does it change my `CLAUDE.md` or `AGENTS.md`?** Only when you approve a suggestion. It backs the file up first,
60
+ writes only inside its own block, and every change can be undone ([Suggestions](suggestions.md#what-interlatch-never-does)).
61
+
62
+ **Can I keep a project or a session out?** Add the project to `sources.exclude_projects` in the
63
+ [configuration](configuration.md); it is then never recorded, analyzed or sent to a hub. Remove a single session for
64
+ good with `interlatch forget <id>`.
65
+
66
+ **What is the leaderboard, and does it send my usage?** The **Leaderboard** page compares your hours, sessions and
67
+ tokens with other people's. Nothing is sent until you sign in there with Google. From then on, each sync sends your
68
+ totals for the last 7, 30 and 90 days, with the name and picture you show: no email, project, prompt or title.
69
+ `interlatch leaderboard leave` deletes your row and stops sending.
70
+
71
+ **Is it open source?** Yes, under the MIT license, the hub included. Only `ee/`, the features a company needs to roll
72
+ it out across teams (single sign-on, policies, audit export), is under the
73
+ [Interlatch Enterprise License](../ee/README.md).
74
+
75
+ ## Your agents
76
+
77
+ **How do my agents use what it learned?** Through the MCP server, `interlatch mcp`, which `interlatch install`
78
+ registers with each agent you connect. It runs as a local process over stdio, and its tools only read your archive.
79
+ Ask an agent *"have we hit this error before?"* or *"how is billing-api deployed?"* ([MCP server](mcp.md)).
80
+
81
+ **Does it write in Japanese?** Set `[analysis] language = "ja"` (or pick it in **Status › Analysis**) and summaries,
82
+ knowledge, glossary and weekly reviews are written in Japanese from then on. The dashboard's own language is chosen
83
+ per browser in **Settings › Appearance** ([Language](analysis.md#language)).
84
+
85
+ **Does it read Slack?** No. Interlatch reads only what your coding agents write on your computer, and the chats you
86
+ import. When a session published a Slack canvas, the session's [Artifacts](dashboard.md#artifacts) keep its link.
87
+
88
+ ## Several computers and teams
89
+
90
+ **Can I use it on my phone or across several computers?** Yes. One computer is the hub: it records, analyzes and
91
+ serves the dashboard, and your other computers send it their sessions. Your phone opens the hub's dashboard
92
+ ([Phone and other computers](devices.md)).
93
+
94
+ **Do I need Tailscale?** No. Tailscale is the quickest way between your own devices, but a hub works just as well on
95
+ a company network or VPN behind an HTTPS proxy
96
+ ([Reaching the hub without Tailscale](devices.md#reaching-the-hub-without-tailscale)).
97
+
98
+ **What do my teammates see of my sessions?** With `--share knowledge`, the hub gets each analyzed session's summary
99
+ and project lessons, never your prompts, transcripts or files. A computer that joins without it sends its
100
+ transcripts, so an admin can make the hub take knowledge only ([Joining your team's hub](join-a-hub.md#what-is-shared),
101
+ [A hub that takes knowledge only](devices.md#a-hub-that-takes-knowledge-only)).
102
+
103
+ **Can I sync `~/.interlatch` with Dropbox or iCloud?** No: a SQLite database copied while it is in use can be
104
+ corrupted. Use a hub, or sync the agents' session folders with Syncthing instead
105
+ ([Without a hub](devices.md#without-a-hub-syncthing)).
106
+
107
+ **Can I keep my data in Postgres?** Interlatch keeps its own database in SQLite and can keep a copy of it in a
108
+ Postgres database you choose, for SQL and BI tools ([A copy in Postgres](postgres.md)).
109
+
110
+ ## Updating and removing
111
+
112
+ **How do I update?** **Settings › Status › Updates** updates Interlatch the way it was installed, and restarts the
113
+ dashboard. From a terminal, `uv tool upgrade interlatch`. For the app, download the new release
114
+ ([Updating](install.md#updating)).
115
+
116
+ **I used Chronicle. What happens?** Interlatch was called Chronicle. Updating moves your install and data over by
117
+ itself, and the `chronicle` command keeps working ([Moving from Chronicle](moving-from-chronicle.md)).
118
+
119
+ **Is the dashboard at 11524 or 8765?** New installs use <http://127.0.0.1:11524/>. Installs made before 11524 became
120
+ the default stay on 8765 (`[server] port` in `config.toml`), and the app picks a free port when 11524 is taken
121
+ ([Troubleshooting](troubleshooting.md#install-and-the-app)).
122
+
123
+ **How do I remove it?** `interlatch uninstall` removes the hooks, background agents and MCP registrations and keeps
124
+ your data; add `--purge` to delete the data too. With the app, also turn off **Open at Login** and delete it.
@@ -18,6 +18,7 @@
18
18
  | [記録される内容と分析の仕組み](analysis.md) | セッションのデータ、ナレッジの種類、分析の流れとその費用 |
19
19
  | [設定](configuration.md) | `config.toml` のすべての設定 |
20
20
  | [データとプライバシー](privacy.md) | 何がどこに保存され、何がマシンの外に送られるか |
21
+ | [よくある質問](faq.md) | よく聞かれる質問への短い答え:プライバシー、費用、エージェント、チーム、アップデート |
21
22
  | [トラブルシューティング](troubleshooting.md) | 既知の問題とよくあるトラブル |
22
23
  | [Chronicle からの移行](moving-from-chronicle.md) | Interlatch の以前の名前は Chronicle:アップデートで自動的に移行されるものと、そのまま使えるもの |
23
24
  | [開発](development.md) | テスト、アプリのビルド、リリース、デモデータ、コードの構成 |
@@ -33,7 +33,7 @@ macOS 以外では ⌘ の代わりに Ctrl を使います。macOS アプリで
33
33
 
34
34
  ページ:ホーム(稼働時間の見出しと稼働日数・最長連続日数、スパークライン付きの統計タイル(比較できる前の期間がそろうまでは
35
35
  1 日あたりの値)、7 日平均付きの日次グラフ、結果の内訳、連続記録付きのアクティビティカレンダー、最も忙しい時間帯、プロジェクト、
36
- 失敗した呼び出しを含むツール、モデル、エージェント)、並べ替え・絞り込みできるセッション一覧、12 週間の活動を示すプロジェクトカード([自分で作るグループ](#プロジェクトのグループ)ごと)、[システムマップ](#システムマップ)、
36
+ 失敗した呼び出しを含むツール、モデル、エージェント)、並べ替え・絞り込みできるセッション一覧、12 週間の活動を示すプロジェクトカード([自分で作るグループ](#プロジェクトのグループ)ごと)、[プロジェクトのページ](#プロジェクトのページ)、[システムマップ](#システムマップ)、
37
37
  セッションページ(上部に主要な数値、要約、そこから得られたナレッジ。その下で**詳細**(目的、ハイライト、未解決の事項、ナレッジ、コンパクションを含む
38
38
  コンテキストウインドウのグラフ、ツール、ファイル、サブエージェント、そのセッションが作った[成果物](#成果物)。セッションを開くと最初に表示)と**トランスクリプト**
39
39
  (入力と出力を開ける 1 行のツール呼び出しとサブエージェントのスレッドを含む会話。検索結果から開くとこちら)を切り替えます。幅の広いウインドウでは、プロンプト、
@@ -48,6 +48,42 @@ macOS 以外では ⌘ の代わりに Ctrl を使います。macOS アプリで
48
48
  その位置のトランスクリプトが語句をハイライトしたまま開きます。用語集の用語は、表示される場所(トランスクリプト、ナレッジ、要約)ではどこでも下線付きになり、
49
49
  ホバーで定義、クリックで項目を表示します。すべてのグラフに表形式の表示があり、ライトとダークのテーマに対応しています。
50
50
 
51
+ ## プロジェクトのページ
52
+
53
+ プロジェクトのページは、しばらく離れていたプロジェクトに戻るためのものです。名前の下には、**進行中**(1 週間以内にセッションあり)、
54
+ **小休止**(1 か月以内)、**休止中**のどれか、最後のセッションの時期、セッション数、稼働時間、トークン数、推定 API 費用が並びます。
55
+ その下に、ナレッジベースの概要がプロジェクトの説明として出ます。
56
+
57
+ **概要**タブには、セッションと git から読み取った現状を表示します。モデルが書いたものは含みません。
58
+
59
+ - **あなたの対応待ち**(待っているものがあるときだけ表示):
60
+ - **まだ git に保存されていないもの:** コミットしていない変更ファイル(最も古い編集の日時つき)と、どのリモートブランチにもない
61
+ コミット(最も古いものの日時つき。リモートのないリポジトリでは数えません)。git にない新規ファイルは数だけを示します。
62
+ ビルドの出力や作業用のファイルはずっとそこにあるためです。
63
+ - **決めることと未解決の問い:** 直近の分析済みセッション 3 つが残した事項のうち、人の判断・承認・回答を待っているもの。
64
+ セッションの分析での言い回しで選んでいるので、対応する前に確かめてください。
65
+ - 2 日より長く待っているものは琥珀色になります。赤にはなりません。
66
+ - **ロードマップ:** フォルダーかそのリポジトリのルートに `ROADMAP.md`、`BACKLOG.md`、`TODO.md`、`TODOS.md` のどれか
67
+ (そこか `docs/` の中。大文字小文字は問いません)があれば、最初の 3 つの `##` セクションとその項目(各トップレベルの箇条書きの
68
+ 太字の見出しか冒頭、箇条書きがなければ `###` 見出し)、チェックボックスの未完了と完了の数、ファイルの最後のコミット日時を表示します。
69
+ ない場合は**バックログ**に、プロジェクトの「やること」(**Done** で却下)とナレッジベースの未解決の事項を、その更新時点のものとして出します。
70
+ - **中断したところ:** 最後のセッションの目的、終わり方、残っていること。その前の 4 つのセッションは、開くとそれぞれの目的と
71
+ 残っていることが出ます。どれもセッションが終了した時点で残っていたことなので、その後のセッションやセッション外の作業で
72
+ 片付いているかもしれません。
73
+ - **フォルダーの現在:** フォルダーの git のブランチと上流との差、未コミットの変更の数、最後のコミット、リポジトリのほかの
74
+ ワークツリー。フォルダーがあるコンピューター上のブラウザーでだけ表示します。git は読み取るだけでロックを取らず、
75
+ リポジトリのフックや fsmonitor も動きません。
76
+ - **週ごと:** セッションのあった週を新しい順に、その週のセッションと結果、作成したプルリクエストとコミット(それぞれ 1 回だけ
77
+ 数えます)とともに表示し、間のセッションのない週も示します。
78
+
79
+ ほかのタブ:**作業の手引き**(ナレッジベース、[アーキテクチャ図](#アーキテクチャ図)、用語集)、**ナレッジ**、**セッション**、
80
+ **成果物**、**使用量**(合計と編集の多いファイル)。選んだタブはアドレスに残るので、リンクや再読み込みでも同じタブが開きます。
81
+
82
+ git の行とロードマップのファイルは、フォルダーがあるコンピューター上のブラウザーでだけ読み取ります。人のいるハブでは、カードは
83
+ **要対応**と**チームが中断したところ**になり、各セッションに誰のものかが出ます。プルリクエストは、コンピューターが送る
84
+ トランスクリプト(`share = "everything"`)から、ナレッジを共有するコンピューターではセッションが記録しているリンクから表示します。
85
+ コミットはトランスクリプトからだけです。一部のプロジェクトだけを見られる人には、セッションのページと同じく、プルリクエストは表示しません。
86
+
51
87
  ## プロジェクトのグループ
52
88
 
53
89
  関連するプロジェクトを、Aktio のリポジトリをまとめた **Aktio** のように 1 つの見出しの下に置けます(プロジェクトページとそのサイドバー)。