docs: rewrite the docs tree for 2.0 and add the 1.x migration guide#68
Merged
Conversation
The docs/ tree still described nuts: constructor and interceptor APIs that don't exist, /api/resolve and Atom feeds that were never ported, combined GITHUB_REPO env vars, basic auth that was never implemented, and a Heroku app.json that configured a server that could not boot. Every page is rewritten against the shipped 2.0 surface: - NEW docs/migrating-2.0.md: every 1.x breaking change with its replacement, for operators, shipped update clients, and module consumers; linked from the README, FAQ, and SUMMARY - urls.md: full route reference plus the request-vocabulary table (platform ids vs os/arch/pkg vs filetype vs format) - module.md: real ESM constructor, options, events, middleware auth - deploy.md/app.json: actual env vars (GITHUB_OWNER/GITHUB_REPO, PECANS_REFRESH_SECRET, TRUST_PROXY, PECANS_BASE_PATH, PECANS_CACHE_MAX_AGE), docker instructions - github.md: /webhook/refresh with signature verification - update-osx.md: fixed example (the old one built darwin_x64, an invalid platform id); update-windows.md: MSIX via the format segment - assets.md/faq.md: token-based detection rules, arm64/msix naming, 64-bit default (the 32-bit-default claim was long stale) - README: drop the removed /update redirect from the feature list Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
There was a problem hiding this comment.
Pull request overview
This PR rewrites the docs/ tree to accurately describe Pecans 2.0’s shipped HTTP surface, module API, deployment configuration, and GitHub webhook behavior, and adds a comprehensive 1.x → 2.x migration guide.
Changes:
- Adds a new 1.x → 2.x migration guide documenting all breaking changes and replacements.
- Replaces/updates documentation pages for routes, update clients (macOS/Windows), module usage, API, assets, GitHub webhook, deployment, and FAQs to match the 2.0 implementation.
- Updates
README.mdandapp.jsonto align top-level guidance and Heroku deployment configuration with the 2.0 surface.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates route list and links to the new 1.x → 2.x migration guide. |
| docs/urls.md | Rewrites the route reference and request vocabulary for 2.0. |
| docs/update-windows.md | Updates Windows auto-updater guidance including MSIX format-segment routes. |
| docs/update-osx.md | Updates macOS auto-updater guidance and correct platform id examples. |
| docs/SUMMARY.md | Restructures the docs navigation and adds the migration guide entry. |
| docs/README.md | Refreshes docs index links and naming (macOS/module/API). |
| docs/module.md | Updates module usage for ESM, Express router composition, backend options, and download events. |
| docs/migrating-2.0.md | New migration guide covering runtime, env vars, route removals/behavior changes, and module API removals. |
| docs/github.md | Updates GitHub webhook documentation to /webhook/refresh with signature verification semantics. |
| docs/faq.md | Updates FAQ answers to match 2.0 behavior (auth, backends, feeds removal, naming, etc.). |
| docs/deploy.md | Updates deployment instructions and documents current env vars and Docker/Heroku guidance. |
| docs/assets.md | Updates asset naming/detection rules and download priority to match current resolution behavior. |
| docs/api.md | Updates API reference to 2.0 endpoints and response shapes. |
| app.json | Updates Heroku env var declarations to match current configuration surface. |
Copilot review: urls.md's "all routes are GET" intro now notes the POST-only webhook; deploy.md marks GITHUB_TOKEN as optional for the Heroku button; app.json declares the optional PECANS_BASE_PATH and PECANS_CACHE_MAX_AGE to match the documented surface. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review: the platform-default parenthetical listed zip/nupkg, which are default-package assets in the model but never /dl defaults; the row now names what /dl actually serves per os. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review, both verified against source: Pecans never reads its cacheMaxAge option (the cache lives on the backend), so the option is documented under the backend only; and /api/versions?platform= takes canonical composite ids without alias mapping, so the migration guide no longer claims aliases work everywhere. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
…lone Copilot review round 4: universal is an osx/windows arch only (/dl/linux/universal 404s), qualified in the README bullet and the vocabulary table; the MSIX feed example now defines platform/version inside the code block. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review round 5: linux-ia32 is not aliased (Electron dropped 32-bit Linux in v4; the canonical linux_32 id remains), and any arm* token classifies as arm64 because pecans does not model 32-bit ARM - both now stated explicitly. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review round 6: EventEmitter listeners run synchronously and can throw or stall the request; the accurate claim is that return values are ignored (no approve/deny), not that listeners cannot block. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review round 7: an arm64-only release still serves on bare-os requests (pinned since #62); "never default to arm64" overstated the rule. All three occurrences now say arm64 ranks last and serves only as the sole matching build. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Copilot review round 8: validateReqQueryTag accepts "latest" alongside semver versions and ranges. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 14 out of 14 changed files in this pull request and generated no new comments.
Comments suppressed due to low confidence (1)
docs/urls.md:21
- The sentence tying aliases to the
${process.platform}-${process.arch}matrix is slightly inaccurate becausedarwin-universalis not a possibleprocess.archvalue (it’s a build artifact/alias, not a runtime arch). Rewording avoids implying a client can computedarwin-universalfrom${process.platform}-${process.arch}.
Platform aliases cover the `${process.platform}-${process.arch}` matrix a
modern Electron app can produce: `darwin-x64`, `darwin-arm64`,
`darwin-universal`, `win32-x64`, `win32-ia32`, `win32-arm64`, `linux-x64`,
`linux-arm64`, plus legacy names (`darwin`, `mac`, `win32`, `osx-x64`, ...).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
PR 10 — the finale of the 2.0 release-review series. The
docs/tree still described nuts: constructor and interceptor APIs that don't exist,/api/resolveand Atom feeds that were never ported, combinedGITHUB_REPOenv vars, basic auth that was never implemented, and a Herokuapp.jsonthat configured a server that could not boot. Every page is rewritten against the shipped 2.0 surface.Changes
docs/migrating-2.0.md— every 1.x breaking change with its replacement, organized for the three audiences: server operators (env var table, webhook move), shipped update clients (what keeps working untouched, what MSIX clients must change), and module consumers (removal table incl. theGitHubBackendargument-order trap). States the 2.x guarantee: no deprecated APIs shipping.urls.md— full route reference plus the request vocabulary table disambiguating platform ids vs os/arch/pkg vs filetype vs format.module.md— real ESM constructor, options reference,beforeDownload/afterDownloadevents, auth-via-middleware pattern replacing the nuts interceptors.deploy.md+app.json— actual env vars (GITHUB_OWNER/GITHUB_REPOsplit,PECANS_REFRESH_SECRET,TRUST_PROXY,PECANS_BASE_PATH,PECANS_CACHE_MAX_AGE), Docker instructions. The Heroku deploy button now configures a server that boots.github.md—/webhook/refreshwith signature verification (was/refresh+GITHUB_SECRETdefaultsecret).update-osx.md— fixed example: the old one builtdarwin_x64, an invalid platform id (underscore instead of hyphen).update-windows.md— MSIX via the format segment per feat!: update.electronjs.org-compatible format routes; remove /update ?filetype #66.assets.md/faq.md— token-based detection rules, arm64/msix naming guidance, 64-bit default (the "32-bit by default" claim was stale since long before the fork).README.md— drops the/updateredirect removed in chore!: remove the 2.0-era deprecations #67 from the feature list; links the migration guide.Verification
npm run format:checkclean over the docs; full suite still 839 green (no src changes).src/pecans.tsregistrations andconfigure()/main().🤖 Generated with Claude Code
https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ
Generated by Claude Code