Skip to content

docs: rewrite the docs tree for 2.0 and add the 1.x migration guide#68

Merged
dopry merged 9 commits into
nextfrom
docs/2-0-sweep
Jul 22, 2026
Merged

docs: rewrite the docs tree for 2.0 and add the 1.x migration guide#68
dopry merged 9 commits into
nextfrom
docs/2-0-sweep

Conversation

@dopry

@dopry dopry commented Jul 22, 2026

Copy link
Copy Markdown
Owner

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/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.

Changes

  • NEW 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. the GitHubBackend argument-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/afterDownload events, auth-via-middleware pattern replacing the nuts interceptors.
  • deploy.md + app.json — actual env vars (GITHUB_OWNER/GITHUB_REPO split, 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/refresh with signature verification (was /refresh + GITHUB_SECRET default secret).
  • update-osx.md — fixed example: the old one built darwin_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 /update redirect removed in chore!: remove the 2.0-era deprecations #67 from the feature list; links the migration guide.

Verification

  • npm run format:check clean over the docs; full suite still 839 green (no src changes).
  • Route/env claims cross-checked against src/pecans.ts registrations and configure()/main().

🤖 Generated with Claude Code

https://claude.ai/code/session_01GtqyiALpbkcM68Bq68JcPZ


Generated by Claude Code

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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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.md and app.json to 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.

Comment thread docs/urls.md Outdated
Comment thread docs/deploy.md Outdated
Comment thread app.json
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 AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.

Comment thread docs/urls.md Outdated
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 AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread docs/module.md Outdated
Comment thread docs/migrating-2.0.md Outdated
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 3 comments.

Comment thread README.md Outdated
Comment thread docs/urls.md Outdated
Comment thread docs/update-windows.md
…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 AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread docs/urls.md Outdated
Comment thread docs/assets.md Outdated
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 AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread docs/module.md Outdated
Comment thread docs/migrating-2.0.md Outdated
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 AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.

Comment thread docs/urls.md Outdated
Comment thread docs/migrating-2.0.md Outdated
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
@dopry
dopry requested a review from Copilot July 22, 2026 02:01

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.

Comment thread docs/urls.md Outdated
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

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

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 because darwin-universal is not a possible process.arch value (it’s a build artifact/alias, not a runtime arch). Rewording avoids implying a client can compute darwin-universal from ${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`, ...).

@dopry
dopry merged commit b44bed3 into next Jul 22, 2026
3 checks passed
@dopry
dopry deleted the docs/2-0-sweep branch July 22, 2026 02:26
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