Skip to content

chore: retire the scene pool and contest subsystem - #3495

Merged
cyaiox merged 1 commit into
sunset/6-template-cleanupfrom
sunset/7-retire-pool
Sep 4, 2026
Merged

chore: retire the scene pool and contest subsystem#3495
cyaiox merged 1 commit into
sunset/6-template-cleanupfrom
sunset/7-retire-pool

Conversation

@cyaiox

@cyaiox cyaiox commented Sep 1, 2026

Copy link
Copy Markdown
Member

Description

Follow-up cleanup on the web scene editor sunset stack: retire the scene pool / contest subsystem. Its UI (pool gallery, scene/pool viewers, contest submission) was removed in earlier layers, but the data layer was left behind — poolGroupSaga still fetched pool groups from the API on every app startup, and modules/pool/modules/poolGroup/ContestModal plus their wiring were still compiled in. This removes all of it. Net −1772 lines / +19 across 55 files. No user-facing behaviour change — everything removed was already unreachable.

Type of Change

  • New feature
  • Bug fix
  • Refactoring (no functional changes)
  • Documentation update
  • Infrastructure / CI/CD
  • Performance improvement

Changes Made

  • Deleted src/modules/pool/, src/modules/poolGroup/, and src/components/Modals/ContestModal/; unregistered ContestModal from the modal registry.
  • Removed the poolSaga/poolGroupSaga root-saga forks — the startup fetchPoolGroups request is gone.
  • Removed the dead public-project load flow (LOAD_PUBLIC_PROJECT_*, handleLoadPublicProject) and the now-unused pool API methods (fetchPublicProject, fetchPoolsPage, fetchPoolGroups, likePool, and the pool remote-mappers/types).
  • ProjectCard: dropped getPoolProjects and the PreviewType.POOL branch — the type prop is gone; scene loading uses the PROJECT default.
  • DeployModal: removed the pool/contest bits (DeployToPool subview, DEPLOY_TO_POOL, currentPoolGroup, the pool option) — the unpublish (CLEAR_DEPLOYMENT) path and the DEPLOY_TO_LAND/DEPLOY_TO_WORLD views are untouched.
  • Removed the PreviewType.POOL enum member (kept PUBLIC/PROJECT), pool analytics entries, the pool bits in profile/selectors and scene/utils, and the dead pool/contest i18n trees (en/es/zh).

Kept, still referenced by live code: deployToPool + PoolDeploymentAdditionalFields in the builder API and the deployToPool* deployment actions/saga (modules/deployment/sagas.ts). These are likely dead too now, but they live in the deployment flow — leaving them for a separate deployment/publish cleanup rather than widening this PR.

How to Test

  1. Load the app and check the Network tab on startup — there is no fetchPoolGroups / pool request anymore.
  2. npx tsc --noEmit clean; npx jest full suite green (1576/1576); npm run build succeeds.
  3. Unpublish still works: open a scene with a deployment → the menu → Unpublish opens DeployModal (CLEAR_DEPLOYMENT) and clears it.
  4. /scenes lists/opens/downloads/deletes scenes normally.

Checklist

  • Code follows the project's style guidelines
  • Self-reviewed the code for obvious errors
  • Added or updated tests where applicable (removed tests for deleted code)
  • Existing tests pass locally
  • Updated documentation if needed
  • No new warnings or console errors introduced

Related Issues

Top of the web scene editor sunset stack. Base: sunset/6-template-cleanup.

Screenshots

No UI change — removal of unreachable pool/contest code + a dropped startup request.

@vercel

vercel Bot commented Sep 1, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
builder Ready Ready Preview Sep 4, 2026 2:22pm UTC

Request Review

@coveralls

coveralls commented Sep 1, 2026

Copy link
Copy Markdown

Coverage Report for CI Build 33883079775

Coverage increased (+0.4%) to 56.014%

Details

  • Coverage increased (+0.4%) from the base build.
  • Patch coverage: 3 uncovered changes across 3 files (3 of 6 lines covered, 50.0%).
  • 2 coverage regressions across 1 file.

Uncovered Changes

File Changed Covered %
src/modules/profile/selectors.ts 2 1 50.0%
src/modules/project/selectors.ts 3 2 66.67%
src/modules/scene/utils.ts 1 0 0.0%

Coverage Regressions

2 previously-covered lines in 1 file lost coverage.

