The GitHub Actions job "License Binary Checker" on texera.git/main has failed. Run started by GitHub user github-merge-queue[bot] (triggered by github-merge-queue[bot]).
Head commit for run: 50321e403c82df299a13deb50a7f9849dd93bdba / Tanishq Gandhi <[email protected]> feat(frontend): add model file upload and version creation (#8078) ### What changes were proposed in this PR? Models can now be uploaded to and versioned from the UI. PR 3 of the ML-model frontend series, on top of #8068 and #8072, both merged. **What you can do:** upload files to a model, watch them upload, revert or delete staged changes, and commit them as a version. A new Settings tab edits the model's name, description, framework and format. Admin → Settings gains a Model card for the model upload limits. **1. Refactor — no behavior change.** The dataset detail page owned the whole upload machinery. This pulls it out into resource-agnostic pieces, addressed by a `FileResourceEndpoint` descriptor (base path, name query param, and the four `site_settings` keys): - `service/user/file-resource/multipart-upload.service.ts` — the ~280-line multipart engine, out of `DatasetService` - `service/user/file-resource/staged-file.service.ts` — diff, revert, delete - `component/user/version-uploader/` — the whole "Create New Version" panel (file picker, progress panels, staged list, version box) - `component/user/staged-objects-list/` — moved out of `user-dataset/` **2. Feature — models.** `MODEL_FILE_RESOURCE_ENDPOINT`, `ModelService` version/framework/format calls, the model page's upload panel and Settings tab, and the Admin Model upload card. **Two bugs fixed along the way.** - Renaming a model while an upload was in flight stranded it. The upload engine captures the resource name when the upload starts, so the remaining part and finish calls kept addressing the old name, and the abort — which reads the name at click time — 404'd as well. The Settings tab now blocks a rename until the panel is idle. - Renaming a model left its file tree pointing at the old name. File paths embed the resource name and both preview and single-file download resolve by that path, so every file 404'd until the page was reloaded. The Model Card's "Latest version file" went stale the same way. Renaming now refreshes both and reopens the file you were reading rather than resetting to the version's first. The dataset page has the same bug; it is deliberately left alone here so this PR changes no dataset behavior, and is queued with three other pre-existing dataset fixes for one cleanup PR at the end of the series. **Deliberately not here:** Access & visibility (public/private, downloadable) lands in PR 4 — both can be set when creating a model, just not changed afterwards yet. Delete stays on the Models list card. View and like counts stay static `0` until models reach the hub in PR 5. <img width="1202" height="703" alt="Screenshot 2026-08-28 at 1 49 22 PM" src="https://github.com/user-attachments/assets/ea601483-b68b-4d1e-ab49-5f3246e84211" /> <img width="1138" height="748" alt="Screenshot 2026-08-28 at 1 49 31 PM" src="https://github.com/user-attachments/assets/24240b49-acc3-4da9-9b3d-abfa3519cb04" /> <img width="1070" height="446" alt="Screenshot 2026-08-28 at 1 55 54 PM" src="https://github.com/user-attachments/assets/22c4cb19-1dda-4cff-98f6-72d35a57d585" /> ### Any related issues, documentation, discussions? Closes #6499. Follows #8068 (Models page) and #8072 (model detail page), both merged. Does not touch unified search, so it does not depend on #7930. ### How was this PR tested? 532 tests pass across the thirteen affected specs, including 72 in the new `version-uploader.component.spec.ts`. Every dataset upload test still exists — they moved to the component that now owns that code rather than being deleted. That includes the three `loadUploadSettings` fallback tests, which pin the invariant the code comments warn about: a failed or unparsable settings fetch must leave the tuning fields alone, because a NaN concurrency limit stalls the queue outright (`activeUploads < NaN` is never true). Two `ngOnInit` assertions changed: the dataset page no longer fetches upload tuning itself, so it no longer calls `getPublicSetting` on load; the panel does, when it renders. No dataset behavior changed. New coverage: the model endpoint and its own settings keys, version creation, framework/format editing with rollback on failure, and the Admin upload cards run against both resource families so one cannot write the other's keys. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Claude Opus 5) --------- Co-authored-by: Claude Opus 5 <[email protected]> Report URL: https://github.com/apache/texera/actions/runs/33385289582 With regards, GitHub Actions via GitBox
