This is an automated email from the ASF dual-hosted git repository.
aglinxinyuan pushed a change to branch xinyuan-loop-feb
in repository https://gitbox.apache.org/repos/asf/texera.git
from 63d243353a refactor(amber): fold the loop_counter column onto State,
drop StateStorage
add e27d4d0527 test: close stream in upload-error test to prevent
finalizer leak across tests (#5246)
add f967080e38 test: add spec for UserDatasetListItemComponent (#5239)
add d8c254c75a test: add unit spec for UserDatasetComponent (#5238)
add a4a3df5af3 test: unit tests for LandingPageComponent (#5234)
add 7bd6550056 feat: Welcome first-time contributors with comment commands
guide (#5222)
add ca829ec086 refactor: consolidate count and relative-time formatting
utilities (#5220)
add 85c4b0ca5d feat: show MiB unit label next to size-based admin settings
inputs (#5066)
add ec12c88860 feat: Add Python Virtual Environment Support: Add k8s
Gateway Configuration (#5138)
add 4cc7539ee1 fix(dataset): load cover image on detail page for private
datasets (#5284)
add 59f776c853 fix(workflow-operator): auto-rename empty CSV column
headers (#5282)
add 953e2c4b77 chore(asf): Allow texera committers to bypass branch
protection (#5287)
add b90e76d04a fix(asf): restore root bypass team (#5290)
add 5b09ca1eb1 chore(licensing): refresh transitive versions in
LICENSE-binary-python (#5159)
add e2bd47337f docs: update NOTICE copyright to "2025 and onwards" (#5158)
add a854812861 fix(amber): avoids false negative on _check_heartbeat when
connection is established but close raises exception (#5027)
add a1045ce55e fix(frontend): drop stale attribute references when an
operator's input schema changes (#5294)
add e6509191d2 fix(frontend): restore Regions and Status canvas toggles
(#5160)
add 34be37d60f test: cover ShareAccessComponent behaviors in spec (#5233)
add 1b0ec78aa9 feat(huggingFace): add HuggingFaceModelResource for model
browsing and media proxy (#5124)
add ab79ea44d0 fix: remove duplicate NOTICE file under bin/single-node
(#5303)
add 2ebef32360 fix: enforce @RolesAllowed on microservice resources (#5199)
add e25c28225f test(frontend): browser-mode spec for code-editor.component
(#5241)
add a8afdc487a test(compiling-service): add direct unit tests for
WorkflowCompiler (#5022)
add 0e5686ec2f chore(ci): rename python job/flag/label to pyamber (#5307)
add eb287f3fc2 feat(config-service): split /config/pre-login from
authenticated endpoints (#5305)
add d26bff669e refactor: Drop /dashboard prefix from user-facing URLs
(#5151)
add 531d79ff22 fix: require non-null uid in insertNewExecution (#5300)
add d086455291 feat(k8s): add agent service and LiteLLM to the Helm chart
(#5272)
add 223a27b292 feat(dashboard): add public dataset card view (#5215)
add 251a845f79 fix(frontend): preserve operator state border on workflow
page return (#5146)
add 0bfe9055e4 test: unit tests for LocalLoginComponent (#5235)
add aa3a117986 test: cover hub.component sidebar gating and routerLinks
(#5232)
add f13d998180 Merge branch 'main' into xinyuan-loop-feb
No new revisions were added by this update.
Summary of changes:
.asf.yaml | 3 +-
.github/labeler.yml | 8 +-
.github/workflows/build.yml | 22 +-
.github/workflows/create-release-candidate.yml | 4 +-
.github/workflows/required-checks.yml | 58 +-
.../workflows/welcome-first-time-contributor.yml | 157 +++++
CONTRIBUTING.md | 40 ++
NOTICE | 2 +-
.../service/resource/AccessControlResource.scala | 28 +-
.../apache/texera/AccessControlResourceSpec.scala | 58 ++
amber/LICENSE-binary-java | 1 +
amber/LICENSE-binary-python | 28 +-
amber/NOTICE-binary | 43 ++
amber/src/main/python/core/runnables/heartbeat.py | 16 +-
.../apache/texera/web/TexeraWebApplication.scala | 1 +
.../web/resource/HuggingFaceModelResource.scala | 750 +++++++++++++++++++++
.../dashboard/DatasetSearchQueryBuilder.scala | 3 +-
.../resource/dashboard/UnifiedResourceSchema.scala | 6 +-
.../pythonvirtualenvironment/PveResource.scala | 11 +-
.../PveWebsocketResource.scala | 4 +-
.../service/ExecutionsMetadataPersistService.scala | 18 +-
.../texera/web/service/WorkflowEmailNotifier.scala | 2 +-
.../texera/web/service/WorkflowService.scala | 9 +-
.../test/python/core/runnables/test_heartbeat.py | 10 +-
.../storage/test_large_binary_output_stream.py | 16 +-
.../resource/HuggingFaceModelResourceSpec.scala | 731 ++++++++++++++++++++
.../ExecutionsMetadataPersistServiceSpec.scala | 28 +-
bin/computing-unit-master.dockerfile | 2 +
.../access-control-service-deployment.yaml | 12 +-
.../templates/access-control-service-service.yaml | 4 +-
...l => agent-service-backend-traffic-policy.yaml} | 29 +-
bin/k8s/templates/agent-service-deployment.yaml | 79 +++
...akefs-secret.yaml => agent-service-secret.yaml} | 15 +-
...ice-service.yaml => agent-service-service.yaml} | 12 +-
bin/k8s/templates/gateway-routes.yaml | 51 ++
bin/k8s/templates/gateway-security-policy.yaml | 2 +-
.../{gateway-backend.yaml => litellm-config.yaml} | 13 +-
bin/k8s/templates/litellm-deployment.yaml | 85 +++
...g-service-service.yaml => litellm-service.yaml} | 12 +-
.../templates/postgresql-init-script-config.yaml | 7 +
bin/k8s/templates/pylsp.yaml | 2 +-
bin/k8s/values-development.yaml | 64 +-
bin/k8s/values.yaml | 56 +-
bin/single-node/NOTICE | 5 -
build.sbt | 2 +-
codecov.yml | 4 +-
common/auth/build.sbt | 1 +
.../org/apache/texera/auth/JwtAuthFilter.scala | 9 +
.../source/scan/csv/CSVScanSourceOpDesc.scala | 6 +-
.../scan/csv/ParallelCSVScanSourceOpDesc.scala | 7 +-
.../scan/csvOld/CSVOldScanSourceOpDesc.scala | 7 +-
.../source/scan/csv/CSVScanSourceOpDescSpec.scala | 50 ++
computing-unit-managing-service/build.sbt | 7 +
.../service/ComputingUnitManagingService.scala | 29 +-
.../ComputingUnitManagingServiceRunSpec.scala | 27 +-
.../org/apache/texera/service/ConfigService.scala | 26 +-
.../texera/service/resource/ConfigResource.scala | 27 +-
.../texera/service/ConfigServiceRunSpec.scala | 27 +-
.../service/resource/ConfigResourceAuthSpec.scala | 187 +++++
docs/tutorials/migrate-jupyter-notebook.md | 2 +-
.../texera/service/resource/DatasetResource.scala | 45 ++
.../service/resource/DatasetResourceSpec.scala | 44 ++
frontend/angular.json | 7 +-
frontend/package.json | 1 +
frontend/src/app/app-routing.constant.ts | 49 +-
frontend/src/app/app-routing.module.ts | 35 +-
.../app/common/service/gui-config.service.mock.ts | 4 +
.../app/common/service/gui-config.service.spec.ts | 194 ++++++
.../src/app/common/service/gui-config.service.ts | 86 ++-
.../app/common/service/user/auth-guard.service.ts | 4 +-
.../app/common/service/user/user.service.spec.ts | 62 ++
.../src/app/common/service/user/user.service.ts | 29 +-
frontend/src/app/common/util/format.util.spec.ts | 140 ++++
frontend/src/app/common/util/format.util.ts | 36 +
.../admin/execution/admin-execution.component.html | 2 +-
.../execution/admin-execution.component.spec.ts | 21 +
.../admin/settings/admin-settings.component.html | 34 +-
.../admin/settings/admin-settings.component.scss | 11 +
.../settings/admin-settings.component.spec.ts | 8 +
.../dashboard/component/dashboard.component.html | 22 +-
.../component/dashboard.component.spec.ts | 63 +-
.../app/dashboard/component/dashboard.component.ts | 51 +-
.../dataset-card-item.component.html | 101 +++
.../dataset-card-item.component.scss | 198 ++++++
.../dataset-card-item.component.spec.ts | 158 +++++
.../dataset-card-item.component.ts | 134 ++++
.../user/list-item/list-item.component.html | 4 +-
.../user/list-item/list-item.component.spec.ts | 70 ++
.../user/list-item/list-item.component.ts | 54 +-
.../user/search-bar/search-bar.component.spec.ts | 6 +-
.../user/search-bar/search-bar.component.ts | 4 +-
.../search-results/search-results.component.html | 80 ++-
.../search-results/search-results.component.scss | 18 +
.../search-results/search-results.component.ts | 11 +-
.../share-access/share-access.component.spec.ts | 473 ++++++++++++-
.../user/share-access/share-access.component.ts | 12 +-
.../user-computing-unit-list-item.component.html | 2 +-
.../user-computing-unit-list-item.component.ts | 27 +-
.../dataset-detail.component.html | 5 +-
.../dataset-detail.component.ts | 41 +-
.../user-dataset-list-item.component.html | 2 +-
.../user-dataset-list-item.component.spec.ts | 281 ++++++++
.../user-dataset-list-item.component.ts | 4 +-
.../user-dataset/user-dataset.component.spec.ts | 312 +++++++++
.../user/user-dataset/user-dataset.component.ts | 4 +-
.../user/user-icon/user-icon.component.spec.ts | 32 +
.../user/user-icon/user-icon.component.ts | 4 +-
.../user-project-list-item.component.ts | 4 +-
.../user-workflow-list-item.component.html | 4 +-
.../user-workflow-list-item.component.ts | 6 +-
.../user-workflow/user-workflow.component.spec.ts | 19 +
.../user/user-workflow/user-workflow.component.ts | 4 +-
.../service/admin/guard/admin-guard.service.ts | 4 +-
.../service/user/dataset/dataset.service.ts | 4 +
.../local-login/local-login.component.spec.ts | 355 ++++++++++
.../about/local-login/local-login.component.ts | 6 +-
.../browse-section.component.spec.ts | 37 +
.../browse-section/browse-section.component.ts | 24 +-
.../hub-search-result.component.html | 41 +-
.../hub-search-result.component.scss | 35 +
.../hub-search-result.component.ts | 31 +-
frontend/src/app/hub/component/hub.component.html | 6 +-
.../src/app/hub/component/hub.component.spec.ts | 165 +++++
frontend/src/app/hub/component/hub.component.ts | 12 +-
.../landing-page/landing-page.component.spec.ts | 209 ++++++
.../landing-page/landing-page.component.ts | 12 +-
.../detail/hub-workflow-detail.component.ts | 14 +-
frontend/src/app/hub/service/hub.service.ts | 21 +
.../code-editor.component.browser.spec.ts | 324 +++++++++
.../workspace/component/menu/menu.component.html | 2 +-
.../component/menu/menu.component.spec.ts | 110 +++
.../app/workspace/component/menu/menu.component.ts | 18 +-
.../computing-unit-selection.component.ts | 10 +-
.../workflow-editor/workflow-editor.component.scss | 8 +-
.../workflow-editor.component.spec.ts | 421 ++++++++----
.../workflow-editor/workflow-editor.component.ts | 80 ++-
.../component/workspace.component.spec.ts | 46 ++
.../app/workspace/component/workspace.component.ts | 4 +-
.../workflow-compiling.service.spec.ts | 242 +++++++
.../compile-workflow/workflow-compiling.service.ts | 83 +++
.../dynamic-schema/dynamic-schema.service.ts | 6 +-
.../virtual-environment.service.ts | 11 +-
.../model/joint-graph-wrapper.spec.ts | 25 +
.../workflow-graph/model/joint-graph-wrapper.ts | 22 +-
frontend/src/browser-buffer-polyfill.ts | 44 ++
frontend/vitest.browser.config.ts | 17 +-
frontend/yarn.lock | 1 +
workflow-compiling-service/LICENSE-binary | 3 +
workflow-compiling-service/build.sbt | 1 +
.../texera/service/WorkflowCompilingService.scala | 23 +-
.../amber/compiler/WorkflowCompilerSpec.scala | 317 +++++++++
.../service/WorkflowCompilingServiceRunSpec.scala | 27 +-
.../resource/WorkflowCompilationResourceSpec.scala | 260 +++----
153 files changed, 8076 insertions(+), 952 deletions(-)
create mode 100644 .github/workflows/welcome-first-time-contributor.yml
create mode 100644
amber/src/main/scala/org/apache/texera/web/resource/HuggingFaceModelResource.scala
create mode 100644
amber/src/test/scala/org/apache/texera/web/resource/HuggingFaceModelResourceSpec.scala
copy bin/k8s/templates/{gateway-security-policy.yaml =>
agent-service-backend-traffic-policy.yaml} (64%)
create mode 100644 bin/k8s/templates/agent-service-deployment.yaml
copy bin/k8s/templates/{lakefs-secret.yaml => agent-service-secret.yaml} (60%)
copy bin/k8s/templates/{config-service-service.yaml =>
agent-service-service.yaml} (74%)
copy bin/k8s/templates/{gateway-backend.yaml => litellm-config.yaml} (81%)
create mode 100644 bin/k8s/templates/litellm-deployment.yaml
copy bin/k8s/templates/{config-service-service.yaml => litellm-service.yaml}
(76%)
delete mode 100644 bin/single-node/NOTICE
copy
access-control-service/src/test/scala/org/apache/texera/service/AccessControlServiceRunSpec.scala
=>
computing-unit-managing-service/src/test/scala/org/apache/texera/service/ComputingUnitManagingServiceRunSpec.scala
(56%)
copy
access-control-service/src/test/scala/org/apache/texera/service/AccessControlServiceRunSpec.scala
=>
config-service/src/test/scala/org/apache/texera/service/ConfigServiceRunSpec.scala
(57%)
create mode 100644
config-service/src/test/scala/org/apache/texera/service/resource/ConfigResourceAuthSpec.scala
create mode 100644 frontend/src/app/common/service/gui-config.service.spec.ts
create mode 100644 frontend/src/app/common/util/format.util.spec.ts
create mode 100644
frontend/src/app/dashboard/component/user/dataset-card-item/dataset-card-item.component.html
create mode 100644
frontend/src/app/dashboard/component/user/dataset-card-item/dataset-card-item.component.scss
create mode 100644
frontend/src/app/dashboard/component/user/dataset-card-item/dataset-card-item.component.spec.ts
create mode 100644
frontend/src/app/dashboard/component/user/dataset-card-item/dataset-card-item.component.ts
create mode 100644
frontend/src/app/dashboard/component/user/user-dataset/user-dataset-list-item/user-dataset-list-item.component.spec.ts
create mode 100644
frontend/src/app/dashboard/component/user/user-dataset/user-dataset.component.spec.ts
create mode 100644
frontend/src/app/hub/component/about/local-login/local-login.component.spec.ts
create mode 100644 frontend/src/app/hub/component/hub.component.spec.ts
create mode 100644
frontend/src/app/hub/component/landing-page/landing-page.component.spec.ts
create mode 100644
frontend/src/app/workspace/component/code-editor-dialog/code-editor.component.browser.spec.ts
create mode 100644
frontend/src/app/workspace/service/compile-workflow/workflow-compiling.service.spec.ts
create mode 100644 frontend/src/browser-buffer-polyfill.ts
create mode 100644
workflow-compiling-service/src/test/scala/org/apache/texera/amber/compiler/WorkflowCompilerSpec.scala
copy
access-control-service/src/test/scala/org/apache/texera/service/AccessControlServiceRunSpec.scala
=>
workflow-compiling-service/src/test/scala/org/apache/texera/service/WorkflowCompilingServiceRunSpec.scala
(56%)