File Lines Losing Coverage Coverage
src/modules/project/reducer.ts 2 25.64%

Coverage Stats

Coverage Status
Relevant Lines: 12650
Covered Lines: 7706
Line Coverage: 60.92%
Relevant Branches: 5808
Covered Branches: 2633
Branch Coverage: 45.33%
Branches in Coverage %: Yes
Coverage Strength: 36.48 hits per line

💛 - Coveralls

@cyaiox
cyaiox marked this pull request as ready for review September 1, 2026 16:14

@decentraland-bot decentraland-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: chore: retire the scene pool and contest subsystem

Clean, well-scoped removal of the scene pool / contest subsystem. −1772 / +19 across 55 files. All CI checks pass (tests, audit, Vercel deploy), and coverage increased +0.5% to 56.8%.

Security Review

✅ No security issues found. The PR only removes code — no new attack surface, no secrets, no auth changes, no new inputs.

Correctness

✅ All pool/poolGroup Redux modules fully removed from root reducer, root saga, and RootState type.
✅ No dangling references to deleted symbols (PoolState, PoolGroupState, getCurrentPool, getActivePoolGroup, PreviewType.POOL, ContestModal, LOAD_PUBLIC_PROJECT_*, fromRemotePool, fromPoolGroup).
DeployModal behavior change is correct: the old if (view === DEPLOY_TO_LAND || currentPoolGroup) shortcut to the land view is safely removed since currentPoolGroup no longer exists.
ProjectCard correctly drops the type prop — loadProjectSceneRequest defaults to PreviewType.PROJECT.
PreviewType.PUBLIC is still used (project/sagas.ts), correctly kept.
✅ Intentionally retained deployToPool* in deployment/sagas.ts and PoolDeploymentAdditionalFields in builder.ts — all imports resolve; clean scope boundary for a separate cleanup.

Consumer Impact

No public API surface changed. All changes are internal to the builder app.

Git Conventions (ADR-6)

chore: retire the scene pool and contest subsystem — valid semantic commit title.

Findings

[P2] Orphaned deployment_modal.pool.title keysrc/components/Modals/DeployModal/DeployToLand/DeployToLand.tsx:211 still calls t('deployment_modal.pool.title') ("Publish your Scene"). The en/es/zh translation files retain the "pool": {"title": "..."} key specifically for this. Consider renaming to a non-pool key (e.g. deployment_modal.land.publish_title) and deleting the pool translation entry entirely. Low priority — works fine as-is.

[P2] Dead ShareModalType.POOL enum valuesrc/components/Modals/ShareModal/ShareModal.types.ts still defines POOL = 'pool', but it is no longer referenced anywhere (its only consumer was the deleted ContestModal). Safe to remove.

[P2] Likely dead NewsletterSource.PUBLISH_POOLsrc/lib/api/newsletter.ts:7 defines PUBLISH_POOL = 'builder-publish-pool', which appears unreferenced after the pool deploy flow removal.

[P2] Empty comment blocksrc/modules/analytics/track.ts:173 has a bare // Like comment after removing LIKE_POOL_REQUEST. Can be cleaned up.

[P2] Stale copyen.json:862 SDK download description mentions "download scenes from the scene pool and templates" — references the sunset feature.

Verdict

Approved — no P0 or P1 issues. All findings are minor P2 cleanup items that can be addressed in a follow-up. The removal is thorough, consistent, and well-documented.


Reviewed by Jarvis 🤖 · Requested by Gabriel Díaz (<@U03MGHMAJL8>) via Slack

Remove the now-unreachable pool/contest feature: delete modules/pool,
modules/poolGroup, and ContestModal, and stop the startup fetchPoolGroups
by unforking their sagas. Drop the dead public-project load flow, the
pool API methods, the pool option in DeployModal, the PreviewType.POOL
enum member, and the getPoolProjects branch in ProjectCard. Keep the
unpublish (CLEAR_DEPLOYMENT) path and deployToPool (still referenced by
the deployment saga) intact.
@cyaiox
cyaiox force-pushed the sunset/7-retire-pool branch from f29f692 to 86fa535 Compare September 4, 2026 14:19
@cyaiox
cyaiox merged commit ef20e71 into master Sep 4, 2026
9 checks passed
@cyaiox
cyaiox deleted the sunset/7-retire-pool branch September 4, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants