st-graph-workbench 0.1.0__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.
- st_graph_workbench-0.1.0/.gitignore +78 -0
- st_graph_workbench-0.1.0/CHANGELOG.md +360 -0
- st_graph_workbench-0.1.0/CONTRIBUTING.md +55 -0
- st_graph_workbench-0.1.0/LICENSE +202 -0
- st_graph_workbench-0.1.0/NOTICE +14 -0
- st_graph_workbench-0.1.0/PKG-INFO +561 -0
- st_graph_workbench-0.1.0/README.md +523 -0
- st_graph_workbench-0.1.0/SECURITY.md +24 -0
- st_graph_workbench-0.1.0/THIRD_PARTY_NOTICES.md +31 -0
- st_graph_workbench-0.1.0/docs/advanced/architecture.md +103 -0
- st_graph_workbench-0.1.0/docs/advanced/development.md +140 -0
- st_graph_workbench-0.1.0/docs/advanced/troubleshooting.md +118 -0
- st_graph_workbench-0.1.0/docs/assets/images/logo.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/images/logo_icon.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/analysis.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/crud-dialog.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/data-records.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/editing-viewport.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/layouts.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/node-expansion.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/quick-start.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/selection-search.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/showcase.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/workflow-analysis.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/workflow-crud.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/workflow-expansion-collapsed.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/workflow-expansion-open.png +0 -0
- st_graph_workbench-0.1.0/docs/assets/screenshots/workflow-search.png +0 -0
- st_graph_workbench-0.1.0/docs/changelog.md +1 -0
- st_graph_workbench-0.1.0/docs/concepts/elements.md +122 -0
- st_graph_workbench-0.1.0/docs/concepts/events-state.md +87 -0
- st_graph_workbench-0.1.0/docs/concepts/records.md +84 -0
- st_graph_workbench-0.1.0/docs/getting-started/in-action.md +123 -0
- st_graph_workbench-0.1.0/docs/getting-started/installation.md +101 -0
- st_graph_workbench-0.1.0/docs/getting-started/mental-model.md +70 -0
- st_graph_workbench-0.1.0/docs/getting-started/quickstart.md +97 -0
- st_graph_workbench-0.1.0/docs/getting-started/tutorials.md +87 -0
- st_graph_workbench-0.1.0/docs/guides/analysis.md +116 -0
- st_graph_workbench-0.1.0/docs/guides/commands.md +78 -0
- st_graph_workbench-0.1.0/docs/guides/compound-performance.md +86 -0
- st_graph_workbench-0.1.0/docs/guides/crud.md +128 -0
- st_graph_workbench-0.1.0/docs/guides/editing-viewport.md +105 -0
- st_graph_workbench-0.1.0/docs/guides/events-exports.md +91 -0
- st_graph_workbench-0.1.0/docs/guides/expansion-visibility.md +217 -0
- st_graph_workbench-0.1.0/docs/guides/progressive-loading.md +321 -0
- st_graph_workbench-0.1.0/docs/guides/rendering-layouts.md +125 -0
- st_graph_workbench-0.1.0/docs/guides/selection-search.md +163 -0
- st_graph_workbench-0.1.0/docs/guides/styling-icons.md +102 -0
- st_graph_workbench-0.1.0/docs/index.md +210 -0
- st_graph_workbench-0.1.0/docs/license.md +39 -0
- st_graph_workbench-0.1.0/docs/recipes/intelligence-workflow.md +74 -0
- st_graph_workbench-0.1.0/docs/recipes/multiple-instances.md +41 -0
- st_graph_workbench-0.1.0/docs/recipes/persistence-scale.md +59 -0
- st_graph_workbench-0.1.0/docs/recipes/progressive-expansion.md +63 -0
- st_graph_workbench-0.1.0/docs/reference/capability-matrix.md +61 -0
- st_graph_workbench-0.1.0/docs/reference/commands.md +37 -0
- st_graph_workbench-0.1.0/docs/reference/component.md +79 -0
- st_graph_workbench-0.1.0/docs/reference/data-elements.md +44 -0
- st_graph_workbench-0.1.0/docs/reference/events-types.md +48 -0
- st_graph_workbench-0.1.0/docs/reference/expansion.md +36 -0
- st_graph_workbench-0.1.0/docs/reference/index.md +106 -0
- st_graph_workbench-0.1.0/docs/reference/styles.md +19 -0
- st_graph_workbench-0.1.0/docs/snippets/command_driven.py +38 -0
- st_graph_workbench-0.1.0/docs/snippets/managed_expansion.py +28 -0
- st_graph_workbench-0.1.0/docs/snippets/multiple_instances.py +32 -0
- st_graph_workbench-0.1.0/docs/snippets/persist_positions.py +33 -0
- st_graph_workbench-0.1.0/docs/snippets/progressive_expansion.py +69 -0
- st_graph_workbench-0.1.0/docs/snippets/progressive_loading.py +117 -0
- st_graph_workbench-0.1.0/docs/snippets/quickstart.py +68 -0
- st_graph_workbench-0.1.0/docs/snippets/readme_graph.py +34 -0
- st_graph_workbench-0.1.0/docs/snippets/readme_records.py +21 -0
- st_graph_workbench-0.1.0/docs/snippets/readme_selection.py +13 -0
- st_graph_workbench-0.1.0/docs/snippets/readme_style.py +23 -0
- st_graph_workbench-0.1.0/docs/snippets/record_roundtrip.py +26 -0
- st_graph_workbench-0.1.0/docs/snippets/selected_records.py +26 -0
- st_graph_workbench-0.1.0/docs/stylesheets/extra.css +37 -0
- st_graph_workbench-0.1.0/examples/README.md +54 -0
- st_graph_workbench-0.1.0/examples/analysis_examples.py +241 -0
- st_graph_workbench-0.1.0/examples/app.py +98 -0
- st_graph_workbench-0.1.0/examples/component_capability_map.py +156 -0
- st_graph_workbench-0.1.0/examples/data/README.md +13 -0
- st_graph_workbench-0.1.0/examples/data/intelligence_case.json +163 -0
- st_graph_workbench-0.1.0/examples/demos/__init__.py +1 -0
- st_graph_workbench-0.1.0/examples/demos/branch_expansion.py +22 -0
- st_graph_workbench-0.1.0/examples/demos/component_v2_validation.py +206 -0
- st_graph_workbench-0.1.0/examples/demos/compound_performance.py +234 -0
- st_graph_workbench-0.1.0/examples/demos/data_helpers_commands.py +595 -0
- st_graph_workbench-0.1.0/examples/demos/demo_helpers.py +595 -0
- st_graph_workbench-0.1.0/examples/demos/demo_overview.py +32 -0
- st_graph_workbench-0.1.0/examples/demos/edge_style.py +170 -0
- st_graph_workbench-0.1.0/examples/demos/editing_viewport_tools.py +454 -0
- st_graph_workbench-0.1.0/examples/demos/event_listeners.py +154 -0
- st_graph_workbench-0.1.0/examples/demos/graph_workbench_showcase.py +552 -0
- st_graph_workbench-0.1.0/examples/demos/interactive_crud.py +744 -0
- st_graph_workbench-0.1.0/examples/demos/investigation_tools.py +617 -0
- st_graph_workbench-0.1.0/examples/demos/layout.py +148 -0
- st_graph_workbench-0.1.0/examples/demos/node_actions.py +391 -0
- st_graph_workbench-0.1.0/examples/demos/node_style.py +175 -0
- st_graph_workbench-0.1.0/examples/demos/progressive_loading.py +788 -0
- st_graph_workbench-0.1.0/examples/demos/progressive_loading_scale.py +318 -0
- st_graph_workbench-0.1.0/examples/docs/changelog.py +33 -0
- st_graph_workbench-0.1.0/examples/docs/element_contract.py +262 -0
- st_graph_workbench-0.1.0/examples/docs/frontend_architecture.py +235 -0
- st_graph_workbench-0.1.0/examples/docs/interactive_crud.py +217 -0
- st_graph_workbench-0.1.0/examples/docs/project_overview.py +129 -0
- st_graph_workbench-0.1.0/examples/docs/styling_guide.py +107 -0
- st_graph_workbench-0.1.0/examples/docs/supported_icons.py +58 -0
- st_graph_workbench-0.1.0/examples/expansion_data.py +87 -0
- st_graph_workbench-0.1.0/examples/expansion_workflow.py +341 -0
- st_graph_workbench-0.1.0/examples/page_catalog.py +665 -0
- st_graph_workbench-0.1.0/examples/page_links.py +18 -0
- st_graph_workbench-0.1.0/examples/page_overview.py +172 -0
- st_graph_workbench-0.1.0/examples/progressive_loading_data.py +119 -0
- st_graph_workbench-0.1.0/examples/tutorials/__init__.py +1 -0
- st_graph_workbench-0.1.0/examples/tutorials/analysis.py +144 -0
- st_graph_workbench-0.1.0/examples/tutorials/change_records.py +137 -0
- st_graph_workbench-0.1.0/examples/tutorials/commands.py +132 -0
- st_graph_workbench-0.1.0/examples/tutorials/common.py +250 -0
- st_graph_workbench-0.1.0/examples/tutorials/crud.py +315 -0
- st_graph_workbench-0.1.0/examples/tutorials/data.py +167 -0
- st_graph_workbench-0.1.0/examples/tutorials/editing.py +202 -0
- st_graph_workbench-0.1.0/examples/tutorials/events.py +135 -0
- st_graph_workbench-0.1.0/examples/tutorials/expansion.py +18 -0
- st_graph_workbench-0.1.0/examples/tutorials/exports.py +146 -0
- st_graph_workbench-0.1.0/examples/tutorials/first_graph.py +103 -0
- st_graph_workbench-0.1.0/examples/tutorials/layouts.py +122 -0
- st_graph_workbench-0.1.0/examples/tutorials/load_data.py +130 -0
- st_graph_workbench-0.1.0/examples/tutorials/loading.py +164 -0
- st_graph_workbench-0.1.0/examples/tutorials/scale.py +143 -0
- st_graph_workbench-0.1.0/examples/tutorials/search.py +108 -0
- st_graph_workbench-0.1.0/examples/tutorials/selection.py +170 -0
- st_graph_workbench-0.1.0/examples/tutorials/style_graph.py +130 -0
- st_graph_workbench-0.1.0/examples/tutorials/workflows.py +173 -0
- st_graph_workbench-0.1.0/hatch_build.py +30 -0
- st_graph_workbench-0.1.0/images/logo.png +0 -0
- st_graph_workbench-0.1.0/images/logo_icon.png +0 -0
- st_graph_workbench-0.1.0/licenses/material-symbols.txt +202 -0
- st_graph_workbench-0.1.0/licenses/st-link-analysis.txt +21 -0
- st_graph_workbench-0.1.0/mkdocs.local.yml +5 -0
- st_graph_workbench-0.1.0/mkdocs.yml +133 -0
- st_graph_workbench-0.1.0/pyproject.toml +135 -0
- st_graph_workbench-0.1.0/scripts/capture_docs_screenshots.py +506 -0
- st_graph_workbench-0.1.0/scripts/verify_minimum_dependencies.py +36 -0
- st_graph_workbench-0.1.0/scripts/verify_release.py +340 -0
- st_graph_workbench-0.1.0/st_graph_workbench/__init__.py +115 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/__init__.py +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/_expansion_contract.py +106 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/_ids.py +44 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/_typing.py +6 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/_warnings.py +8 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/commands.py +705 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/component.py +990 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/elements.py +191 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/events.py +70 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/expansion.py +1207 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/expansion_provider.py +170 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/icons.py +54 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/layouts.py +100 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/records.py +369 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/styles.py +267 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/types.py +83 -0
- st_graph_workbench-0.1.0/st_graph_workbench/component/validation.py +147 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/111-76b489c917f19c7113b7.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/477-3b51cf5f6d2483b89d23.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/527-15ddbbbebc4c095e1a00.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/576-875a5e1c17a808590401.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/644-fd47658f645d99a1478f.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/95-b2593eb4f78f89f4f83a.js +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/THIRD_PARTY_LICENSES.txt +651 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/component.html +905 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/account_balance.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/alternate_email.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/analytics.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/assured_workload.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/badge.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/business.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/campaign.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/cell_tower.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/chat.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/cloud.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/credit_card.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/description.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/directions_car.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/dns.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/email.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/factory.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/flag.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/flight.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/folder.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/group.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/home.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/inventory.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/key.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/language.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/laptop.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/link.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/local_shipping.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/lock.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/medical_information.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/medical_services.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/monitor.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/person.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/phone.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/photo_camera.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/place.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/request_quote.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/router.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/schedule.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/science.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/sell.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/shopping_cart.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/sim_card.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/smartphone.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/storage.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/store.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/swap_horiz.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/train.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/translate.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/videocam.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/wallet.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/warehouse.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/icons/wifi.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/index-04eff230345e2c3afcce.js +2 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/index-04eff230345e2c3afcce.js.LICENSE.txt +9 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/build/style.css +1268 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/eslint.config.mjs +8 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/package-lock.json +6220 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/package.json +47 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/scripts/write_licenses.cjs +44 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/download.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/fullscreen.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/fullscreen_exit.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/account_balance.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/alternate_email.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/analytics.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/assured_workload.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/badge.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/business.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/campaign.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/cell_tower.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/chat.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/cloud.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/credit_card.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/description.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/directions_car.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/dns.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/email.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/factory.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/flag.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/flight.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/folder.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/group.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/home.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/inventory.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/key.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/language.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/laptop.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/link.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/local_shipping.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/lock.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/medical_information.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/medical_services.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/monitor.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/person.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/phone.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/photo_camera.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/place.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/request_quote.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/router.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/schedule.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/science.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/sell.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/shopping_cart.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/sim_card.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/smartphone.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/storage.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/store.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/swap_horiz.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/train.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/translate.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/videocam.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/wallet.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/warehouse.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/icons/wifi.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/assets/refresh.svg +1 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/component.html +905 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/analysis.js +299 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/boxSelection.js +263 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/connectedDrag.js +379 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/crud.js +137 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/editTools.js +509 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/expansionBadges.js +151 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/expansionControls.js +350 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/graph.js +331 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/graphCommands.js +380 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/graphStats.js +119 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/infopanel.js +194 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/nodeActions.js +369 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/progressiveLoading.js +120 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/search.js +374 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/selectionControls.js +168 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/toolbar.js +135 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/toolbarLayout.js +227 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/toolbox.js +242 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/viewbar.js +78 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/components/viewportTools.js +188 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/index.html +163 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/index.js +850 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/style.css +1268 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/dom.js +23 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/expansion.js +149 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/helpers.js +165 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/layouts.js +120 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/payloads.js +129 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/state.js +61 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/src/utils/styles.js +257 -0
- st_graph_workbench-0.1.0/st_graph_workbench/frontend/webpack.config.js +69 -0
- st_graph_workbench-0.1.0/st_graph_workbench/py.typed +0 -0
- st_graph_workbench-0.1.0/st_graph_workbench/pyproject.toml +7 -0
- st_graph_workbench-0.1.0/tests/apps/connected_drag.py +108 -0
- st_graph_workbench-0.1.0/tests/apps/layout_command_rerun.py +25 -0
- st_graph_workbench-0.1.0/tests/apps/managed_expansion.py +51 -0
- st_graph_workbench-0.1.0/tests/apps/progressive_loading.py +85 -0
- st_graph_workbench-0.1.0/tests/apps/selection_details.py +68 -0
- st_graph_workbench-0.1.0/tests/apps/toolbar_layout.py +58 -0
- st_graph_workbench-0.1.0/tests/conftest.py +159 -0
- st_graph_workbench-0.1.0/tests/graph_test_helpers.py +372 -0
- st_graph_workbench-0.1.0/tests/test_component_capability_map.py +40 -0
- st_graph_workbench-0.1.0/tests/test_component_v2_validation.py +334 -0
- st_graph_workbench-0.1.0/tests/test_connected_drag.py +255 -0
- st_graph_workbench-0.1.0/tests/test_docs_gallery.py +24 -0
- st_graph_workbench-0.1.0/tests/test_editing_viewport_tools.py +222 -0
- st_graph_workbench-0.1.0/tests/test_elements.py +455 -0
- st_graph_workbench-0.1.0/tests/test_event_contract.py +39 -0
- st_graph_workbench-0.1.0/tests/test_events.py +138 -0
- st_graph_workbench-0.1.0/tests/test_examples_documentation.py +177 -0
- st_graph_workbench-0.1.0/tests/test_expansion.py +690 -0
- st_graph_workbench-0.1.0/tests/test_frontend_rendering_options.py +296 -0
- st_graph_workbench-0.1.0/tests/test_graph_commands.py +416 -0
- st_graph_workbench-0.1.0/tests/test_graph_workbench_showcase.py +47 -0
- st_graph_workbench-0.1.0/tests/test_icons.py +46 -0
- st_graph_workbench-0.1.0/tests/test_ids.py +37 -0
- st_graph_workbench-0.1.0/tests/test_infopanel.py +68 -0
- st_graph_workbench-0.1.0/tests/test_interactive_crud.py +205 -0
- st_graph_workbench-0.1.0/tests/test_investigation_tools.py +539 -0
- st_graph_workbench-0.1.0/tests/test_layouts.py +40 -0
- st_graph_workbench-0.1.0/tests/test_literal_option_sets.py +23 -0
- st_graph_workbench-0.1.0/tests/test_managed_expansion.py +447 -0
- st_graph_workbench-0.1.0/tests/test_mkdocs.py +271 -0
- st_graph_workbench-0.1.0/tests/test_node_actions.py +255 -0
- st_graph_workbench-0.1.0/tests/test_package_metadata.py +519 -0
- st_graph_workbench-0.1.0/tests/test_page_catalog.py +91 -0
- st_graph_workbench-0.1.0/tests/test_progressive_loading.py +620 -0
- st_graph_workbench-0.1.0/tests/test_progressive_loading_data.py +90 -0
- st_graph_workbench-0.1.0/tests/test_public_api_docs.py +131 -0
- st_graph_workbench-0.1.0/tests/test_readme_walkthrough.py +129 -0
- st_graph_workbench-0.1.0/tests/test_records.py +234 -0
- st_graph_workbench-0.1.0/tests/test_rename.py +87 -0
- st_graph_workbench-0.1.0/tests/test_request_delivery.py +161 -0
- st_graph_workbench-0.1.0/tests/test_search_readability.py +77 -0
- st_graph_workbench-0.1.0/tests/test_selection_details.py +274 -0
- st_graph_workbench-0.1.0/tests/test_smoke.py +463 -0
- st_graph_workbench-0.1.0/tests/test_toolbar_layout.py +111 -0
- st_graph_workbench-0.1.0/tests/test_tutorial_browser.py +213 -0
- st_graph_workbench-0.1.0/tests/test_tutorial_interactions.py +249 -0
- st_graph_workbench-0.1.0/tests/test_tutorials.py +473 -0
- st_graph_workbench-0.1.0/tests/test_validation.py +166 -0
- st_graph_workbench-0.1.0/tests/test_workflow_tutorials.py +257 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# Python bytecode and environments
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
.venv/
|
|
6
|
+
venv/
|
|
7
|
+
env/
|
|
8
|
+
ENV/
|
|
9
|
+
__pypackages__/
|
|
10
|
+
|
|
11
|
+
# Python packaging
|
|
12
|
+
*.egg
|
|
13
|
+
*.egg-info/
|
|
14
|
+
/build/
|
|
15
|
+
dist/
|
|
16
|
+
wheelhouse/
|
|
17
|
+
pip-wheel-metadata/
|
|
18
|
+
MANIFEST
|
|
19
|
+
|
|
20
|
+
# Test, coverage, and type-checking output
|
|
21
|
+
.mypy_cache/
|
|
22
|
+
.pytest_cache/
|
|
23
|
+
.ruff_cache/
|
|
24
|
+
.hypothesis/
|
|
25
|
+
.tox/
|
|
26
|
+
.nox/
|
|
27
|
+
.pytype/
|
|
28
|
+
.pyright/
|
|
29
|
+
.coverage
|
|
30
|
+
.coverage.*
|
|
31
|
+
coverage.xml
|
|
32
|
+
coverage.json
|
|
33
|
+
coverage/
|
|
34
|
+
htmlcov/
|
|
35
|
+
lcov.info
|
|
36
|
+
junit*.xml
|
|
37
|
+
pytest*.xml
|
|
38
|
+
playwright-report/
|
|
39
|
+
test-results/
|
|
40
|
+
blob-report/
|
|
41
|
+
|
|
42
|
+
# Generated documentation and temporary output
|
|
43
|
+
site/
|
|
44
|
+
.tmp/
|
|
45
|
+
*.log
|
|
46
|
+
*.tmp
|
|
47
|
+
*.bak
|
|
48
|
+
|
|
49
|
+
# Frontend dependencies
|
|
50
|
+
node_modules/
|
|
51
|
+
|
|
52
|
+
# Local configuration and credentials
|
|
53
|
+
.env
|
|
54
|
+
.env.*
|
|
55
|
+
!.env.example
|
|
56
|
+
.pypirc
|
|
57
|
+
.streamlit/secrets.toml
|
|
58
|
+
|
|
59
|
+
# Editors, notebooks, and operating-system metadata
|
|
60
|
+
.vscode/
|
|
61
|
+
.idea/
|
|
62
|
+
*.code-workspace
|
|
63
|
+
.ipynb_checkpoints/
|
|
64
|
+
.DS_Store
|
|
65
|
+
Thumbs.db
|
|
66
|
+
Desktop.ini
|
|
67
|
+
*.swp
|
|
68
|
+
*~
|
|
69
|
+
|
|
70
|
+
# Local agent configuration
|
|
71
|
+
.agents/
|
|
72
|
+
.codex/
|
|
73
|
+
|
|
74
|
+
# Private maintainer notes and release checklists
|
|
75
|
+
.maintainer/
|
|
76
|
+
|
|
77
|
+
# Deliberately unshipped example scratch pages
|
|
78
|
+
/examples/debug/*.py
|
|
@@ -0,0 +1,360 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to `st-graph-workbench` will be documented in this file.
|
|
4
|
+
|
|
5
|
+
This changelog covers the standalone `st-graph-workbench` package beginning
|
|
6
|
+
with version `0.1.0`.
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
No unreleased changes.
|
|
11
|
+
|
|
12
|
+
## [0.1.0] - 2026-09-26
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- An adaptive top toolbar with expanded, compact, and minimized presentations,
|
|
17
|
+
accessible search/minimize controls, stable-key preferences, and measured
|
|
18
|
+
canvas space that prevents wrapped controls from covering graph records.
|
|
19
|
+
Compact menus stay inside narrow pages, while an initial clipped graph is
|
|
20
|
+
fitted once after layout without changing later user viewport choices.
|
|
21
|
+
- `ToolbarConfig` for application-controlled mode, collapse availability, top
|
|
22
|
+
placement, and reserved-space behavior, with corresponding examples and
|
|
23
|
+
browser coverage.
|
|
24
|
+
|
|
25
|
+
- Opt-in connected-record dragging with one-to-three-hop visible scopes,
|
|
26
|
+
per-instance toolbar preferences, rigid selected-safe movement, bounded
|
|
27
|
+
refusal, lazy Cytoscape Automove loading, and returned movement metadata.
|
|
28
|
+
- Connected-drag workflows in the selection tutorial, Investigation Tools,
|
|
29
|
+
Progressive Loading, and the browser scale activity, including checkpointed
|
|
30
|
+
positions and oversized-neighborhood guidance.
|
|
31
|
+
|
|
32
|
+
- A Progressive Loading Scale Test activity with deterministic 100-to-10,000
|
|
33
|
+
record checkpoints and a repeatable Chromium capacity benchmark.
|
|
34
|
+
- User-facing Load more guidance covering bounded pages, Python-owned providers,
|
|
35
|
+
incremental commands, cursor handling, and when to switch to filtering or expansion.
|
|
36
|
+
|
|
37
|
+
- Shortest-path experiments in Progressive Loading, with one/two-node selection,
|
|
38
|
+
checkpoint-labelled relationship tables, and CSV export.
|
|
39
|
+
- Explicit Clear Selection and the details panel's X now also remove analysis
|
|
40
|
+
highlights on nodes and edges, without changing search matches or saved results.
|
|
41
|
+
|
|
42
|
+
- Beginner-oriented progressive-loading guidance, single-root BFS experiments,
|
|
43
|
+
optional paginated cross-location sightings, and snapshot-labelled visit tables
|
|
44
|
+
with hop distances and CSV export in the Progressive Loading demo.
|
|
45
|
+
|
|
46
|
+
- Real tutorial screenshots in the README and MkDocs, including path analysis,
|
|
47
|
+
search, independent branch collapse, and a populated Python-owned CRUD dialog.
|
|
48
|
+
- A reproducible workflow-gallery capture mode and project URL configuration
|
|
49
|
+
for reviewed documentation assets.
|
|
50
|
+
|
|
51
|
+
- Learning objectives and review prompts for all sixteen tutorials, with more
|
|
52
|
+
executing code, preserved teaching comments, and source-backed callback examples.
|
|
53
|
+
|
|
54
|
+
- CRUD tutorial type choices, styled browser drafts, side-by-side Python/edit
|
|
55
|
+
reports, and practical scenarios explaining approval-first versus edit-first workflows.
|
|
56
|
+
|
|
57
|
+
- User-adjustable selection details through `show_selection_details` and the
|
|
58
|
+
Selection menu checkbox, with independent per-graph rerun preferences.
|
|
59
|
+
- Readable 16px search inputs/dropdowns, 14px feedback, and responsive wrapping.
|
|
60
|
+
- Selection-details visibility is controlled by the toolbar checkbox; the
|
|
61
|
+
panel's X retains its clear-selection behavior without changing that preference.
|
|
62
|
+
|
|
63
|
+
- Opt-in, Python-owned expansion with shared-record retention, nested restoration,
|
|
64
|
+
paginated providers, bounded bulk operations, scoped search/analysis and snapshots.
|
|
65
|
+
- Persistent request delivery and browser command acknowledgments for managed
|
|
66
|
+
exploration, plus reliable delivery of existing progressive-loading requests.
|
|
67
|
+
- Separate node/edge change badges, consistent degree scope, and preserved source
|
|
68
|
+
records, cached edits, positions and viewport during collapse.
|
|
69
|
+
- A shared multi-location tutorial, Feature Lab and generated expansion API reference.
|
|
70
|
+
|
|
71
|
+
- A sixteen-lesson, tutorial-first examples app with independent checkpoints,
|
|
72
|
+
visible source data, executable code, explained results, and local resets.
|
|
73
|
+
- A separate Feature Lab navigation view and searchable feature finder, with
|
|
74
|
+
existing demonstration URLs and the live README walkthrough preserved.
|
|
75
|
+
- Curriculum coverage checks and browser tests for navigation, lesson state,
|
|
76
|
+
selections, commands, expansion, CRUD, exports, and progressive loading.
|
|
77
|
+
|
|
78
|
+
- Apache License 2.0 for original project work, project attribution, and license
|
|
79
|
+
metadata in both Python and frontend packages; upstream notices are retained.
|
|
80
|
+
- Contributor and private vulnerability-reporting guidance for public repository
|
|
81
|
+
users.
|
|
82
|
+
- Loading request IDs and optional completion acknowledgments for retrying
|
|
83
|
+
handled fetch failures without remounting or advancing the data cursor.
|
|
84
|
+
- Packaged typing markers, upstream license texts, generated production
|
|
85
|
+
dependency notices, and isolated installed-wheel release verification.
|
|
86
|
+
|
|
87
|
+
- Cursor-aware progressive loading through `ProgressiveLoadConfig`, an
|
|
88
|
+
in-canvas Load more control, and structured `load_more` event dictionaries.
|
|
89
|
+
- A Progressive Loading demo that grows a 600-record mobility graph through
|
|
90
|
+
idempotent browser commands without replacing the current viewport.
|
|
91
|
+
- Graph-aware CRUD endpoint selectors, custom node/edge property fields, and
|
|
92
|
+
duplicate-ID and endpoint validation in the interactive demo.
|
|
93
|
+
- Added a locally served Material for MkDocs site with task-oriented
|
|
94
|
+
guides, intelligence-analysis recipes, generated API reference, a complete
|
|
95
|
+
frontend capability matrix, screenshot automation, and strict CI builds.
|
|
96
|
+
|
|
97
|
+
- Public `Element`, `Elements`, `Record`, `Layout`, `GraphCommand`, and
|
|
98
|
+
`GraphEvent` type aliases for annotated Python integrations.
|
|
99
|
+
- Public `ElementId` and `ElementIdInput` aliases now match the scalar and
|
|
100
|
+
iterable identifier forms accepted by Python graph helpers.
|
|
101
|
+
- Selection and search element records can now be passed directly to
|
|
102
|
+
`records_to_dataframe(...)` for a flattened pandas view.
|
|
103
|
+
- The Data Helpers And Commands demo now loads, validates, and previews the
|
|
104
|
+
packaged intelligence graph JSON file.
|
|
105
|
+
- Box selection now includes an explicit Pan/Box select canvas-mode control,
|
|
106
|
+
allowing users to navigate dense graphs without leaving box selection mode.
|
|
107
|
+
- Streamlit examples app branding with the repository logo and page-level
|
|
108
|
+
Material Symbols icons.
|
|
109
|
+
- Front-page and demo-overview library badges for Cytoscape.js, Streamlit,
|
|
110
|
+
Python, Components v2, and Material Symbols.
|
|
111
|
+
- README banner logo and source distribution packaging for `images/logo.png`
|
|
112
|
+
and the Streamlit app icon asset.
|
|
113
|
+
- README guidance for running the local examples app on port 8502 and for the
|
|
114
|
+
single-bundle Components v2 build invariant.
|
|
115
|
+
- An `examples/data/intelligence_case.json` sample with vehicles, places,
|
|
116
|
+
times, people, and device links.
|
|
117
|
+
- Source distributions now include the examples app, tests, documentation
|
|
118
|
+
assets, and frontend source needed for local review.
|
|
119
|
+
- Wheels keep only the Python package and built component runtime assets,
|
|
120
|
+
excluding frontend source and npm metadata to reduce install size.
|
|
121
|
+
|
|
122
|
+
### Changed
|
|
123
|
+
|
|
124
|
+
- Shared expansion record/filter validation and reused indexed graph projections
|
|
125
|
+
reduce repeated loaded-cache scans when preparing branch badges.
|
|
126
|
+
|
|
127
|
+
- Aligned the README, MkDocs home, and interactive overview around shared
|
|
128
|
+
capability summaries and executable graph, styling, dataframe, and selection
|
|
129
|
+
examples. The overview now renders the documented data and filtered evidence.
|
|
130
|
+
- CI installs locked development and documentation dependencies together, and
|
|
131
|
+
the test suite no longer automatically retries failures.
|
|
132
|
+
- Updated the transitive production Lodash dependency to 4.18.1.
|
|
133
|
+
- Updated vulnerable frontend development dependencies, including the copy
|
|
134
|
+
plugin and dev server. Frontend development now requires Node.js 22.15 or
|
|
135
|
+
newer, with Node.js 24 in CI; Python installations do not need Node.js.
|
|
136
|
+
- README images use tracked relative paths in editors and on GitHub, while the
|
|
137
|
+
distribution metadata converts those paths to public URLs for PyPI.
|
|
138
|
+
- Repository ignore rules now cover common Python, browser-test, coverage,
|
|
139
|
+
editor, secret, and temporary outputs without hiding packaged frontend
|
|
140
|
+
bundles, reviewed screenshots, or dependency lockfiles.
|
|
141
|
+
- The supported pandas floor is 2.2.2, avoiding the pandas 1.x and NumPy 2.x
|
|
142
|
+
binary incompatibility while preserving Python 3.10 support.
|
|
143
|
+
- Documentation dependencies explicitly remain on MkDocs 1.x, and CI verifies
|
|
144
|
+
minimum dependencies plus Python 3.10 through 3.14.
|
|
145
|
+
- Public documentation identifies local Streamlit routes without linking a
|
|
146
|
+
published reader directly to `localhost`.
|
|
147
|
+
- CI validates pull requests, `main` pushes, and version tags, with immutable
|
|
148
|
+
action revisions and one complete Chromium regression run.
|
|
149
|
+
|
|
150
|
+
- High-risk showcase nodes retain their semantic icon shape and use a red
|
|
151
|
+
border instead of being forced into a diamond.
|
|
152
|
+
- The project introduction now positions the component as a general graph and
|
|
153
|
+
knowledge-graph workbench for data science and application development.
|
|
154
|
+
- The Demo Overview now maps common dataframe, selection, related-data,
|
|
155
|
+
browser-editing, and large-graph tasks to their recommended API patterns.
|
|
156
|
+
- `Event(...)` now validates required text fields and rejects names reserved by
|
|
157
|
+
built-in component actions.
|
|
158
|
+
- Demo pages now share the same source-code expander helper instead of
|
|
159
|
+
repeating per-page file readers.
|
|
160
|
+
- Graph Workbench Showcase now uses a vehicle, location, and time intelligence
|
|
161
|
+
case instead of company and wallet records.
|
|
162
|
+
- Interactive CRUD / Data Loading now uses vehicle, location, time, person, and
|
|
163
|
+
device records, with a state-version guard for clean hot reloads.
|
|
164
|
+
- Components V2 Validation now uses the same vehicle/person intelligence
|
|
165
|
+
vocabulary while preserving the multi-instance icon asset check.
|
|
166
|
+
- Investigation Tools now uses vehicle, person, time-window, camera, phone,
|
|
167
|
+
tower, and location records across search, selection, analysis, and export
|
|
168
|
+
examples.
|
|
169
|
+
- Editing And Viewport Tools now uses vehicle, time-window, person, and device
|
|
170
|
+
records, with a state-version guard for clean hot reloads.
|
|
171
|
+
- Graph Data Format and Compound And Performance now use the same
|
|
172
|
+
intelligence-data vocabulary as the rest of the reader-facing examples.
|
|
173
|
+
- The old unreferenced company fixture was replaced with the intelligence-case
|
|
174
|
+
sample dataset.
|
|
175
|
+
- Demo capability summaries now render as contents-style lists instead of front
|
|
176
|
+
matter tables.
|
|
177
|
+
- Front-page library badges now render as a titled `Library stack` section so
|
|
178
|
+
screenshots clearly label the Cytoscape.js, Streamlit, Python, Components v2,
|
|
179
|
+
and Material Symbols stack.
|
|
180
|
+
- Dictionary preview blocks now show an explanatory waiting payload before any
|
|
181
|
+
component event exists.
|
|
182
|
+
- README live outputs now use the same described, scrollable dictionary preview
|
|
183
|
+
pattern as the demo pages.
|
|
184
|
+
- The Editing And Viewport Tools demo now makes custom mouse-wheel sensitivity
|
|
185
|
+
opt-in so the default page load uses Cytoscape's native wheel behavior.
|
|
186
|
+
- Root package exports now include the action and mode typing aliases for
|
|
187
|
+
node actions, CRUD actions, editing, viewport controls, analysis,
|
|
188
|
+
selection, performance profiles, and element sync modes.
|
|
189
|
+
- The JavaScript-to-Streamlit capability map now includes selection controls
|
|
190
|
+
and utility modules for layouts, expansion summaries, state, and context.
|
|
191
|
+
- Test coverage now checks that the JavaScript capability map mentions every
|
|
192
|
+
current frontend source module.
|
|
193
|
+
- Test coverage now checks that the README Public API block lists every root
|
|
194
|
+
package export.
|
|
195
|
+
- Browser tests now share Cytoscape/Playwright helper functions for component
|
|
196
|
+
lookup, readiness, selection, toolbox menus, node IDs, edge IDs, badges, and
|
|
197
|
+
positions.
|
|
198
|
+
- Runtime validation choices for graph options and graph command operations now
|
|
199
|
+
derive from the same `Literal` aliases used for public type hints.
|
|
200
|
+
- Deprecated compatibility arguments now share one internal warning category.
|
|
201
|
+
|
|
202
|
+
### Fixed
|
|
203
|
+
|
|
204
|
+
- Bundled node icons now resolve from the loaded Components v2 bundle URL, so
|
|
205
|
+
deployment prefixes are retained and SVG assets render on Streamlit Community
|
|
206
|
+
Cloud as well as local servers.
|
|
207
|
+
|
|
208
|
+
- The progressive-loading button keeps a compact plus icon at all viewport
|
|
209
|
+
widths instead of inheriting percentage sizing from icon-only toolbar buttons.
|
|
210
|
+
|
|
211
|
+
- The Data Helpers And Commands demo now reserves its command-status slot so
|
|
212
|
+
feedback does not remount the graph during slow reruns, including circle layout.
|
|
213
|
+
|
|
214
|
+
- Managed expansion now generates request IDs on non-localhost HTTP origins,
|
|
215
|
+
using the same secure-random helper as progressive loading. Right-click and
|
|
216
|
+
dialog actions no longer fail when `crypto.randomUUID` is unavailable.
|
|
217
|
+
|
|
218
|
+
- Updated the locked GitPython dependency from 3.1.52 to the 3.1.59 security release.
|
|
219
|
+
- Selected-record details have a bounded, readable scrolling area, responsive
|
|
220
|
+
width, and a close control separated from the node icon.
|
|
221
|
+
- Expansion snapshots preserve edited starting relationships and compound context
|
|
222
|
+
after CRUD; source-search reveal rejects deleted or rewired paths.
|
|
223
|
+
- Request receipts survive partial callback failures and long in-flight queues;
|
|
224
|
+
hidden/filtered anchors invalidate pending responses before they can reappear.
|
|
225
|
+
- Explicit branch collapse, null-property filters, time ranges and provider limits
|
|
226
|
+
now enforce their documented scope and validation rules.
|
|
227
|
+
|
|
228
|
+
- Progressive-loading resets no longer reuse browser command IDs or report
|
|
229
|
+
batches that the browser silently ignored.
|
|
230
|
+
- Handled failed fetches can release the Load more button without changing
|
|
231
|
+
progress, and stale acknowledgments cannot complete a newer request.
|
|
232
|
+
- The empty-start loading snippet positions its nodes and fits its first page
|
|
233
|
+
instead of stacking every node at the origin.
|
|
234
|
+
|
|
235
|
+
- Scalar numeric and boolean IDs now work consistently in lookup, update,
|
|
236
|
+
delete, validation, and browser-command helpers; invalid object and
|
|
237
|
+
non-finite numeric IDs fail with one shared error contract.
|
|
238
|
+
- Expansion counts now reject `NaN` and infinite values before they can become
|
|
239
|
+
misleading browser badges.
|
|
240
|
+
- The selected-element details panel now has a direct clear-selection button,
|
|
241
|
+
so an expanded overlay cannot trap a selected node underneath it.
|
|
242
|
+
- Named `preset` layouts and layout command strings now follow the same
|
|
243
|
+
validated Python-to-Cytoscape path as layout option dictionaries.
|
|
244
|
+
- Initial info-panel and node-action state now starts collapsed before the
|
|
245
|
+
first browser selection update.
|
|
246
|
+
- Position return events no longer let the initial layout overwrite manually
|
|
247
|
+
dragged node coordinates.
|
|
248
|
+
- Node expansion from right-click and double-click/tap interactions is more
|
|
249
|
+
reliable across browser reruns and Cytoscape event variants.
|
|
250
|
+
- User-command events such as CRUD, remove, search, analysis, viewport, and
|
|
251
|
+
visibility actions now run without delayed click handlers, suppress
|
|
252
|
+
follow-up selection/position emissions, and use monotonic event timestamps
|
|
253
|
+
so Streamlit dialogs and notices are not dropped during fast interactions.
|
|
254
|
+
- Selection-menu visibility actions now respect the `node_actions` API:
|
|
255
|
+
`hide_unselected` and `restore_hidden` are hidden and guarded unless the
|
|
256
|
+
Python call enables those actions.
|
|
257
|
+
- Graph command validation now tracks node additions, deletions, clears, and
|
|
258
|
+
full graph replacements across an ordered command list, so a valid batch can
|
|
259
|
+
add a node and then add an edge to that node in the same rerun.
|
|
260
|
+
- Node-action remove and neighbor filters now read the live Cytoscape
|
|
261
|
+
selection when clicked, avoiding stale cached selection during fast
|
|
262
|
+
select-and-act workflows.
|
|
263
|
+
- Interactive CRUD / Data Loading now relies on CRUD payloads for selected
|
|
264
|
+
records instead of emitting separate selection events, reducing dialog-open
|
|
265
|
+
races during fast select-and-click workflows.
|
|
266
|
+
- The examples app now resolves pages, README/changelog content, debug pages,
|
|
267
|
+
and icon assets from the app file location, so it can run from either the
|
|
268
|
+
repository root or the `examples` directory.
|
|
269
|
+
- Browser tests now launch Streamlit through the active Python interpreter
|
|
270
|
+
instead of whichever `streamlit` executable appears first on `PATH`.
|
|
271
|
+
- Package metadata now requires Streamlit 1.57 or newer, matching the
|
|
272
|
+
Components v2 `isolate_styles` API used by the component wrapper.
|
|
273
|
+
- The component explicitly mounts with `isolate_styles=False` because
|
|
274
|
+
Cytoscape box selection needs light-DOM pointer handling; the generic
|
|
275
|
+
container CSS selector is now scoped to `.st-graph-workbench.container`.
|
|
276
|
+
- The frontend now marks the graph canvas ready only after Cytoscape listeners
|
|
277
|
+
and active layouts are initialized, avoiding early click/tap races during
|
|
278
|
+
first render and expansion animation.
|
|
279
|
+
- The frontend development HTML template no longer contains the invalid
|
|
280
|
+
`id="infopanel" ,` attribute typo.
|
|
281
|
+
- Public documentation now consistently refers to bundled node-icon assets as
|
|
282
|
+
Material Symbols-style assets instead of the older Material Icons wording.
|
|
283
|
+
|
|
284
|
+
### Initial foundation (2026-07-27)
|
|
285
|
+
|
|
286
|
+
#### Added
|
|
287
|
+
|
|
288
|
+
- Initial `st-graph-workbench` package structure.
|
|
289
|
+
- Public Python API through `graph_workbench(...)`.
|
|
290
|
+
- Streamlit Components v2 frontend integration.
|
|
291
|
+
- Cytoscape.js graph rendering with bundled frontend assets.
|
|
292
|
+
- Python graph validation with friendly errors for malformed nodes, edges,
|
|
293
|
+
duplicate IDs, invalid edge references, invalid compound parents, and
|
|
294
|
+
malformed expansion metadata.
|
|
295
|
+
- Python styling helpers:
|
|
296
|
+
- `NodeStyle`
|
|
297
|
+
- `EdgeStyle`
|
|
298
|
+
- `StyleRule`
|
|
299
|
+
- Layout support for the bundled Cytoscape layouts.
|
|
300
|
+
- Unified graph toolbox with node actions, view controls, graph controls,
|
|
301
|
+
display controls, selection tools, analysis tools, export tools, and CRUD
|
|
302
|
+
intent actions.
|
|
303
|
+
- Expand/collapse action support with expansion-count badges.
|
|
304
|
+
- Selection modes and structured selection return payloads.
|
|
305
|
+
- Search and filter panel for graph investigation workflows.
|
|
306
|
+
- Non-destructive search behavior that highlights and selects every match,
|
|
307
|
+
fits the viewport toward those matches, and keeps graph context visible.
|
|
308
|
+
- Neighborhood exploration actions for incoming, outgoing, and connected nodes.
|
|
309
|
+
- Frontend graph analysis actions for shortest path, BFS, DFS, connected
|
|
310
|
+
components, and degree.
|
|
311
|
+
- Export and position-return support for saving graph state.
|
|
312
|
+
- Compound-node validation and performance profiles for larger graph scenarios.
|
|
313
|
+
- Graph-count overlay for shown, hidden, and total nodes and edges.
|
|
314
|
+
- CRUD/data-loading event contract and Python helper functions:
|
|
315
|
+
- `get_element`
|
|
316
|
+
- `upsert_elements`
|
|
317
|
+
- `update_element_data`
|
|
318
|
+
- `delete_elements`
|
|
319
|
+
- Incremental graph command helpers and browser command application:
|
|
320
|
+
- `add_elements_command`
|
|
321
|
+
- `upsert_elements_command`
|
|
322
|
+
- `update_data_command`
|
|
323
|
+
- `delete_elements_command`
|
|
324
|
+
- `set_elements_command`
|
|
325
|
+
- `clear_graph_command`
|
|
326
|
+
- `viewport_command`
|
|
327
|
+
- `apply_graph_command`
|
|
328
|
+
- `apply_graph_commands`
|
|
329
|
+
- Browser-local edit tools for add node, connect selected, delete selected,
|
|
330
|
+
lock/unlock, grabbable/ungrabbable, snap to grid, undo, and redo.
|
|
331
|
+
- Viewport controls and commands for zoom/pan toggles, saved views, reset view,
|
|
332
|
+
pan, zoom, viewport restore, zoom bounds, fit, center, and rerun layout.
|
|
333
|
+
- Example pages for:
|
|
334
|
+
- Graph Workbench Showcase
|
|
335
|
+
- Interactive CRUD / Data Loading
|
|
336
|
+
- Editing And Viewport Tools
|
|
337
|
+
- Investigation Tools
|
|
338
|
+
- Node Actions
|
|
339
|
+
- Compound And Performance
|
|
340
|
+
- Components V2 Validation
|
|
341
|
+
- Node Styles
|
|
342
|
+
- Edge Styles
|
|
343
|
+
- Layout Algorithms
|
|
344
|
+
- Events Listeners
|
|
345
|
+
- Standalone documentation sequence covering first graph, styling, selection/search,
|
|
346
|
+
expand/collapse, CRUD/data loading, analysis/export, compound/large graphs,
|
|
347
|
+
editing/viewport controls, and large graph behavior.
|
|
348
|
+
- Learning-focused documentation pages for graph data format, styling,
|
|
349
|
+
frontend architecture, and CRUD/data loading.
|
|
350
|
+
- `uv`-based development workflow and lockfile.
|
|
351
|
+
|
|
352
|
+
#### Changed
|
|
353
|
+
|
|
354
|
+
- Package metadata uses the new distribution name `st-graph-workbench`.
|
|
355
|
+
- Python import package is `st_graph_workbench`.
|
|
356
|
+
- Main public function is `graph_workbench(...)`.
|
|
357
|
+
|
|
358
|
+
#### Notes
|
|
359
|
+
|
|
360
|
+
- This is the first changelog entry for the new package history.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Thank you for helping improve `st-graph-workbench`. Contributions should keep
|
|
4
|
+
the Python API, Streamlit examples, browser component, and documentation in
|
|
5
|
+
agreement.
|
|
6
|
+
|
|
7
|
+
## Set up the checkout
|
|
8
|
+
|
|
9
|
+
```powershell
|
|
10
|
+
uv sync --extra dev --extra docs
|
|
11
|
+
uv run playwright install chromium
|
|
12
|
+
cd st_graph_workbench/frontend
|
|
13
|
+
npm ci
|
|
14
|
+
cd ../..
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Node.js is needed only when changing or rebuilding the frontend. The compiled
|
|
18
|
+
component is already included for ordinary Python development.
|
|
19
|
+
|
|
20
|
+
## Make a focused change
|
|
21
|
+
|
|
22
|
+
- Follow the existing public API and typing patterns.
|
|
23
|
+
- Add or update tests for changed behavior.
|
|
24
|
+
- Update the relevant tutorial and MkDocs guide for user-visible behavior.
|
|
25
|
+
- Use synthetic records in examples, tests, screenshots, and bug reports.
|
|
26
|
+
- Rebuild `st_graph_workbench/frontend/build` after frontend source changes.
|
|
27
|
+
- Preserve third-party attribution when adapting external code or assets.
|
|
28
|
+
|
|
29
|
+
## Run the checks
|
|
30
|
+
|
|
31
|
+
```powershell
|
|
32
|
+
uv run ruff format --check .
|
|
33
|
+
uv run ruff check .
|
|
34
|
+
uv run mypy st_graph_workbench/
|
|
35
|
+
uv run pytest --reruns=0 -q
|
|
36
|
+
uv run mkdocs build --strict
|
|
37
|
+
uv run python scripts/verify_release.py
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
For frontend changes, also run:
|
|
41
|
+
|
|
42
|
+
```powershell
|
|
43
|
+
cd st_graph_workbench/frontend
|
|
44
|
+
npm run format
|
|
45
|
+
npm run lint
|
|
46
|
+
npm run build
|
|
47
|
+
npm audit
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Submit the change
|
|
51
|
+
|
|
52
|
+
Describe the behavior, verification performed, and any compatibility impact.
|
|
53
|
+
Do not include credentials, private datasets, personal records, or generated
|
|
54
|
+
environment files. Contributions are accepted under the project's Apache
|
|
55
|
+
License 2.0.
|