Wayfinder is a set of tools and libraries that enable decentralized and cryptographically verified access to data stored on Arweave via the AR.IO Network.
This monorepo contains the following packages:
- @ar.io/wayfinder-core: Core JavaScript library for the Wayfinder routing and verification protocol (ALPHA)
- @ar.io/wayfinder-react: React components for Wayfinder, including Hooks and Context provider (ALPHA)
- @ar.io/wayfinder-extension: Chrome extension for Wayfinder (ALPHA)
- @ar.io/wayfinder-cli: CLI for interacting with Wayfinder in the terminal - COMING SOON
Wayfinder is a simple, open-source client-side routing and verification protocol for the permaweb. It leverages the AR.IO Network to route users to the most optimal gateway for a given request.
- Builders who need reliable, decentralized access to Arweave data through the powerful AR.IO Network
- Browsers who demand complete control over their permaweb journey with customizable gateways and robust verification settings for enhanced security and reliability
- Operators who power the AR.IO Network and want to earn rewards* for serving wayfinder traffic to the growing permaweb ecosystem
- Branch from
alpha
- Create a new branch for your changes (e.g.
feat/my-feature
) - Make your changes on your branch, push them to your branch
- As you make commits/changes or once you're ready to release, create a changeset describing your changes via
npx changeset
. - Follow the prompts to select the packages that are affected by your changes.
- Add and commit the changeset to your branch
- Request review from a maintainer, and once approved, merge your changes into the
alpha
branch - A release PR will be automatically created with all pending changesets to the
alpha
branch - The maintainer will review the PR and merge it into
alpha
, which will trigger the automated release process using all pending changesets
This project uses Changesets to manage versioning and package releases.
To create a changeset when making changes:
npx changeset
This will guide you through the process of documenting your changes and selecting which packages are affected. Changesets will be used during the release process to update package versions and generate changelogs.
This repository is configured with GitHub Actions workflows that automate the release process:
- Main Branch: When changes are merged to
main
, a standard release is created - Alpha Branch: When changes are merged to
alpha
, a prerelease (alpha tagged) is created
The workflow automatically:
- Determines whether to create a prerelease or standard release based on the branch
- Versions packages using changesets
- Publishes to npm
- Creates GitHub releases
- Pushes tags back to the repository
To use the automated process:
- Create changesets for your changes
- Push your changes to a feature branch
- Create a pull request to
alpha
(for prereleases) ormain
(for standard releases) - When the PR is merged, the release will be automatically created
If you need to release manually, follow these steps:
To release a new alpha version:
npx changeset version
- Review the version changes and changelogs
- Commit the changes:
git add .
git commit -m "chore(release): version packages"
- Publish the packages to npm:
npm run build
npx changeset publish
- Push the changes and tags:
git push origin main --follow-tags
For prerelease versions (e.g., beta, alpha):
- Enter prerelease mode specifying the tag:
npx changeset pre enter beta
- Create changesets as normal:
npx changeset
- Version and publish as normal:
npx changeset version
# Review changes
git add .
git commit -m "chore(release): prerelease version packages"
npm run build
npx changeset publish
git push origin main --follow-tags
- Exit prerelease mode when ready for a stable release:
npx changeset pre exit
- Follow the normal release process for the stable version.