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

Reply via email to