Migrate Pursuit application to the monorepo

未關閉
#789 1 則留言 1 個 reaction 已指派 1 人 在 GitHub 檢視

維護者通常 1 天內回覆

@thomashoneyman 已經在處理了。

開始於 2026年7月27日。

評估

這個 Issue 還沒有評估資料。

描述

pursuit

As part of #750 we need to replace the parts of Pursuit which assume packages come from GitHub repositories with SemVer tags. #704 tracks defining and storing a registry-owned docs format, and #525 tracks generating that format without calling purs publish. Once those are in place we still need an application that can actually serve those docs.

I think the new Pursuit should live in this repository rather than in a separate repository. It can be its own PureScript package and executable, separate from the registry server itself, but then we can share types and rendering code directly and use the same Nix and deployment infrastructure. The existing Haskell Pursuit can remain the reference implementation while we build this, but it's not a port, it's a rewrite.

The rough model discussed in #704 is that Pursuit would be mostly static:

  • The canonical docs JSON for each package version lives in a DigitalOcean bucket.
  • We generate package and module HTML from that JSON ahead of time and upload it to the same bucket (or another static origin).
  • A small Pursuit server remains for things which are necessarily dynamic, like search, redirecting to the latest version, listing available versions, and badges.
  • Package source links go to the registry package viewer instead of GitHub.

The package viewer should probably move into this repository too, even if it is still deployed as an independent static application. That gives us one place for all of the code that makes up Pursuit.

We should preserve the public parts of Pursuit that people and package managers depend on. In particular:

  • Existing package and module URLs should continue to work.
  • Declaration fragments should remain stable.
  • Links to dependencies and re-exports should use the exact versions recorded in the docs.
  • The available-versions endpoint and badges should keep working.
  • Old purescript-foo URLs should permanently redirect to proper registry names such as foo, completing the Pursuit side of #388.
  • Existing unversioned URLs should continue redirecting to the latest version.

The registry will be the only publisher to the new Pursuit. We don't need to recreate the existing GitHub-token upload flow because package identity and authorization have already been handled by the registry before the docs artifact is generated.

We will also need to migrate existing documentation. For packages and versions in the registry we should be able to regenerate docs from their stored tarballs. For historical packages which only exist in Pursuit, Nathan's migration code in #704 can convert the contents of pursuit-backups and fetch any missing README files. We should do this progressively and keep track of packages which can't be migrated, rather than making the whole migration all-or-nothing. We still need to decide whether non-registry historical packages should remain visible by default.

During development the registry can continue publishing to the existing Pursuit while also generating docs for the new one. Once we have migrated the existing docs, verified the old URLs, and run the new application in a preview environment, we can move pursuit.purescript.org over. It would be useful to keep the old Pursuit available as a temporary fallback for pages that weren't migrated correctly, with those fallback requests logged so we can repair them.

Search and compiler-versioned Prim documentation are large enough to track in a separate issue, but both are requirements for switching production Pursuit over.

主要語言
PureScript
星號
95
分支
79
平均合併
16 小時 13 分鐘
30 天內合併 PR
14

環境準備

  • 沒有 Dockerfile 或 Docker Compose 檔案
  • 沒有 Pull Request 範本
  • 閱讀貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

purescript/registry-dev 的其他 Issue

查看 purescript/registry-dev 的全部 Issue

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。