streamlit-coco 0.2.1__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.
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/CHANGELOG.md +26 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/ID.md +2 -2
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/PKG-INFO +2 -2
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/README.md +1 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/api.md +10 -2
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/ask-coco.md +4 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/test-checklist.md +5 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/prd.md +1 -1
- streamlit_coco-0.2.2/doc/releases/0.2.1/CHECKLIST.md +39 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/CHECKLIST.md +79 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/NOTES.md +42 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/README.md +17 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/01-full-page.png +0 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/02-hint.png +0 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/README.md +45 -0
- streamlit_coco-0.2.2/doc/releases/0.2.2/screenshots/hero.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/README.md +1 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/roadmap.md +16 -4
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/testing.md +1 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/README.md +3 -3
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/app.py +17 -69
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/actions.py +19 -10
- streamlit_coco-0.2.2/examples/app_builder/engine/coco_window.py +222 -0
- streamlit_coco-0.2.2/examples/app_builder/engine/jobs.py +42 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/preview_panel.py +5 -18
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/brief.py +0 -4
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/studio.py +3 -6
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/welcome.py +5 -4
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/README.md +7 -7
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/app.py +23 -73
- streamlit_coco-0.2.2/examples/bi_to_semantic/engine/coco_jobs.py +97 -0
- streamlit_coco-0.2.2/examples/bi_to_semantic/engine/coco_window.py +234 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/preview_panel.py +2 -11
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/access_rules.py +10 -14
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/generate.py +4 -24
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/load.py +3 -3
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/welcome.py +8 -8
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/e2e_ux_harness.py +16 -3
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/modern_chat/app.py +42 -11
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/pyproject.toml +8 -1
- streamlit_coco-0.2.2/release_notes.txt +25 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/scripts/capture_release_screens.py +54 -5
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/__init__.py +1 -1
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/features.py +2 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/labels.py +4 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco.css +21 -2
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco.js +43 -4
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/window.py +58 -4
- streamlit_coco-0.2.2/tests/e2e/test_window_layout.py +135 -0
- streamlit_coco-0.2.1/doc/releases/0.2.1/CHECKLIST.md +0 -39
- streamlit_coco-0.2.1/examples/app_builder/engine/coco_window.py +0 -111
- streamlit_coco-0.2.1/examples/app_builder/engine/copilot_panel.py +0 -237
- streamlit_coco-0.2.1/examples/app_builder/engine/jobs.py +0 -157
- streamlit_coco-0.2.1/examples/bi_to_semantic/engine/coco_jobs.py +0 -258
- streamlit_coco-0.2.1/examples/bi_to_semantic/engine/coco_window.py +0 -133
- streamlit_coco-0.2.1/examples/bi_to_semantic/engine/copilot_panel.py +0 -227
- streamlit_coco-0.2.1/release_notes.txt +0 -7
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/.gitignore +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/.python-version +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/AGENTS.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/CONTRIBUTING.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/LICENSE +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/Makefile +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/deployment/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/deployment/local.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/deployment/publish.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/app-builder/UX.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/app-builder/app-builder.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/app-builder/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/app-viewer/app-viewer.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/app-viewer/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/approvals/approvals.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/approvals/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/.gitattributes +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22Data.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22OnPage.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22OnPage1366.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/CoCo22Waiting.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/canvas.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/cockpit.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/cockpit22.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/canvas/project/coco22.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/index.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22Data.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22OnPage.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22OnPage1366.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/ask-coco/design/preview/CoCo22Waiting.dc.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/chat-ccv2/chat-ccv2.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/chat-ccv2/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/copilot-rail/copilot-rail.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/copilot-rail/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/file-upload/file-upload.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/file-upload/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/headless/headless.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/headless/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/panel/panel.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/panel/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/structured-output/structured-output.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/structured-output/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/text-renderer/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/text-renderer/text-renderer.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/tools-display/SPEC.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/tools-display/test-checklist.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/features/tools-display/tools-display.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/marketing/demo.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/marketing/one-pager.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/methodology/delivery_plan.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/methodology/workshops/w01-setup-architecture-first-app.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/methodology/workshops.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/01-upload.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/03-approval.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.5/screenshots/hero.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/01-copilot-rail.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/02-tableau-generate.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/03-preview.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/04-estate-map.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.6/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/fix_with_coco_feature.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/powerbi_load.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/powerbi_streamlit_app.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/streamlit_app_generation.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.7/screenshots/toolbar.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.8.1/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.9/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.9/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.9/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.1.9/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/01-minimize.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/02-simple-chat.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.0/screenshots/hero.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/0.2.1/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/_template/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/_template/NOTES.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/_template/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/releases/_template/screenshots/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/security/findings-report.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/security/threat-model.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/coco_rail.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/html_frame.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/i18n.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/pack.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/quiz.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/app/streamlit_app.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/advanced.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/enablement.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/expert.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/certifications/user.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/deck.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/deck.pdf +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/demo-guide.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/dsp_logo.png +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/guided-tour.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/hands-on.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/intro.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/enablement/setup.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/help.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/index.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/architecture.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/configuration.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/data-and-contracts.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/extending.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/install.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/limits.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/operations.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/security.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/testing-and-ci.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/technical-guide/sections/upgrade-and-release.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/01-simple.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/02-intermediate.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training/03-advanced.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/training.yml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/index.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/concepts.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/faq.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/getting-started.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/outputs.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-api.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-commands.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/reference-examples.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-add-file-uploads.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-build-a-minimal-app.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-configure-tool-approvals.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-headless.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-run-the-example-apps.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.es.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.es.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.fr.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.fr.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/doc/training/user-guide/sections/task-use-structured-output.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/.streamlit/config.toml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/brief.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/brief_form.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/catalog.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/generate.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/paths.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/profile.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/scaffold.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/skills.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/engine/state.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/local_sales.csv +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/prompt_pack.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/quality_orders.csv +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/sales_sv.csv +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/sample_call.txt +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/fixtures/standup_notes.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/pyproject.toml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/admin.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/screens/library.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/call-transcription/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/call-transcription/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/csv-explorer/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/csv-explorer/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/data-quality/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/data-quality/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/meeting-recap/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/meeting-recap/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/prompt-library/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/prompt-library/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/CHECKLIST.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/reference/streamlit_app.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/semantic-kpis/type.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/app_builder/types/shared/SKILL.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/approval_gate.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/.streamlit/config.toml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/board.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/epic.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/release.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/app_pages/ticket.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-01.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-02.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/epics/E-03.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/policies/dod.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/releases/0.1.0.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/releases/0.2.0.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-040.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-041.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-042.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-043.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-044.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-045.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-046.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-047.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-048.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/data/tickets/T-049.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/streamlit_app.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/backlog.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/copilot_panel.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/paths.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/skill_desk.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/skills.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/snowflake_connections.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/backlog_desk/utils/ui.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/Corporate Spend.pbix +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/Customer Profitability Sample (auto).pbix +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/powerbi/fetch.sh +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/extract_schema.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/gen_snowflake.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/schema.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/verify.sql +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/workgroup_ddl.sql +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/sql/workgroup_seed.sql +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_content.twb +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_events.twb +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_users.twb +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_samples/tableau/workbooks/ts_web_requests.twb +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/BRIEF-powerbi-fixtures.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/PRD.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/access_rules.schema.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/estate_map.schema.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/contracts/kpi_inventory.schema.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/access_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/bi_sources.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/dashboard_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/estate_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/extract.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/generate.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/kpi_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/paths.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/persist.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/powerbi_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/preview_server.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/state.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/streamlit_app_gen.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/engine/ui_common.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/pyproject.toml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/arbitration.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/estate_map.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/bi_to_semantic/screens/kpi_inventory.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/chat_app.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/cwd_upload_chat.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/headless_pipeline.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/modern_chat/.streamlit/config.toml +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/structured_output.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/testdata/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/examples/testdata/prompts.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/scripts/collect_adoption_stats.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/scripts/render_adoption_chart.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/scripts/render_svg.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/app_preview.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/ask_user.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/assets.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/bootstrap.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/bridge.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/clipboard.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/component.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/conversation.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/cortex.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/cortex_tools.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/debug.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/diagnostics.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/display.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/errors.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/extras.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/frontend/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/frontend/index.html +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/frontend/main.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/frontend/style.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/gate.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/messages.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/mini.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/options.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/permissions.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/policy.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/query.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/rail.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/rich_text.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/session.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/sql_tool.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco-logo-round.svg +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/coco-logo.svg +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/data.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/data.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/files.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/files.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/page.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/page.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/plans.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/plans.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/questions.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/questions.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/session.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/session.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/standing.css +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/coco/parts/standing.js +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-400.ttf +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-500.ttf +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/Montserrat-600.ttf +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/static/fonts/OFL.txt +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/testing/__init__.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/testing/domdiff.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/testing/fixtures.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/testing/harness.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/testing/scripted.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/text_renderer.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/tool_cards.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/tool_extract.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/tool_names.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/ui.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/upload.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/uploader.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/viewer.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/streamlit_coco/waits.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/api_snapshot.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/coco_fixture.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e/conftest.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e/test_window_features.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e/test_window_walk.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e_classic/conftest.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e_classic/harness.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_copy_highlight.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_max_messages.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/e2e_classic/test_ux_upload.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/api_0.1.9.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/README.md +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_text.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_tool_glob.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/assistant_tool_result.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/manifest.json +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/result_structured.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/result_success.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/stream_delta.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/system_init.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/turn_glob.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/fixtures/ndjson/user_tool_result.ndjson +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_app_builder_catalog.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_app_builder_profile.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_app_viewer.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_backlog_desk.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_bi_to_semantic_parse.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_classic_core.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_classic_smoke.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_compat_019.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_conversation.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_copilot_rail.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_core.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_cortex.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_display.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_errors.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_extras.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_gate.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_headless_example.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_mini.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_ndjson_fixtures.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_part_data.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_policy.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_rich_text.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_scripted.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_smoke.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_snowflake_toml.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_streamlit_floor.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_upload.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_waits.py +0 -0
- {streamlit_coco-0.2.1 → streamlit_coco-0.2.2}/tests/test_window.py +0 -0
|
@@ -12,6 +12,32 @@ 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
|
+
|
|
15
41
|
## [0.2.1] — 2026-10-20
|
|
16
42
|
|
|
17
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).
|
|
@@ -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
|
-
| **
|
|
10
|
+
| **Asset Contributor** | Alentz Joseph — alentz.joseph@devoteam.com |
|
|
11
11
|
| **Created** | 2026-07 |
|
|
12
|
-
| **Last updated** | 2026-
|
|
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.
|
|
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
|
[](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml)
|
|
48
48
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
49
49
|
|
|
50
|
-
> `0.2.
|
|
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)
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
[](https://github.com/lletourmy/streamlit-coco/actions/workflows/ci.yml)
|
|
6
6
|
[](https://opensource.org/licenses/Apache-2.0)
|
|
7
7
|
|
|
8
|
-
> `0.2.
|
|
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)
|
|
@@ -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.
|
|
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.
|
|
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.1` published on 2026-10-20
|
|
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
|
---
|
|
@@ -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,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).
|
|
Binary file
|
|
Binary file
|
|
@@ -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).
|
|
Binary file
|
|
@@ -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.1/`](0.2.1/), a README patch of [`0.2.0/`](0.2.0/). Previous feature 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.1` published on 2026-10-20 (the README of `0.2.0` with the asset contributor named; no code change)
|
|
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.
|
|
7
|
-
**Last updated:** 2026-10-
|
|
8
|
-
**Last cut:** [releases/0.2.1/](releases/0.2.1/)
|
|
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**
|
|
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
|
|
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
|
-
-
|
|
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**)
|