The GitHub Actions job "Required Checks" on texera.git/gh-readonly-queue/main/pr-7463-90d0404f1bbcef98edd7c62d13f35b5287663c64 has succeeded. Run started by GitHub user aglinxinyuan (triggered by aglinxinyuan).
Head commit for run: b67b1c99ab848d440b959af9460771c9faebafdf / Xinyuan Lin <[email protected]> feat(frontend): remove the deprecated project feature (#7463) ### What changes were proposed in this PR? Removes the deprecated **project** feature from the Angular frontend. The feature was hidden behind `projects_enabled = false` in #3343 (2025-04-02) and has been unmaintained since; #5172 reached consensus to delete it rather than keep carrying it. This is the frontend half; the backend endpoints and the database schema go separately in #7464. Landing this half alone is safe **because of the guard added to `SearchService.search`**, not because the backend stops being called. `/dashboard/search` still unions project rows into the all-resource-type response while #7464 is unmerged, and this client no longer models them: `convertToName` and `DashboardEntry` both throw on an unrecognised payload, and the search-bar autocomplete subscribes with no error handler, so one such row would kill it for the session. The guard drops rows carrying no client-modelled payload at the single funnel every consumer calls, which also covers any resource type the server gains before the client models it. *Known trade-off, taken deliberately:* those rows were counted against the server's `offset`/`limit`, while `SearchResultsComponent.loadMore` pages from `entries.length` and appends without dedup. On the "All" tab a window holding k dropped rows re-fetches k already-shown rows, and an all-dropped window leaves the offset unmoved — "Load more" re-requests the same window while `more` stays true. Typed tabs and the search bar are unaffected. Correcting it belongs in the `LoadMoreFunction` contract shared by all five callers of `SearchResultsComponent.reset`, and #7464 removes the only thing that produces such rows. **28 files deleted, 58 edited (+125 / −4902).** | Area | What went | | --- | --- | | Components | the whole `user-project/` tree — list page, section page, list item, public-project modal, add/remove-workflow modals (22 files) | | Services | `UserProjectService`, `StubUserProjectService`, `PublicProjectService` | | Types | `DashboardProject` / `PublicProject`, `SearchResult.project`, `isDashboardProject`, `DashboardWorkflow.projectIDs` | | Routing | `user/project`, `user/project/:pid`, the `USER_PROJECT` constant, 6 `app.module.ts` declarations | | Config | `SidebarTabs.projects_enabled`, the sidebar tab, the admin-settings toggle | | Search / filters | project filter chips, `projectIds` search params, the project arm of the entry builder, `EntityType.Project` | **UI impact.** Every surface below `projects_enabled` was already hidden by default, so a default deployment renders identically before and after — no user-visible change to screenshot. The one exception is the **admin settings page**, which loses its now-meaningless *Projects* toggle row (thirteen switches → twelve). ``` Before: Admin Settings ▸ tabs ▸ [Your Work][Projects][Workflows][Datasets]… After: Admin Settings ▸ tabs ▸ [Your Work][Workflows][Datasets]… ``` Two adjacent cleanups were deliberately **left out** of scope, since they are unrelated dead code rather than part of this feature: `hub-search-result.component.ts`'s `@Input() accessLevel` and `search-results.component.ts`'s `@Input() pid`. ### Any related issues, documentation, discussions? Closes #7460 Removal agreed in #5172; the backend and schema half is #7461. Also updates `frontend/README.md`, the only doc line that named the feature. ### How was this PR tested? Existing tests, adjusted where a project fixture was doing double duty as a generic sample (e.g. the "non-shareable entry" case now uses `"file"` instead of `"project"`), and deleted where a test existed solely to exercise project behaviour. ```bash cd frontend && npx tsc --noEmit && npx ng test --watch=false && yarn format:ci ``` | Check | Result | | --- | --- | | `tsc --noEmit` | clean | | `ng test --watch=false` | 195 files, **4118 passed**, 1 skipped, 0 failed | | `eslint ./src` | clean | | `prettier-eslint --list-different` | clean | `ng build` was also run: it reports 13 errors, all inside `node_modules` (monaco `.ttf`/`.svg`/`.css` loaders) and none under `src/app`. Confirmed pre-existing rather than caused by this change by building a pristine `origin/main` worktree against the same `node_modules` — identical 13 errors. ### Was this PR authored or co-authored using generative AI tooling? Generated-by: Claude Code (Opus 5) Report URL: https://github.com/apache/texera/actions/runs/33238746434 With regards, GitHub Actions via GitBox
