Skip to content

Integrate Steam Workshop browser, sync, and resilient downloads - #2

Merged
FallenCrystal merged 82 commits into
mainfrom
feat/integrated-steam-workshop
Jul 12, 2026
Merged

Integrate Steam Workshop browser, sync, and resilient downloads#2
FallenCrystal merged 82 commits into
mainfrom
feat/integrated-steam-workshop

Conversation

@FallenCrystal

@FallenCrystal FallenCrystal commented Jul 6, 2026

Copy link
Copy Markdown
Owner

Summary

This PR integrates Steam Workshop as a first-class source in Left 4 Addons instead of only managing local VPK files.

What changed

  • Added an in-app Workshop browser with home sections, search, tags, item details, galleries, required items, parent collections, and author metadata.
  • Added Steamworks SDK / Steam bridge integration with configurable source policy, web/SSR fallback parsing, metadata caching, and SDK disable safeguards.
  • Added background download infrastructure with queueing, retry/progress state, resumable downloads, concurrency settings, and the Task Center UI.
  • Added known-uninstalled addon handling, master collections, dependency/detail resolution, and safer workshop download/delete flows.
  • Switched addon operations toward stable identifiers and content hashing instead of relying on filenames.
  • Added file watcher based auto-refresh while suppressing duplicate/internal refresh noise.
  • Split large frontend/backend modules, extracted i18n JSON resources, and added coverage for the new workshop, cache image, modal, settings, helper, and task flows.

TODO

  • 解析创意工坊网页内容:主页、搜索、详情页跳转
  • 创意工坊详情页:合集、需要的其它附件、画廊、评分、描述
  • 分组重构,支持作为创意工坊合集载体
  • 正式集成“未安装的已知附件”
  • 并发下载, 下载设置, 断点续传, 下载队列和重试
  • 下载/添加/推荐 Addon 后自动刷新附件列表
  • 使用唯一 ID 而不是文件名作为标识符
  • 后台任务 (下载 同步Steam创意工坊内容) UI 提示
  • 支持 Steamworks SDK
  • Steam ID 和作者名同步
  • 允许随时覆盖 Dummy 附件
  • 已下载的分组附件优先排序
  • 批量操作状态过滤修复
  • 抓取已有创意工坊订阅 (Steamworks SDK)
  • 下载和添加 推荐 Addon 所需的其它 Addon
  • 支持第三方 CDN 加速
  • 允许创意工坊搜索回退 Web 抓取
  • 调查并修复空分组不显示内容的问题
  • 删除操作

- Add loading animation feedback when clicking on a workshop item
- Align section carousel cards precisely with their section titles
- Fix hover scaling artifacts and clipping on addon cards by adding a 1px solid focus ring and z-index
- Add top padding to browse grid to prevent scaled cards from being clipped by scroll container
- Keep sort and filter buttons visible when searching from browse view
- Automatically switch to browse view when focusing the search input on the home page
- Reset to default browse view when the search box is cleared
- Add Master Collection concept, types, and UI components
- Add modal for adding addons to groups and master collections
- Support tracking and downloading uninstalled addons
- Update sidebar to display master collections
- Enhance i18n for new features
FallenCrystal and others added 25 commits July 10, 2026 20:36
…tems

- Fix race condition in DetailModal when fetching workshop page details rapidly.

- Add stopPropagation to prevent click events from bubbling up in WorkshopCommon item links.

- Fix detail modal not resolving or keeping open placeholder workshop entries on database update.

- Add tests for DetailModal, WorkshopCommon and updated useAddonManager tests.

- Fix mock data in GroupHeader.test.tsx.
… and wake up Steam client by default from addon cards
@FallenCrystal
FallenCrystal marked this pull request as ready for review July 12, 2026 14:01
@FallenCrystal FallenCrystal mentioned this pull request Jul 12, 2026
11 tasks
@FallenCrystal
FallenCrystal merged commit d7a37cf into main Jul 12, 2026
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.

1 participant