streamlit-coco 0.2.0__tar.gz → 0.2.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (635) hide show
  1. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/CHANGELOG.md +34 -0
  2. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/ID.md +2 -2
  3. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/PKG-INFO +3 -3
  4. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/README.md +2 -2
  5. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/api.md +10 -2
  6. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/ask-coco.md +4 -1
  7. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/test-checklist.md +5 -1
  8. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/prd.md +1 -1
  9. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/CHECKLIST.md +13 -10
  10. streamlit_coco-0.2.2/doc/releases/0.2.1/CHECKLIST.md +39 -0
  11. streamlit_coco-0.2.2/doc/releases/0.2.1/README.md +11 -0
  12. streamlit_coco-0.2.2/doc/releases/0.2.2/CHECKLIST.md +79 -0
  13. streamlit_coco-0.2.2/doc/releases/0.2.2/NOTES.md +42 -0
  14. streamlit_coco-0.2.2/doc/releases/0.2.2/README.md +17 -0
  15. streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/01-full-page.png +0 -0
  16. streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/02-hint.png +0 -0
  17. streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/README.md +45 -0
  18. streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/hero.png +0 -0
  19. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/README.md +1 -1
  20. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/roadmap.md +16 -4
  21. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/testing.md +1 -1
  22. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/README.md +3 -3
  23. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/app.py +17 -69
  24. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/actions.py +19 -10
  25. streamlit_coco-0.2.2/examples/app_builder/engine/coco_window.py +222 -0
  26. streamlit_coco-0.2.2/examples/app_builder/engine/jobs.py +42 -0
  27. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/preview_panel.py +5 -18
  28. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/brief.py +0 -4
  29. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/studio.py +3 -6
  30. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/welcome.py +5 -4
  31. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/README.md +7 -7
  32. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/app.py +23 -73
  33. streamlit_coco-0.2.2/examples/bi_to_semantic/engine/coco_jobs.py +97 -0
  34. streamlit_coco-0.2.2/examples/bi_to_semantic/engine/coco_window.py +234 -0
  35. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/preview_panel.py +2 -11
  36. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/access_rules.py +10 -14
  37. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/generate.py +4 -24
  38. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/load.py +3 -3
  39. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/welcome.py +8 -8
  40. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/e2e_ux_harness.py +16 -3
  41. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/modern_chat/app.py +42 -11
  42. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/pyproject.toml +8 -1
  43. streamlit_coco-0.2.2/release_notes.txt +25 -0
  44. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/scripts/capture_release_screens.py +54 -5
  45. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/__init__.py +1 -1
  46. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/features.py +2 -0
  47. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/labels.py +4 -0
  48. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco.css +21 -2
  49. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco.js +43 -4
  50. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/window.py +58 -4
  51. streamlit_coco-0.2.2/tests/e2e/test_window_layout.py +135 -0
  52. streamlit_coco-0.2.0/examples/app_builder/engine/coco_window.py +0 -111
  53. streamlit_coco-0.2.0/examples/app_builder/engine/copilot_panel.py +0 -237
  54. streamlit_coco-0.2.0/examples/app_builder/engine/jobs.py +0 -157
  55. streamlit_coco-0.2.0/examples/bi_to_semantic/engine/coco_jobs.py +0 -258
  56. streamlit_coco-0.2.0/examples/bi_to_semantic/engine/coco_window.py +0 -133
  57. streamlit_coco-0.2.0/examples/bi_to_semantic/engine/copilot_panel.py +0 -227
  58. streamlit_coco-0.2.0/release_notes.txt +0 -32
  59. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/.gitignore +0 -0
  60. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/.python-version +0 -0
  61. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/AGENTS.md +0 -0
  62. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/CONTRIBUTING.md +0 -0
  63. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/LICENSE +0 -0
  64. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/Makefile +0 -0
  65. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/deployment/README.md +0 -0
  66. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/deployment/local.md +0 -0
  67. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/deployment/publish.md +0 -0
  68. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/README.md +0 -0
  69. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/app-builder/UX.md +0 -0
  70. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/app-builder/app-builder.md +0 -0
  71. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/app-builder/test-checklist.md +0 -0
  72. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/app-viewer/app-viewer.md +0 -0
  73. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/app-viewer/test-checklist.md +0 -0
  74. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/approvals/approvals.md +0 -0
  75. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/approvals/test-checklist.md +0 -0
  76. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/.gitattributes +0 -0
  77. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/README.md +0 -0
  78. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22.dc.html +0 -0
  79. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22Data.dc.html +0 -0
  80. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22OnPage.dc.html +0 -0
  81. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22OnPage1366.dc.html +0 -0
  82. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22Waiting.dc.html +0 -0
  83. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/canvas.json +0 -0
  84. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/cockpit.css +0 -0
  85. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/cockpit22.css +0 -0
  86. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/coco22.css +0 -0
  87. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/index.html +0 -0
  88. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22.dc.html +0 -0
  89. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22Data.dc.html +0 -0
  90. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22OnPage.dc.html +0 -0
  91. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22OnPage1366.dc.html +0 -0
  92. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22Waiting.dc.html +0 -0
  93. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/chat-ccv2/chat-ccv2.md +0 -0
  94. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/chat-ccv2/test-checklist.md +0 -0
  95. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/copilot-rail/copilot-rail.md +0 -0
  96. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/copilot-rail/test-checklist.md +0 -0
  97. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/file-upload/file-upload.md +0 -0
  98. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/file-upload/test-checklist.md +0 -0
  99. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/headless/headless.md +0 -0
  100. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/headless/test-checklist.md +0 -0
  101. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/panel/panel.md +0 -0
  102. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/panel/test-checklist.md +0 -0
  103. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/structured-output/structured-output.md +0 -0
  104. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/structured-output/test-checklist.md +0 -0
  105. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/text-renderer/test-checklist.md +0 -0
  106. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/text-renderer/text-renderer.md +0 -0
  107. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/tools-display/SPEC.md +0 -0
  108. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/tools-display/test-checklist.md +0 -0
  109. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/features/tools-display/tools-display.md +0 -0
  110. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/marketing/demo.md +0 -0
  111. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/marketing/one-pager.md +0 -0
  112. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/methodology/delivery_plan.md +0 -0
  113. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/methodology/workshops/w01-setup-architecture-first-app.md +0 -0
  114. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/methodology/workshops.md +0 -0
  115. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/CHECKLIST.md +0 -0
  116. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/NOTES.md +0 -0
  117. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/README.md +0 -0
  118. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/01-upload.png +0 -0
  119. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/03-approval.png +0 -0
  120. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/README.md +0 -0
  121. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/hero.png +0 -0
  122. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/CHECKLIST.md +0 -0
  123. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/NOTES.md +0 -0
  124. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/README.md +0 -0
  125. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/01-copilot-rail.png +0 -0
  126. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/02-tableau-generate.png +0 -0
  127. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/03-preview.png +0 -0
  128. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/04-estate-map.png +0 -0
  129. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/README.md +0 -0
  130. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/CHECKLIST.md +0 -0
  131. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/NOTES.md +0 -0
  132. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/README.md +0 -0
  133. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/README.md +0 -0
  134. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/fix_with_coco_feature.png +0 -0
  135. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/powerbi_load.png +0 -0
  136. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/powerbi_streamlit_app.png +0 -0
  137. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/streamlit_app_generation.png +0 -0
  138. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/toolbar.png +0 -0
  139. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8/CHECKLIST.md +0 -0
  140. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8/NOTES.md +0 -0
  141. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8/README.md +0 -0
  142. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8/screenshots/README.md +0 -0
  143. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/CHECKLIST.md +0 -0
  144. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/NOTES.md +0 -0
  145. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/README.md +0 -0
  146. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/screenshots/README.md +0 -0
  147. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.9/CHECKLIST.md +0 -0
  148. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.9/NOTES.md +0 -0
  149. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.9/README.md +0 -0
  150. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.1.9/screenshots/README.md +0 -0
  151. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/NOTES.md +0 -0
  152. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/README.md +0 -0
  153. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/01-minimize.png +0 -0
  154. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/02-simple-chat.png +0 -0
  155. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/README.md +0 -0
  156. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/hero.png +0 -0
  157. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/_template/CHECKLIST.md +0 -0
  158. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/_template/NOTES.md +0 -0
  159. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/_template/README.md +0 -0
  160. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/releases/_template/screenshots/README.md +0 -0
  161. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/security/findings-report.md +0 -0
  162. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/security/threat-model.md +0 -0
  163. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/README.md +0 -0
  164. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/coco_rail.py +0 -0
  165. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/html_frame.py +0 -0
  166. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/i18n.py +0 -0
  167. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/pack.py +0 -0
  168. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/quiz.py +0 -0
  169. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/app/streamlit_app.py +0 -0
  170. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.es.html +0 -0
  171. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.es.md +0 -0
  172. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.fr.html +0 -0
  173. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.fr.md +0 -0
  174. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.html +0 -0
  175. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.md +0 -0
  176. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.es.html +0 -0
  177. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.es.md +0 -0
  178. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.fr.html +0 -0
  179. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.fr.md +0 -0
  180. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.html +0 -0
  181. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.md +0 -0
  182. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.es.html +0 -0
  183. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.es.md +0 -0
  184. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.fr.html +0 -0
  185. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.fr.md +0 -0
  186. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.html +0 -0
  187. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/expert.md +0 -0
  188. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.es.html +0 -0
  189. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.es.md +0 -0
  190. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.fr.html +0 -0
  191. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.fr.md +0 -0
  192. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.html +0 -0
  193. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/certifications/user.md +0 -0
  194. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/deck.html +0 -0
  195. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/deck.pdf +0 -0
  196. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.es.html +0 -0
  197. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.es.md +0 -0
  198. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.fr.html +0 -0
  199. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.fr.md +0 -0
  200. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.html +0 -0
  201. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.md +0 -0
  202. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/dsp_logo.png +0 -0
  203. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.es.html +0 -0
  204. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.es.md +0 -0
  205. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.fr.html +0 -0
  206. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.fr.md +0 -0
  207. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.html +0 -0
  208. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.md +0 -0
  209. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.es.html +0 -0
  210. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.es.md +0 -0
  211. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.fr.html +0 -0
  212. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.fr.md +0 -0
  213. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.html +0 -0
  214. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.md +0 -0
  215. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.es.html +0 -0
  216. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.es.md +0 -0
  217. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.fr.html +0 -0
  218. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.fr.md +0 -0
  219. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.html +0 -0
  220. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/intro.md +0 -0
  221. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.es.html +0 -0
  222. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.es.md +0 -0
  223. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.fr.html +0 -0
  224. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.fr.md +0 -0
  225. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.html +0 -0
  226. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/enablement/setup.md +0 -0
  227. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.es.html +0 -0
  228. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.es.md +0 -0
  229. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.fr.html +0 -0
  230. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.fr.md +0 -0
  231. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.html +0 -0
  232. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.md +0 -0
  233. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.es.html +0 -0
  234. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.es.md +0 -0
  235. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.fr.html +0 -0
  236. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.fr.md +0 -0
  237. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.html +0 -0
  238. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.md +0 -0
  239. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.es.html +0 -0
  240. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.es.md +0 -0
  241. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.fr.html +0 -0
  242. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.fr.md +0 -0
  243. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.html +0 -0
  244. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.md +0 -0
  245. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.es.html +0 -0
  246. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.es.md +0 -0
  247. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.fr.html +0 -0
  248. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.fr.md +0 -0
  249. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.html +0 -0
  250. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.md +0 -0
  251. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.es.html +0 -0
  252. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.es.md +0 -0
  253. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.fr.html +0 -0
  254. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.fr.md +0 -0
  255. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.html +0 -0
  256. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.md +0 -0
  257. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.es.html +0 -0
  258. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.es.md +0 -0
  259. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.fr.html +0 -0
  260. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.fr.md +0 -0
  261. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.html +0 -0
  262. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.md +0 -0
  263. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.es.html +0 -0
  264. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.es.md +0 -0
  265. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.fr.html +0 -0
  266. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.fr.md +0 -0
  267. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.html +0 -0
  268. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.md +0 -0
  269. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.es.html +0 -0
  270. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.es.md +0 -0
  271. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.fr.html +0 -0
  272. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.fr.md +0 -0
  273. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.html +0 -0
  274. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.md +0 -0
  275. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.es.html +0 -0
  276. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.es.md +0 -0
  277. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.fr.html +0 -0
  278. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.fr.md +0 -0
  279. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.html +0 -0
  280. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.md +0 -0
  281. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.es.html +0 -0
  282. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.es.md +0 -0
  283. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.fr.html +0 -0
  284. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.fr.md +0 -0
  285. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.html +0 -0
  286. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.md +0 -0
  287. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.es.html +0 -0
  288. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.es.md +0 -0
  289. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.fr.html +0 -0
  290. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.fr.md +0 -0
  291. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.html +0 -0
  292. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.md +0 -0
  293. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.es.html +0 -0
  294. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.es.md +0 -0
  295. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.fr.html +0 -0
  296. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.fr.md +0 -0
  297. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.html +0 -0
  298. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.md +0 -0
  299. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.es.html +0 -0
  300. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.es.md +0 -0
  301. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.fr.html +0 -0
  302. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.fr.md +0 -0
  303. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.html +0 -0
  304. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/01-simple.md +0 -0
  305. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.es.html +0 -0
  306. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.es.md +0 -0
  307. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.fr.html +0 -0
  308. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.fr.md +0 -0
  309. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.html +0 -0
  310. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.md +0 -0
  311. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.es.html +0 -0
  312. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.es.md +0 -0
  313. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.fr.html +0 -0
  314. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.fr.md +0 -0
  315. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.html +0 -0
  316. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.md +0 -0
  317. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/training.yml +0 -0
  318. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.es.html +0 -0
  319. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.es.md +0 -0
  320. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.fr.html +0 -0
  321. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.fr.md +0 -0
  322. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.html +0 -0
  323. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/index.md +0 -0
  324. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.es.html +0 -0
  325. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.es.md +0 -0
  326. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.fr.html +0 -0
  327. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.fr.md +0 -0
  328. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.html +0 -0
  329. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.md +0 -0
  330. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.es.html +0 -0
  331. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.es.md +0 -0
  332. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.fr.html +0 -0
  333. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.fr.md +0 -0
  334. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.html +0 -0
  335. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.md +0 -0
  336. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.es.html +0 -0
  337. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.es.md +0 -0
  338. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.fr.html +0 -0
  339. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.fr.md +0 -0
  340. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.html +0 -0
  341. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.md +0 -0
  342. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.es.html +0 -0
  343. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.es.md +0 -0
  344. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.fr.html +0 -0
  345. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.fr.md +0 -0
  346. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.html +0 -0
  347. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.md +0 -0
  348. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.es.html +0 -0
  349. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.es.md +0 -0
  350. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.fr.html +0 -0
  351. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.fr.md +0 -0
  352. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.html +0 -0
  353. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.md +0 -0
  354. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.es.html +0 -0
  355. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.es.md +0 -0
  356. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.fr.html +0 -0
  357. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.fr.md +0 -0
  358. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.html +0 -0
  359. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.md +0 -0
  360. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.es.html +0 -0
  361. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.es.md +0 -0
  362. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.fr.html +0 -0
  363. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.fr.md +0 -0
  364. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.html +0 -0
  365. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.md +0 -0
  366. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.es.html +0 -0
  367. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.es.md +0 -0
  368. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.fr.html +0 -0
  369. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.fr.md +0 -0
  370. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.html +0 -0
  371. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.md +0 -0
  372. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.es.html +0 -0
  373. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.es.md +0 -0
  374. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.fr.html +0 -0
  375. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.fr.md +0 -0
  376. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.html +0 -0
  377. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.md +0 -0
  378. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.es.html +0 -0
  379. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.es.md +0 -0
  380. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.fr.html +0 -0
  381. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.fr.md +0 -0
  382. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.html +0 -0
  383. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.md +0 -0
  384. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.es.html +0 -0
  385. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.es.md +0 -0
  386. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.fr.html +0 -0
  387. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.fr.md +0 -0
  388. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.html +0 -0
  389. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.md +0 -0
  390. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.es.html +0 -0
  391. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.es.md +0 -0
  392. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.fr.html +0 -0
  393. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.fr.md +0 -0
  394. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.html +0 -0
  395. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.md +0 -0
  396. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.es.html +0 -0
  397. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.es.md +0 -0
  398. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.fr.html +0 -0
  399. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.fr.md +0 -0
  400. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.html +0 -0
  401. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.md +0 -0
  402. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/.streamlit/config.toml +0 -0
  403. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/__init__.py +0 -0
  404. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/brief.py +0 -0
  405. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/brief_form.py +0 -0
  406. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/catalog.py +0 -0
  407. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/generate.py +0 -0
  408. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/paths.py +0 -0
  409. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/profile.py +0 -0
  410. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/scaffold.py +0 -0
  411. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/skills.py +0 -0
  412. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/engine/state.py +0 -0
  413. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/local_sales.csv +0 -0
  414. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/prompt_pack.md +0 -0
  415. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/quality_orders.csv +0 -0
  416. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/sales_sv.csv +0 -0
  417. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/sample_call.txt +0 -0
  418. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/standup_notes.md +0 -0
  419. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/pyproject.toml +0 -0
  420. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/__init__.py +0 -0
  421. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/admin.py +0 -0
  422. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/screens/library.py +0 -0
  423. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/call-transcription/SKILL.md +0 -0
  424. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/call-transcription/type.json +0 -0
  425. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/csv-explorer/SKILL.md +0 -0
  426. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/csv-explorer/type.json +0 -0
  427. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/data-quality/SKILL.md +0 -0
  428. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/data-quality/type.json +0 -0
  429. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/meeting-recap/SKILL.md +0 -0
  430. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/meeting-recap/type.json +0 -0
  431. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/prompt-library/SKILL.md +0 -0
  432. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/prompt-library/type.json +0 -0
  433. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/CHECKLIST.md +0 -0
  434. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/SKILL.md +0 -0
  435. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/reference/streamlit_app.py +0 -0
  436. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/type.json +0 -0
  437. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/app_builder/types/shared/SKILL.md +0 -0
  438. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/approval_gate.py +0 -0
  439. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/.streamlit/config.toml +0 -0
  440. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/README.md +0 -0
  441. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/board.py +0 -0
  442. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/epic.py +0 -0
  443. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/release.py +0 -0
  444. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/ticket.py +0 -0
  445. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-01.json +0 -0
  446. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-02.json +0 -0
  447. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-03.json +0 -0
  448. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/policies/dod.md +0 -0
  449. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/releases/0.1.0.md +0 -0
  450. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/releases/0.2.0.md +0 -0
  451. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-040.json +0 -0
  452. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-041.json +0 -0
  453. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-042.json +0 -0
  454. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-043.json +0 -0
  455. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-044.json +0 -0
  456. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-045.json +0 -0
  457. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-046.json +0 -0
  458. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-047.json +0 -0
  459. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-048.json +0 -0
  460. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-049.json +0 -0
  461. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/streamlit_app.py +0 -0
  462. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/__init__.py +0 -0
  463. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/backlog.py +0 -0
  464. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/copilot_panel.py +0 -0
  465. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/paths.py +0 -0
  466. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/skill_desk.py +0 -0
  467. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/skills.py +0 -0
  468. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/snowflake_connections.py +0 -0
  469. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/ui.py +0 -0
  470. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/README.md +0 -0
  471. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/Corporate Spend.pbix +0 -0
  472. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/Customer Profitability Sample (auto).pbix +0 -0
  473. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/README.md +0 -0
  474. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/fetch.sh +0 -0
  475. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/README.md +0 -0
  476. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/extract_schema.py +0 -0
  477. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/gen_snowflake.py +0 -0
  478. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/schema.json +0 -0
  479. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/verify.sql +0 -0
  480. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/workgroup_ddl.sql +0 -0
  481. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/workgroup_seed.sql +0 -0
  482. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_content.twb +0 -0
  483. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_events.twb +0 -0
  484. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_users.twb +0 -0
  485. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_web_requests.twb +0 -0
  486. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/BRIEF-powerbi-fixtures.md +0 -0
  487. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/PRD.md +0 -0
  488. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/access_rules.schema.json +0 -0
  489. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/estate_map.schema.json +0 -0
  490. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/kpi_inventory.schema.json +0 -0
  491. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/__init__.py +0 -0
  492. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/access_parse.py +0 -0
  493. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/bi_sources.py +0 -0
  494. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/dashboard_parse.py +0 -0
  495. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/estate_parse.py +0 -0
  496. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/extract.py +0 -0
  497. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/generate.py +0 -0
  498. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/kpi_parse.py +0 -0
  499. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/paths.py +0 -0
  500. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/persist.py +0 -0
  501. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/powerbi_parse.py +0 -0
  502. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/preview_server.py +0 -0
  503. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/state.py +0 -0
  504. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/streamlit_app_gen.py +0 -0
  505. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/ui_common.py +0 -0
  506. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/pyproject.toml +0 -0
  507. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/__init__.py +0 -0
  508. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/arbitration.py +0 -0
  509. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/estate_map.py +0 -0
  510. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/kpi_inventory.py +0 -0
  511. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/chat_app.py +0 -0
  512. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/cwd_upload_chat.py +0 -0
  513. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/headless_pipeline.py +0 -0
  514. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/modern_chat/.streamlit/config.toml +0 -0
  515. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/structured_output.py +0 -0
  516. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/testdata/README.md +0 -0
  517. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/examples/testdata/prompts.json +0 -0
  518. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/scripts/collect_adoption_stats.py +0 -0
  519. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/scripts/render_adoption_chart.py +0 -0
  520. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/scripts/render_svg.py +0 -0
  521. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/app_preview.py +0 -0
  522. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/ask_user.py +0 -0
  523. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/assets.py +0 -0
  524. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/bootstrap.py +0 -0
  525. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/bridge.py +0 -0
  526. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/clipboard.py +0 -0
  527. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/component.py +0 -0
  528. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/conversation.py +0 -0
  529. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/cortex.py +0 -0
  530. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/cortex_tools.py +0 -0
  531. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/debug.py +0 -0
  532. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/diagnostics.py +0 -0
  533. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/display.py +0 -0
  534. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/errors.py +0 -0
  535. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/extras.py +0 -0
  536. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/frontend/__init__.py +0 -0
  537. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/frontend/index.html +0 -0
  538. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/frontend/main.js +0 -0
  539. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/frontend/style.css +0 -0
  540. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/gate.py +0 -0
  541. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/messages.py +0 -0
  542. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/mini.py +0 -0
  543. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/options.py +0 -0
  544. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/permissions.py +0 -0
  545. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/policy.py +0 -0
  546. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/query.py +0 -0
  547. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/rail.py +0 -0
  548. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/rich_text.py +0 -0
  549. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/session.py +0 -0
  550. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/sql_tool.py +0 -0
  551. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco-logo-round.svg +0 -0
  552. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco-logo.svg +0 -0
  553. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/data.css +0 -0
  554. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/data.js +0 -0
  555. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/files.css +0 -0
  556. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/files.js +0 -0
  557. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/page.css +0 -0
  558. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/page.js +0 -0
  559. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/plans.css +0 -0
  560. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/plans.js +0 -0
  561. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/questions.css +0 -0
  562. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/questions.js +0 -0
  563. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/session.css +0 -0
  564. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/session.js +0 -0
  565. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/standing.css +0 -0
  566. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/standing.js +0 -0
  567. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-400.ttf +0 -0
  568. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-500.ttf +0 -0
  569. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-600.ttf +0 -0
  570. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/OFL.txt +0 -0
  571. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/testing/__init__.py +0 -0
  572. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/testing/domdiff.py +0 -0
  573. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/testing/fixtures.py +0 -0
  574. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/testing/harness.py +0 -0
  575. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/testing/scripted.py +0 -0
  576. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/text_renderer.py +0 -0
  577. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/tool_cards.py +0 -0
  578. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/tool_extract.py +0 -0
  579. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/tool_names.py +0 -0
  580. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/ui.py +0 -0
  581. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/upload.py +0 -0
  582. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/uploader.py +0 -0
  583. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/viewer.py +0 -0
  584. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/streamlit_coco/waits.py +0 -0
  585. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/api_snapshot.py +0 -0
  586. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/coco_fixture.py +0 -0
  587. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e/conftest.py +0 -0
  588. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e/test_window_features.py +0 -0
  589. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e/test_window_walk.py +0 -0
  590. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e_classic/conftest.py +0 -0
  591. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e_classic/harness.py +0 -0
  592. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_copy_highlight.py +0 -0
  593. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_max_messages.py +0 -0
  594. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_upload.py +0 -0
  595. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/api_0.1.9.json +0 -0
  596. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/README.md +0 -0
  597. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_text.ndjson +0 -0
  598. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_tool_glob.ndjson +0 -0
  599. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_tool_result.ndjson +0 -0
  600. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/manifest.json +0 -0
  601. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/result_structured.ndjson +0 -0
  602. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/result_success.ndjson +0 -0
  603. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/stream_delta.ndjson +0 -0
  604. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/system_init.ndjson +0 -0
  605. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/turn_glob.ndjson +0 -0
  606. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/user_tool_result.ndjson +0 -0
  607. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_app_builder_catalog.py +0 -0
  608. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_app_builder_profile.py +0 -0
  609. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_app_viewer.py +0 -0
  610. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_backlog_desk.py +0 -0
  611. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_bi_to_semantic_parse.py +0 -0
  612. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_classic_core.py +0 -0
  613. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_classic_smoke.py +0 -0
  614. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_compat_019.py +0 -0
  615. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_conversation.py +0 -0
  616. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_copilot_rail.py +0 -0
  617. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_core.py +0 -0
  618. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_cortex.py +0 -0
  619. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_display.py +0 -0
  620. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_errors.py +0 -0
  621. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_extras.py +0 -0
  622. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_gate.py +0 -0
  623. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_headless_example.py +0 -0
  624. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_mini.py +0 -0
  625. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_ndjson_fixtures.py +0 -0
  626. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_part_data.py +0 -0
  627. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_policy.py +0 -0
  628. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_rich_text.py +0 -0
  629. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_scripted.py +0 -0
  630. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_smoke.py +0 -0
  631. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_snowflake_toml.py +0 -0
  632. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_streamlit_floor.py +0 -0
  633. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_upload.py +0 -0
  634. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_waits.py +0 -0
  635. {streamlit_coco-0.2.0 → streamlit_coco-0.2.2}/tests/test_window.py +0 -0
@@ -12,6 +12,40 @@ Living plan (what’s next): [`doc/roadmap.md`](doc/roadmap.md).
12
12
 
13
13
  ## [Unreleased]
14
14
 
15
+ ## [0.2.2] — 2026-10-25
16
+
17
+ Ask CoCo can leave the corner: attached to an edge on the full height of the page, or on the whole page. The page can be told where the window is, and take the rest of the screen. Upgrading from 0.2.0 or 0.2.1: nothing to change; every new parameter is keyword-only with a default that keeps today's behaviour.
18
+
19
+ ### Added
20
+
21
+ - Three icons in the window's title bar: attach to the left edge, attach to the right edge (full height, `min(30rem, 100vw)` wide), or fill the page. The pressed icon puts the window back. `Features(dock=False)` and `Features(full_page=False)` remove them (both on by default). Each icon shows a hint after 750 ms.
22
+ - A click on the title bar (not on one of its buttons) minimises the window.
23
+ - `ask_coco(on_layout=fn)`: `fn(place)` is called when the window changes place (`closed`, `float`, `left`, `right`, `full`), then the page reruns once. `get_window(key).place` reads it on any run; the browser also writes `data-coco-place` and `--coco-dock-w` on `<html>` for the page's own CSS.
24
+ - `ask_coco(split=True)`: while the window is attached to an edge, the page takes the rest of the screen instead of being covered.
25
+ - Docked and full-page windows sit above the page's header, menu bar and sidebar; the floating window no longer reaches up under them on a short screen.
26
+ - Tests: `tests/e2e/test_window_layout.py` (the places, the switches, the callback and split, the hint, the title bar over the header).
27
+
28
+ ### Changed
29
+
30
+ - `examples/app_builder` and `examples/bi_to_semantic`: Ask CoCo is the only agent surface, on every screen. The sidebar Off/On switch and the Copilot rail are gone; Build, Fix with CoCo and the BI jobs are sent to the window. App Builder suggests its own questions on each screen, BI → Semantic too. Both use `split=True`.
31
+ - `examples/modern_chat` starts with Ask CoCo (then Rail, then Both) and has a Split screen selector in the sidebar.
32
+
33
+ ### Security
34
+
35
+ - Development lock: `pip-audit` found 41 advisories in `pillow`, `filelock` and `certifi`. Locked `streamlit` 1.66.1 (it capped `pillow<13`), `pillow` 13.0.0, `certifi` 2026.10.23 and `filelock` 4.2.4 (a `[tool.uv]` override on Python 3.11+, because the Snowflake connector still says `filelock<4`). The package floor is still Streamlit 1.55; the browser tests pass on 1.66.1.
36
+
37
+ ### Fixed
38
+
39
+ - The Ask CoCo window no longer blinks, and the page's own layers no longer show on top of it, while it waits for an answer. Each poll reruns the window's fragment; when a run was slow, Streamlit faded the stale component (opacity below 1), which made it a stacking context for the fixed window. The host container now keeps opacity 1.
40
+
41
+ ## [0.2.1] — 2026-10-20
42
+
43
+ The README names the asset contributor. No code change: `0.2.1` is `0.2.0` with the README that PyPI shows (a published file cannot be changed).
44
+
45
+ ### Changed
46
+
47
+ - README ownership table: Alentz Joseph (Devoteam) is listed as asset contributor, in place of the generic contributors row.
48
+
15
49
  ## [0.2.0] — 2026-10-20
16
50
 
17
51
  Ask CoCo, a floating window, beside the 0.1.9 chat family. `chat`, `panel`, and `copilot_rail` stay the default.
@@ -7,9 +7,9 @@
7
7
  | **Snow Builders level** | N0 (working toward N1) |
8
8
  | **Status** | active |
9
9
  | **Asset Owner** | Laurent Letourmy — laurent.letourmy@devoteam.com |
10
- | **Contributors** | DevoteamSP / streamlit-coco contributors |
10
+ | **Asset Contributor** | Alentz Joseph — alentz.joseph@devoteam.com |
11
11
  | **Created** | 2026-07 |
12
- | **Last updated** | 2026-09-10 |
12
+ | **Last updated** | 2026-10-20 |
13
13
  | **Confidentiality** | Public |
14
14
 
15
15
  ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: streamlit-coco
3
- Version: 0.2.0
3
+ Version: 0.2.2
4
4
  Summary: Streamlit component and Python library for Snowflake CoCo (Cortex Code)
5
5
  Project-URL: Homepage, https://github.com/lletourmy/streamlit-coco
6
6
  Project-URL: Documentation, https://github.com/lletourmy/streamlit-coco#readme
@@ -47,7 +47,7 @@ Description-Content-Type: text/markdown
47
47
  [![CI](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml/badge.svg)](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml)
48
48
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
49
49
 
50
- > `0.2.0` (alpha). The API may still move. The default interface is still the 0.1.9 chat family (`chat`, `panel`, `copilot_rail`). The floating window is opt-in: `mini=True` on those calls, or `ask_coco(cwd)`. See [`doc/features/ask-coco/ask-coco.md`](doc/features/ask-coco/ask-coco.md).
50
+ > `0.2.2` (alpha). The API may still move. The default interface is still the 0.1.9 chat family (`chat`, `panel`, `copilot_rail`). The floating window is opt-in: `mini=True` on those calls, or `ask_coco(cwd)`. See [`doc/features/ask-coco/ask-coco.md`](doc/features/ask-coco/ask-coco.md).
51
51
 
52
52
  **Repo:** [github.com/lletourmy/streamlit-coco](https://github.com/lletourmy/streamlit-coco) *(temporary PyPI source)* · **Dev:** [streamlit-coco-dev](https://github.com/DevoteamSP/streamlit-coco-dev)
53
53
  **SDK docs:** [Cortex Code Agent SDK](https://docs.snowflake.com/en/user-guide/cortex-code-agent-sdk/cortex-code-agent-sdk)
@@ -326,7 +326,7 @@ Releases: develop here, sync and tag on [`lletourmy/streamlit-coco`](https://git
326
326
  | Role | Name | Contact |
327
327
  | --- | --- | --- |
328
328
  | Asset Owner | Laurent Letourmy | laurent.letourmy@devoteam.com |
329
- | Contributors | DevoteamSP / streamlit-coco contributors | [streamlit-coco-dev](https://github.com/DevoteamSP/streamlit-coco-dev) |
329
+ | Asset Contributor | Alentz Joseph | alentz.joseph@devoteam.com |
330
330
 
331
331
  **Snow Builders level:** N0 (alpha), targeting N1. Identity sheet: [`ID.md`](ID.md).
332
332
 
@@ -5,7 +5,7 @@
5
5
  [![CI](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml/badge.svg)](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml)
6
6
  [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
7
7
 
8
- > `0.2.0` (alpha). The API may still move. The default interface is still the 0.1.9 chat family (`chat`, `panel`, `copilot_rail`). The floating window is opt-in: `mini=True` on those calls, or `ask_coco(cwd)`. See [`doc/features/ask-coco/ask-coco.md`](doc/features/ask-coco/ask-coco.md).
8
+ > `0.2.2` (alpha). The API may still move. The default interface is still the 0.1.9 chat family (`chat`, `panel`, `copilot_rail`). The floating window is opt-in: `mini=True` on those calls, or `ask_coco(cwd)`. See [`doc/features/ask-coco/ask-coco.md`](doc/features/ask-coco/ask-coco.md).
9
9
 
10
10
  **Repo:** [github.com/lletourmy/streamlit-coco](https://github.com/lletourmy/streamlit-coco) *(temporary PyPI source)* · **Dev:** [streamlit-coco-dev](https://github.com/DevoteamSP/streamlit-coco-dev)
11
11
  **SDK docs:** [Cortex Code Agent SDK](https://docs.snowflake.com/en/user-guide/cortex-code-agent-sdk/cortex-code-agent-sdk)
@@ -284,7 +284,7 @@ Releases: develop here, sync and tag on [`lletourmy/streamlit-coco`](https://git
284
284
  | Role | Name | Contact |
285
285
  | --- | --- | --- |
286
286
  | Asset Owner | Laurent Letourmy | laurent.letourmy@devoteam.com |
287
- | Contributors | DevoteamSP / streamlit-coco contributors | [streamlit-coco-dev](https://github.com/DevoteamSP/streamlit-coco-dev) |
287
+ | Asset Contributor | Alentz Joseph | alentz.joseph@devoteam.com |
288
288
 
289
289
  **Snow Builders level:** N0 (alpha), targeting N1. Identity sheet: [`ID.md`](ID.md).
290
290
 
@@ -1,6 +1,6 @@
1
1
  # API reference: streamlit-coco
2
2
 
3
- Public surface of `import streamlit_coco as st_coco`, and of `streamlit_coco.policy` and `streamlit_coco.testing`. `0.2.0`: signatures may still move. Every signature below was read from the code.
3
+ Public surface of `import streamlit_coco as st_coco`, and of `streamlit_coco.policy` and `streamlit_coco.testing`. `0.2.2`: signatures may still move. Every signature below was read from the code.
4
4
 
5
5
  **Related:** [README](../README.md) · [Ask CoCo feature file](features/ask-coco/ask-coco.md) (the decisions and their reasons) · [Local deployment](deployment/local.md) · [SDK docs](https://docs.snowflake.com/en/user-guide/cortex-code-agent-sdk/cortex-code-agent-sdk)
6
6
 
@@ -48,6 +48,8 @@ def ask_coco(
48
48
  agent: Callable | None = None,
49
49
  connection: str | None = None,
50
50
  on_rail: Callable[[], Any] | None = None,
51
+ on_layout: Callable[[str], Any] | None = None,
52
+ split: bool = False,
51
53
  ) -> Window: ...
52
54
  ```
53
55
 
@@ -68,6 +70,8 @@ Mounts the launcher (bottom right) and the window, and returns the handle. Call
68
70
  | `agent` | A function `(emit) -> agent`, for tests and for another adapter. `None` gives the Cortex adapter, or the scripted agent when `STREAMLIT_COCO_AGENT=mock`. |
69
71
  | `connection` | Snowflake profile name. When the window is not connected yet, it connects with this profile. The Copilot rail passes the profile it is already using, so Minimize does not ask you to connect again. |
70
72
  | `on_rail` | A function `() -> None`. When set, the window header shows **Restore**. Using it calls the function, then reruns the page. `copilot_rail` uses it to bring its column back after Minimize. |
73
+ | `on_layout` | A function `(place: str) -> None`, called when the window changes place: `"closed"` (minimised), `"float"`, `"left"`, `"right"` (attached to that edge, the whole height of the page, `min(30rem, 100vw)` wide) or `"full"`. The page then reruns once, so it can lay itself out (a column, a narrower grid). Read the same value on any run with `get_window(key).place`. The browser also writes it on the page: `data-coco-place` on `<html>` and the width in `--coco-dock-w`, for the page's own CSS. |
74
+ | `split` | `True`: while the window is attached to the left or the right edge, the page takes the rest of the screen instead of being covered (Streamlit's app container moves over by the dock's width). Off by default. Full page does not split: there is nothing to share. |
71
75
 
72
76
  Raises `CocoError` before drawing anything when Streamlit is older than 1.55 or `cwd` does not name an existing directory.
73
77
 
@@ -255,6 +259,8 @@ class Features:
255
259
  session_details: bool = False,
256
260
  reasoning: bool = False,
257
261
  download_csv: bool = False,
262
+ dock: bool = True,
263
+ full_page: bool = True,
258
264
  ): ...
259
265
 
260
266
  # Features.all() builds one with everything on: the playground
@@ -268,6 +274,8 @@ A feature appears only when you switch it on or supply its data. A host that use
268
274
  | `steps` | One card per tool call. Off: only failed and refused steps stay, and the sentences CoCo said. |
269
275
  | `motion` | The window's animation. It ignores the system's reduced-motion setting. |
270
276
  | `copy` | Copy on answers, code and tables. |
277
+ | `dock` | Two icons in the window's header attach it to the left or the right edge, on the whole height of the page. The pressed icon puts the window back. The place is kept in the browser while the page lives. Off: the icons are not there. |
278
+ | `full_page` | An icon in the window's header makes it fill the page. The pressed icon puts the window back. Off: the icon is not there. |
271
279
  | `page_text` | Each message carries the text the page shows (more data leaves the browser). |
272
280
  | `page_exclude` | CSS selectors left out of that text. |
273
281
  | `attachments` | An `Attachments`: the field accepts files. |
@@ -716,5 +724,5 @@ python -m streamlit_coco.testing.domdiff [--ref HEAD] [--only REGEX]
716
724
  ## Package metadata
717
725
 
718
726
  ```python
719
- st_coco.__version__ # "0.2.0"
727
+ st_coco.__version__ # "0.2.2"
720
728
  ```
@@ -1,6 +1,6 @@
1
1
  # Ask CoCo: the window becomes the package's interface (0.2.0)
2
2
 
3
- Status: released in `0.2.0` (2026-10-20); the window is opt-in. The 0.1.9 chat family
3
+ Status: released in `0.2.0` (2026-10-20); the window is opt-in. `0.2.2` adds the window's places (left, right, full page), the page callback `on_layout` and `split`. The 0.1.9 chat family
4
4
  (`chat`, `panel`, `copilot_rail`) is the default again. Pass `mini=True` to one of those, or call
5
5
  `ask_coco(cwd)`, to mount the floating window. The sheet below is the other developer's record of
6
6
  the window; where it says the chat family is removed, the code on this branch keeps it.
@@ -158,6 +158,8 @@ st_coco.Features(
158
158
  session_details=False, # the menu offers Session details
159
159
  reasoning=False, # CoCo's reasoning as a fold among the steps
160
160
  download_csv=False, # Download CSV in the wider table view
161
+ dock=True, # header icons: attach the window to the left or the right edge
162
+ full_page=True, # header icon: the window fills the page
161
163
  )
162
164
  st_coco.Features.all() # everything on: the playground
163
165
  ```
@@ -359,6 +361,7 @@ Found when this file was checked against the code (the code stands; the text abo
359
361
  [`test-checklist.md`](test-checklist.md).
360
362
  - One window per page: two `ask_coco` calls with different keys draw two launchers at the same place.
361
363
  - The window ignores the system's reduced-motion setting **(client)**; `Features(motion=False)` restores it.
364
+ - The window has three places **(client)**: floating (default), attached to the left or the right edge on the full height of the page (30 rem wide), or the full page (one rem around, the conversation 52 rem wide in the middle). Three icons in the header, the pressed one goes back to floating; `Features(dock=False)` removes the two attach icons and `Features(full_page=False)` the full page one; both are on by default. A click on the title bar (not on one of its buttons) minimises the window. The window then covers Streamlit's header and sidebar (z-index 1000000, under its dialogs and popovers). The page is not pushed aside unless `ask_coco(split=True)`: then the app container takes the rest of the screen while the window is attached. `ask_coco(on_layout=fn)` calls `fn(place)` on each change (`closed`, `float`, `left`, `right`, `full`) and reruns the page once; `get_window(key).place` reads it on any run; the browser writes `data-coco-place` and `--coco-dock-w` on `<html>`. Each icon of the title bar shows its hint after 750 ms (no native tooltip).
362
365
  - With the keyboard, Allow and Decline are reached with Shift+Tab from the field; a request that arrives under a
363
366
  Streamlit dialog cannot be clicked until the dialog is closed.
364
367
 
@@ -1,6 +1,6 @@
1
1
  # Ask CoCo: live run checklist
2
2
 
3
- Needs the Cortex Code program and a Snowflake connection; costs credits. **Nothing below was run live for 0.2.0**:
3
+ Needs the Cortex Code program and a Snowflake connection; costs credits. **Nothing below was run live for 0.2.0 or 0.2.2**:
4
4
  the window, the conversation, the gate and the policy are verified on the scripted agent
5
5
  (`STREAMLIT_COCO_AGENT=mock`). Run in a scratch folder, never in a customer repository. Run the examples **without** `STREAMLIT_COCO_AGENT=mock`: with it the agent is scripted. Each example below is a `make` target of this repository's Makefile.
6
6
 
@@ -24,3 +24,7 @@ Program version read when the adapter was written: Cortex Code 1.1.104, SDK 1.0.
24
24
  | 14 | `make cwd-upload`: attach a file in the field, ask about it | The file is saved in `cwd_upload_workspace/_coco_uploads/<id>/` and read without a request; the sidebar uploader writes to `cwd_upload_workspace/_uploads/` | |
25
25
  | 15 | With `options.mcp_servers` set | Each MCP call asks, as a change | |
26
26
  | 16 | Disconnect the network during a run | "Connection lost", Reconnect; what was typed is kept | |
27
+ | 17 | `make modern-chat`, **Ask CoCo**, sidebar **Split**: open the window, connect, press the attach-right icon in the title bar | The window takes the full height at the right; the page (sidebar included) shrinks to the rest of the screen; the sidebar says `right`; the cards stack | |
28
+ | 18 | Same page: attach left, then **Full page**, then press the pressed icon, then Minimize | Left: the page moves right. Full page: the window covers the page, the conversation keeps a readable width. The pressed icon returns to floating. Minimize: the page gets its screen back (`closed`) | |
29
+ | 19 | Same page, a real run: ask something that makes CoCo ask a question while docked, and leave it waiting 30 s | The window does not blink and nothing of the page draws over it; Streamlit's header and menu bar are under the title bar | |
30
+ | 20 | `make app-builder`: on each screen open the window | The suggested questions follow the screen; Build this app (Brief) is sent to the window and asks before it writes; Fix with CoCo in the preview is sent to the window | |
@@ -3,7 +3,7 @@
3
3
  **Product:** `streamlit-coco` — a Streamlit component and Python library for embedding [Snowflake CoCo](https://www.snowflake.com/en/product/snowflake-coco/) (formerly Cortex Code) in Streamlit applications.
4
4
 
5
5
  **Author:** —
6
- **Status:** `0.2.0` published on 2026-10-20. The 0.1.9 chat family stays the default; Ask CoCo is opt-in. Next on the [roadmap](roadmap.md): API mode (no CLI) as `0.3.0`, then `0.3.5` / `0.4.0`.
6
+ **Status:** `0.2.2` prepared on 2026-10-25, not yet published (`0.2.1` published on 2026-10-20: `0.2.0` with the asset contributor named in the README). The 0.1.9 chat family stays the default; Ask CoCo is opt-in. Next on the [roadmap](roadmap.md): API mode (no CLI) as `0.3.0`, then `0.3.5` / `0.4.0`.
7
7
  **Last updated:** 2026-10-14
8
8
 
9
9
  ---
@@ -2,7 +2,9 @@
2
2
 
3
3
  **Owner:** streamlit-coco maintainers
4
4
  **Target tag date:** 2026-10-20
5
- **GitHub Release / PyPI:** see *Published URLs* below (filled in after the tag)
5
+ **GitHub Release (publisher):** https://github.com/lletourmy/streamlit-coco/releases/tag/v0.2.0
6
+ **GitHub Release (org mirror):** https://github.com/DevoteamSP/streamlit-coco/releases/tag/v0.2.0
7
+ **PyPI:** https://pypi.org/project/streamlit-coco/0.2.0/
6
8
 
7
9
  Do not run `make sync-release` or tag `v0.2.0` until Product docs + QA are done.
8
10
 
@@ -41,13 +43,13 @@ Outreach drafts: [`../../../doc-dev/releases/0.2.0/`](../../../doc-dev/releases/
41
43
 
42
44
  ## 4. GitHub + PyPI (required before this is public)
43
45
 
44
- Follow [`doc/deployment/publish.md`](../../deployment/publish.md). **Left undone on purpose.**
46
+ Follow [`doc/deployment/publish.md`](../../deployment/publish.md). Done 2026-10-20.
45
47
 
46
- - [ ] Merge to `-dev` `main`
47
- - [ ] `COMMIT=1 PUSH=1 MESSAGE="Release 0.2.0" make sync-release`
48
- - [ ] Tag `v0.2.0` on public `streamlit-coco` and push
49
- - [ ] Confirm GitHub Release + PyPI wheel
50
- - [ ] GitHub Release body: CHANGELOG excerpt + screenshots
48
+ - [x] Merge to `-dev` `main` ([#17](https://github.com/DevoteamSP/streamlit-coco-dev/pull/17); #16, the same lock bumps, closed as superseded)
49
+ - [x] `COMMIT=1 PUSH=1 MESSAGE="Release 0.2.0" make sync-release` to `lletourmy/streamlit-coco` and to `DevoteamSP/streamlit-coco` (identical trees)
50
+ - [x] Tag `v0.2.0` on public `streamlit-coco` and push (also mirrored on `DevoteamSP/streamlit-coco`)
51
+ - [x] Confirm GitHub Release + PyPI wheel; SBOM attached to both Releases. A clean `pip install "streamlit-coco[sdk]==0.2.0"` gives 0.2.0 and the 0.1.9 API guard passes against it
52
+ - [x] GitHub Release body: the CHANGELOG `[0.2.0]` section (written by the workflow). Screenshots are in the repository, not in the body
51
53
 
52
54
  ## 5. Narrative & outreach (strongly recommended — `doc-dev`)
53
55
 
@@ -55,14 +57,15 @@ Follow [`doc/deployment/publish.md`](../../deployment/publish.md). **Left undone
55
57
  - [x] Medium draft — [`medium.md`](../../../doc-dev/releases/0.2.0/medium.md) (not posted)
56
58
  - [x] Community pass — [`COMMUNITY.md`](../../../doc-dev/releases/0.2.0/COMMUNITY.md) (not posted)
57
59
  - [ ] Refresh [`doc/marketing/one-pager.md`](../../marketing/one-pager.md) if positioning changed
58
- - [ ] Paste published URLs below
60
+ - [x] Paste published URLs below
59
61
 
60
62
  ### Published URLs
61
63
 
62
64
  | Channel | URL | Date |
63
65
  | --- | --- | --- |
64
- | GitHub Release | | |
65
- | PyPI | | |
66
+ | GitHub Release (lletourmy) | https://github.com/lletourmy/streamlit-coco/releases/tag/v0.2.0 | 2026-10-20 |
67
+ | GitHub Release (DevoteamSP) | https://github.com/DevoteamSP/streamlit-coco/releases/tag/v0.2.0 | 2026-10-20 |
68
+ | PyPI | https://pypi.org/project/streamlit-coco/0.2.0/ | 2026-10-20 |
66
69
  | LinkedIn | | |
67
70
  | Medium | | |
68
71
  | Streamlit Forum | | |
@@ -0,0 +1,39 @@
1
+ # Release checklist — 0.2.1
2
+
3
+ **Owner:** streamlit-coco maintainers
4
+ **Target tag date:** 2026-10-20
5
+ **GitHub Release (publisher):** https://github.com/lletourmy/streamlit-coco/releases/tag/v0.2.1
6
+ **GitHub Release (org mirror):** https://github.com/DevoteamSP/streamlit-coco/releases/tag/v0.2.1
7
+ **PyPI:** https://pypi.org/project/streamlit-coco/0.2.1/
8
+
9
+ README patch of [`0.2.0`](../0.2.0/CHECKLIST.md). No outreach: nothing user-visible changed.
10
+
11
+ ---
12
+
13
+ ## 1. Product docs
14
+
15
+ - [x] **`pyproject.toml`** and `streamlit_coco.__version__`: `0.2.1`
16
+ - [x] **`CHANGELOG.md`**: `## [0.2.1] — 2026-10-20` (the GitHub Release body is this section)
17
+ - [x] **`doc/roadmap.md`**, **`doc/prd.md`**, **`doc/releases/README.md`**, **`README.md`**, **`doc/api.md`**: version and status
18
+ - [x] Locked dependencies unchanged (only the `streamlit-coco` entry of the two `uv.lock` files)
19
+
20
+ ## 2. Quality gates
21
+
22
+ - [x] `make check`: ruff, 637 passed, 1 skipped, 742 subtests (2026-10-20)
23
+ - [x] Built wheel and sdist pass `twine check`
24
+
25
+ ## 3. GitHub + PyPI
26
+
27
+ Follow [`doc/deployment/publish.md`](../../deployment/publish.md).
28
+
29
+ - [x] `COMMIT=1 PUSH=1 MESSAGE="Release 0.2.1" make sync-release` to `lletourmy/streamlit-coco` and `DevoteamSP/streamlit-coco` (identical trees)
30
+ - [x] Tag `v0.2.1` on both and push
31
+ - [x] Confirm the GitHub Releases (wheel, sdist, SBOM) and the PyPI files; the PyPI page shows the new README, and a clean `pip install "streamlit-coco[sdk]==0.2.1"` gives 0.2.1 with the 0.1.9 API guard passing. PyPI's main listing served 0.2.0 for a few minutes after the upload (cache); the version page and the simple index had 0.2.1 at once
32
+
33
+ ### Published URLs
34
+
35
+ | Channel | URL | Date |
36
+ | --- | --- | --- |
37
+ | GitHub Release (lletourmy) | https://github.com/lletourmy/streamlit-coco/releases/tag/v0.2.1 | 2026-10-20 |
38
+ | GitHub Release (DevoteamSP) | https://github.com/DevoteamSP/streamlit-coco/releases/tag/v0.2.1 | 2026-10-20 |
39
+ | PyPI | https://pypi.org/project/streamlit-coco/0.2.1/ | 2026-10-20 |
@@ -0,0 +1,11 @@
1
+ # Release kit — 0.2.1
2
+
3
+ A README patch of [`0.2.0`](../0.2.0/): the ownership table names Alentz Joseph (Devoteam) as asset contributor.
4
+ No code change. PyPI shows the README of the version it serves, and a published file cannot be changed, so the
5
+ new README needed a new version.
6
+
7
+ | File | Purpose |
8
+ | --- | --- |
9
+ | [CHECKLIST.md](CHECKLIST.md) | Pre-release gate and the published URLs |
10
+
11
+ Feature narrative and screenshots: [`../0.2.0/`](../0.2.0/). Mechanics: [`../../deployment/publish.md`](../../deployment/publish.md).
@@ -0,0 +1,79 @@
1
+ # Release checklist — 0.2.2
2
+
3
+ **Owner:** streamlit-coco maintainers
4
+ **Target tag date:** 2026-10-25
5
+ **GitHub Release / PyPI:** see *Published URLs* below (filled in after the tag)
6
+
7
+ Do not run `make sync-release` or tag `v0.2.2` until Product docs + QA are done.
8
+
9
+ Outreach drafts: [`../../../doc-dev/releases/0.2.2/`](../../../doc-dev/releases/0.2.2/) (dev-only, not public sync).
10
+
11
+ ---
12
+
13
+ ## 1. Product docs (required)
14
+
15
+ - [x] **`pyproject.toml`** — `version = "0.2.2"` (and `streamlit_coco.__version__`, `uv.lock`)
16
+ - [x] **`CHANGELOG.md`** — `[Unreleased]` → `## [0.2.2] — 2026-10-25`; fresh `[Unreleased]` left at top
17
+ - [x] **`CHANGELOG.md`** at tag time: heading date `2026-10-25` is the tag date (the GitHub Release body is this section)
18
+ - [x] **`doc/roadmap.md`** — Status / Last updated / Last cut; `v0.2.2` section; Now is still API mode (`0.3.0`)
19
+ - [ ] **Public GitHub issues** — not touched. Close resolved, comment on progressed, propose new ones from `doc/roadmap.md`
20
+ - [x] **`doc/prd.md`** — status line
21
+ - [x] **`doc/api.md`** — version line; `Features(dock, full_page)`; `ask_coco(on_layout, split)`
22
+ - [x] Feature narrative: [`features/ask-coco/ask-coco.md`](../../features/ask-coco/ask-coco.md) (window places, callback, split, hints, title-bar click)
23
+ - [x] Streamlit floor unchanged (**1.55**); `tests/test_streamlit_floor.py` passes
24
+ - [x] Public kit: `doc/releases/0.2.2/`
25
+ - [x] Outreach kit: `doc-dev/releases/0.2.2/` (drafts only)
26
+
27
+ ## 2. Quality gates (required)
28
+
29
+ - [x] `make check` — ruff, 637 passed, 1 skipped, 742 subtests (2026-10-25, Streamlit 1.66.1)
30
+ - [x] `make e2e` — 15 browser tests (the window, and the 0.1.9 chat helpers on their own harness), including the new `tests/e2e/test_window_layout.py` (2026-10-25, Streamlit 1.66.1)
31
+ - [x] `make test-all` — the above and `pip-audit`: **no known vulnerabilities** (2026-10-25). The first run found 41 in the development lock (`pillow 12.3.0`: 37, fixed in 13.0.0; `filelock 3.32.0`: 3, fixed in 4.2.1; `certifi 2026.7.22`: 1, fixed in 2026.10.19). Fixed by `uv lock --upgrade-package certifi --upgrade-package filelock --upgrade-package pillow --upgrade-package streamlit`: Streamlit 1.60.0 → 1.66.1 (it capped `pillow<13`), `pillow` 13.0.0, `certifi` 2026.10.23; and a `[tool.uv] override-dependencies` for `filelock>=4.2.1` on Python 3.11+ (4.2.4 locked), because `snowflake-connector-python` (via `cortex-code-agent-sdk 1.0.7`) still says `filelock<4` but only uses `FileLock`, `BaseFileLock` and `Timeout`. The override is in the development lock only, not in the wheel; Python 3.10 keeps `filelock` 3.x. The package floor stays Streamlit 1.55; the screenshots were captured on 1.66.1 (the locked version)
32
+ - [x] **0.1.9 compatibility** — `tests/test_compat_019.py` holds the public API to `tests/fixtures/api_0.1.9.json`; every new parameter is keyword-only, last, with a default (2026-10-25)
33
+ - [x] Manual feature checklists — [`features/ask-coco/`](../../features/ask-coco/) (rows 17–20 are new). Run by the maintainer on 2026-10-25 against a real agent; the Result column of the table is not filled in
34
+ - [x] Live CoCo smoke (`make modern-chat`, `make app-builder`, `make bi-semantic` without `STREAMLIT_COCO_AGENT=mock`). Run by the maintainer on 2026-10-25; the outcome of each step is not written down here
35
+ - [x] Flaky once, passes alone and in the full runs: `test_attached_file_lands_in_the_folder` (a slow machine)
36
+
37
+ ## 3. Visuals (required for community posts)
38
+
39
+ - [x] Screenshots captured per [`screenshots/README.md`](screenshots/README.md) (2026-10-25, scripted agent): `hero.png`, `01-full-page.png`, `02-hint.png`
40
+ - [x] LinkedIn visual [`visual-linkedin-0.2.2.png`](../../../doc-dev/releases/0.2.2/visual-linkedin-0.2.2.png) (dev-only), super title `streamlit-coco 0.2.2`
41
+ - [ ] Optional: 15–30s screen recording (float → attach right → full page → back)
42
+
43
+ ## 4. GitHub + PyPI (required before this is public)
44
+
45
+ Follow [`doc/deployment/publish.md`](../../deployment/publish.md). **Left undone on purpose.**
46
+
47
+ - [ ] Merge to `-dev` `main`
48
+ - [ ] `COMMIT=1 PUSH=1 MESSAGE="Release 0.2.2" make sync-release`
49
+ - [ ] Tag `v0.2.2` on public `streamlit-coco` and push
50
+ - [ ] Confirm GitHub Release + PyPI wheel
51
+ - [ ] GitHub Release body: CHANGELOG excerpt + `hero.png`
52
+
53
+ ## 5. Narrative & outreach (strongly recommended — `doc-dev`)
54
+
55
+ - [x] LinkedIn draft — [`linkedin.md`](../../../doc-dev/releases/0.2.2/linkedin.md) (not posted)
56
+ - [x] Medium draft — [`medium.md`](../../../doc-dev/releases/0.2.2/medium.md) (not posted)
57
+ - [x] Community pass — [`COMMUNITY.md`](../../../doc-dev/releases/0.2.2/COMMUNITY.md) (not posted)
58
+ - [ ] Refresh [`doc/marketing/one-pager.md`](../../marketing/one-pager.md) if positioning changed
59
+ - [ ] Paste published URLs below
60
+
61
+ ### Published URLs
62
+
63
+ | Channel | URL | Date |
64
+ | --- | --- | --- |
65
+ | GitHub Release | | |
66
+ | PyPI | | |
67
+ | LinkedIn | | |
68
+ | Medium | | |
69
+ | Streamlit Forum | | |
70
+ | Snowflake Community | | |
71
+ | Other | | |
72
+
73
+ ## 6. Sign-off
74
+
75
+ | Role | Name | Date |
76
+ | --- | --- | --- |
77
+ | Engineering | | |
78
+ | Docs / product | | |
79
+ | Marketing / community | | |
@@ -0,0 +1,42 @@
1
+ # Release notes bank — 0.2.2
2
+
3
+ Freeform. Feed LinkedIn / Medium / GitHub Release when this cut is published.
4
+
5
+ ## Headline (one line)
6
+
7
+ > Ask CoCo can dock to the side of your app, and your page makes room for it.
8
+
9
+ ## Top 3 user-visible wins
10
+
11
+ 1. **Three icons in the title bar** — attach the window to the left or the right edge (full height), or fill the page. The pressed icon puts it back. A click on the title bar minimises. Each icon shows a hint after 750 ms.
12
+ 2. **The page knows** — `ask_coco(on_layout=fn)` and `get_window(key).place` say where the window is; `split=True` gives the page the rest of the screen.
13
+ 3. **No more blink** — while the window waited for an answer, Streamlit faded the stale component every poll, and the page's own layers drew over the window.
14
+
15
+ ## Use cases to feature
16
+
17
+ 1. A copilot beside a working app: the page keeps its screen, the agent keeps its column (`make modern-chat`, Split)
18
+ 2. App Builder and BI → Semantic with Ask CoCo only: Build, Fix and the BI jobs go to one conversation, and each screen suggests its own questions
19
+
20
+ ## Learnings (candid)
21
+
22
+ - A fixed element inside a component is only as stable as its ancestors: one `opacity: 0.8` on the container made it a stacking context, and the page's dataframes and headers drew over a window with `z-index: 8`.
23
+ - Streamlit's header, menu bar and sidebar sit at 999990–999995. A full-height window has to be above them, and below dialogs and popovers.
24
+ - The page does not need a new API to share the screen: Streamlit's app container is absolutely positioned, so moving its `left` or `right` by the dock width is enough, and nothing fixed in the page breaks.
25
+ - The three-icon title bar needed its own hint: the browser's `title` takes about a second and cannot be styled.
26
+
27
+ ## Quotes / soundbites
28
+
29
+ - “The window docks. The page makes room.”
30
+ - “One agent surface, on every screen. Each screen suggests its own questions.”
31
+
32
+ ## Test plan
33
+
34
+ - `make test-all` — green on 2026-10-25: ruff, 637 passed, 1 skipped, 742 subtests; 15 browser tests; `pip-audit` clean (Streamlit 1.66.1 locked).
35
+ - Browser tests: `tests/e2e/test_window_layout.py` (places, switches, callback and split, hint, title bar over the header).
36
+ - Not run: the manual live checklists (`features/ask-coco/test-checklist.md`) and the live smoke against Cortex Code.
37
+
38
+ ## Explicit non-goals this cut
39
+
40
+ - Public sync (`make sync-release`), the tag and PyPI
41
+ - API mode (`0.3.0`)
42
+ - A resizable dock (the width is `min(30rem, 100vw)`)
@@ -0,0 +1,17 @@
1
+ # Release kit — 0.2.2
2
+
3
+ Feature cut: **Ask CoCo leaves the corner.** The window attaches to the left or the right edge on the full height of the page, or fills the page. The page is told where the window is (`ask_coco(on_layout=)`, `get_window(key).place`) and can take the rest of the screen (`ask_coco(split=True)`). Fix: the window no longer blinks while it waits.
4
+
5
+ Prepared `2026-10-25`. **Not published.**
6
+
7
+ | File | Purpose |
8
+ | --- | --- |
9
+ | [CHECKLIST.md](CHECKLIST.md) | Master pre-release gate |
10
+ | [NOTES.md](NOTES.md) | Themes / learnings |
11
+ | [screenshots/README.md](screenshots/README.md) | Capture brief |
12
+
13
+ Outreach (dev-only): [`../../../doc-dev/releases/0.2.2/`](../../../doc-dev/releases/0.2.2/).
14
+
15
+ Feature: [`../../features/ask-coco/ask-coco.md`](../../features/ask-coco/ask-coco.md).
16
+
17
+ Mechanics: [`../../deployment/publish.md`](../../deployment/publish.md) · QA: [`../../testing.md`](../../testing.md).
@@ -0,0 +1,45 @@
1
+ # Screenshots — 0.2.2
2
+
3
+ Store finals in this folder. Prefer PNG. Captured 2026-10-25 on the scripted agent (`STREAMLIT_COCO_AGENT=mock`), Streamlit 1.66.1, 2x.
4
+
5
+ **Demo:** `make modern-chat` (Ask CoCo first; the Split screen selector is in the sidebar).
6
+
7
+ ## Required shots
8
+
9
+ | File | Scene | Why |
10
+ | --- | --- | --- |
11
+ | `hero.png` | Ask CoCo attached to the right, **Split** on: the page beside it, a permission request waiting | LinkedIn + GitHub Release |
12
+ | `01-full-page.png` | The window on the **Full page** | The second place |
13
+ | `02-hint.png` | The title bar with the hint under the pressed icon (750 ms) | The icons |
14
+
15
+ ## Optional
16
+
17
+ | File | Scene |
18
+ | --- | --- |
19
+ | `demo.gif` or `demo.mp4` | 15–30s: float → attach right (the page makes room) → full page → back |
20
+
21
+ ## Capture tips
22
+
23
+ - `STREAMLIT_COCO_AGENT=mock` needs no Snowflake login
24
+ - No real connection name or home folder in a picture: the capture runs with a throw-away `HOME` (`/tmp/coco_demo`)
25
+
26
+ ## After capture
27
+
28
+ - [x] Drop files here (`hero.png`, `01-full-page.png`, `02-hint.png`)
29
+ - [x] Reference paths from `doc-dev/releases/0.2.2/linkedin.md`
30
+ - [ ] Reference them in the GitHub Release body when it is created
31
+ - [ ] `demo.gif` / `demo.mp4`: not recorded
32
+
33
+ ## What the pictures show, and what they do not
34
+
35
+ - The agent is scripted. The request ("Allow CoCo to list files in the .git folder?") is the real policy and gate; the model and the program are scripted. Nothing was run.
36
+ - The sidebar of `hero.png` is the demo's own (Surfaces, Split screen, the place the window reported through `on_layout`).
37
+
38
+ ## Regenerate
39
+
40
+ ```bash
41
+ uv run --extra e2e python scripts/capture_release_screens.py # split full hint, into this folder
42
+ uv run --extra e2e python scripts/capture_release_screens.py split # one of: split full hint
43
+ ```
44
+
45
+ Look at each picture before it goes in. The script waits for the real state (the request card, the reported place, the visible hint).
@@ -2,7 +2,7 @@
2
2
 
3
3
  Each cut gets `doc/releases/X.Y.Z/` for **ship hygiene** (docs, QA, screenshots).
4
4
 
5
- Current cut: [`0.2.0/`](0.2.0/). Previous cut: [`0.1.9/`](0.1.9/).
5
+ Current cut: [`0.2.2/`](0.2.2/). Previous cut: [`0.2.1/`](0.2.1/), a README patch of [`0.2.0/`](0.2.0/). Previous feature cut: [`0.1.9/`](0.1.9/).
6
6
 
7
7
  **Community posts and articles** live under **`doc-dev/releases/X.Y.Z/`** (never synced to public `streamlit-coco`).
8
8
 
@@ -2,10 +2,10 @@
2
2
 
3
3
  Living plan. Product detail: [doc/prd.md](prd.md). Shipped history: [CHANGELOG.md](../CHANGELOG.md).
4
4
 
5
- **Status:** `0.2.0` published on 2026-10-20. The 0.1.9 chat family stays the default; Ask CoCo is opt-in ([feature file](features/ask-coco/ask-coco.md)). The last public release is `0.2.0` ([pypi.org/project/streamlit-coco](https://pypi.org/project/streamlit-coco/)). Next: API mode, as `0.3.0`.
6
- **Publisher:** temporary Trusted Publisher on [lletourmy/streamlit-coco](https://github.com/lletourmy/streamlit-coco); public tree also synced to [DevoteamSP/streamlit-coco](https://github.com/DevoteamSP/streamlit-coco). Used for this cut (`0.2.0`).
7
- **Last updated:** 2026-10-20
8
- **Last cut:** [releases/0.2.0/](releases/0.2.0/)
5
+ **Status:** `0.2.2` prepared on 2026-10-25, not yet published. `0.2.1` was published on 2026-10-20 (the README of `0.2.0` with the asset contributor named; no code change), the same day as `0.2.0`. The 0.1.9 chat family stays the default; Ask CoCo is opt-in ([feature file](features/ask-coco/ask-coco.md)). The last public release is `0.2.1` ([pypi.org/project/streamlit-coco](https://pypi.org/project/streamlit-coco/)). Next: API mode, as `0.3.0`.
6
+ **Publisher:** temporary Trusted Publisher on [lletourmy/streamlit-coco](https://github.com/lletourmy/streamlit-coco); public tree also synced to [DevoteamSP/streamlit-coco](https://github.com/DevoteamSP/streamlit-coco). Used for this cut (`0.2.2`).
7
+ **Last updated:** 2026-10-25
8
+ **Last cut:** [releases/0.2.2/](releases/0.2.2/) (previous: [releases/0.2.1/](releases/0.2.1/), a README patch of [releases/0.2.0/](releases/0.2.0/))
9
9
  **Next cuts:** `0.3.0` API mode (no CLI), branch `0.3.0-remote-api` → `0.3.5` Streamlit in Snowflake → `0.4.0` Native App
10
10
 
11
11
  > **Before every release:** complete [releases/X.Y.Z/CHECKLIST.md](releases/README.md) (CHANGELOG, this roadmap, PRD, screenshots, [public issues](https://github.com/DevoteamSP/streamlit-coco/issues)) and outreach under `doc-dev/releases/` in the development repository, then [deployment/publish.md](deployment/publish.md).
@@ -28,6 +28,18 @@ Manual checklists: [doc/features/README.md](features/README.md) — re-run befor
28
28
 
29
29
  ---
30
30
 
31
+ ## v0.2.2 — Window places and the page callback
32
+
33
+ Prepared `2026-10-25`, not yet published.
34
+
35
+ | Item | Status | Ref |
36
+ | ---- | ------ | --- |
37
+ | Header icons: attach the window to the left or the right edge, or fill the page; `Features(dock=, full_page=)` switch them off | ✅ | [features/ask-coco/ask-coco.md](features/ask-coco/ask-coco.md) |
38
+ | `ask_coco(on_layout=, split=)` and `get_window(key).place`: the page learns where the window is and can take the rest of the screen | ✅ | `make modern-chat` (Split screen selector) |
39
+ | A click on the title bar minimises; hints on the title-bar icons after 750 ms | ✅ | |
40
+ | Fix: the window no longer blinks while it waits (Streamlit faded the stale component) | ✅ | |
41
+ | App Builder and BI → Semantic: Ask CoCo only, on every screen, with the questions of each screen | ✅ | `make app-builder` · `make bi-semantic` |
42
+
31
43
  ## v0.2.0 — Ask CoCo window
32
44
 
33
45
  Shipped `2026-10-20`. The 0.1.9 chat family stays.
@@ -23,7 +23,7 @@ make e2e
23
23
  ## What the tests cover
24
24
 
25
25
  - **Unit tests** (`tests/`): the conversation, the gate, the policy (paths, secrets, listed commands, SQL), the scripted agent, labels, attachments, `render_output_field`, uploads, the headless example, and **0.1.9 compatibility**: `test_compat_019.py` compares the current API with `tests/fixtures/api_0.1.9.json` (no name, module, member or parameter of 0.1.9 may go, move, become required or change its default; a new parameter needs a default), and `test_copilot_rail.py`, `test_rich_text.py`, `test_classic_core.py` and `test_classic_smoke.py` are the 0.1.9 tests of the chat family, kept. `tests/test_window.py` checks every fixture of `streamlit_coco.testing.VIEWS` against the conversation's contract, and runs a Node check of the window's script when Node is installed.
26
- - **Browser tests** (`tests/e2e/`): a walk of the default window (connect, a read, Allow, Decline, queue, Take back, Stop, New conversation), the code block's copy button, "Latest exchange only", a file attached in the field and saved in `<cwd>/_coco_uploads/<id>/`, and the page's `cwd_uploader`.
26
+ - **Browser tests** (`tests/e2e/`): a walk of the default window (connect, a read, Allow, Decline, queue, Take back, Stop, New conversation), the code block's copy button, "Latest exchange only", a file attached in the field and saved in `<cwd>/_coco_uploads/<id>/`, and the page's `cwd_uploader`; the window's places (`test_window_layout.py`): attach left or right, full page, the switches, the page callback and `split`, the hint after 750 ms, the title bar over the page's header.
27
27
  - **Browser tests of the chat helpers** (`tests/e2e_classic/`): the 0.1.9 tests, unchanged, on a CoCo-free harness: SQL highlighting and the copy button, transcript windowing (**Load earlier**), and the sidebar upload into `cwd`.
28
28
  - What no test covers is listed plainly, row by row, in the no-regression table of [`features/ask-coco/ask-coco.md`](features/ask-coco/ask-coco.md) (section 3).
29
29
 
@@ -1,6 +1,6 @@
1
1
  # App Builder
2
2
 
3
- Example for [streamlit-coco](https://github.com/DevoteamSP/streamlit-coco): a **library of app types**. Pick a type, fill its **brief** (context, what it allows, what it does not, questions), optionally attach **sketches** of the app you want, then CoCo writes a Streamlit app under approval. Preview and **Fix with CoCo** reuse `copilot_rail()` + `app_viewer()`.
3
+ Example for [streamlit-coco](https://github.com/DevoteamSP/streamlit-coco): a **library of app types**. Pick a type, fill its **brief** (context, what it allows, what it does not, questions), optionally attach **sketches** of the app you want, then CoCo writes a Streamlit app under approval. The agent is **Ask CoCo** (`ask_coco()`, the window at the bottom right) on every screen, with the suggested questions of each screen; Preview and **Fix with CoCo** use `app_viewer()`.
4
4
 
5
5
  Product brief: [`doc/features/app-builder/UX.md`](../../doc/features/app-builder/UX.md).
6
6
 
@@ -29,7 +29,7 @@ uv run --project ../.. --extra dev --with 'streamlit-extras>=1.3.0' python -m st
29
29
  | Welcome | You never start from a blank `app.py`; three steps |
30
30
  | Library | **Resume** project cards; **Create a new project** type cards (icon, name, users, grounding, screenshot) |
31
31
  | Brief | Columns: your brief + sketches · type questions |
32
- | Studio | **Build this app** / regenerate; header **Open Copilot** and **Open Preview**. Copilot has an **App brief** expander (owner brief + questions; **Save** / **Save & regenerate**) |
32
+ | Studio | **Build this app** / regenerate; header **Open Preview**. Preview has an **App brief** expander (owner brief + questions; **Save** / **Save & regenerate**). **Build this app** and **Fix with CoCo** are sent to Ask CoCo |
33
33
  | Admin | Type cards on the left (Edit / Delete / Create); paired Topics / Context and Allows / Does not; question cards; **Guidelines skills** editors for `types/shared/SKILL.md` and the type `SKILL.md` |
34
34
 
35
35
  **Build with CoCo** needs the CLI. **Build demo scaffold** writes a disconnected `streamlit_app.py` from the fixture CSV (no warehouse, no agent).
@@ -65,5 +65,5 @@ Each app type is one folder under `types/`. The shared generation skill sits nex
65
65
 
66
66
  Agent / generated files:
67
67
 
68
- - Host cwd for Copilot: `examples/app_builder/out/<slug>/` (`brief.json`, `BRIEF.md`, `sketches/`, `streamlit_app.py`)
68
+ - Working folder of Ask CoCo: `examples/app_builder/out/<slug>/` (`brief.json`, `BRIEF.md`, `sketches/`, `streamlit_app.py`)
69
69
  - Preview: `app_viewer()` on that folder (port **8513**)