# How to Update Everyone‑Can‑Use‑English to the Latest Version: A Complete Guide

> Easily update everyone-can-use-english to the latest version with this guide. Follow simple steps to pull code, install dependencies, and rebuild for development or distribution. Get the newest features now!

- Repository: [Zuodao/everyone-can-use-english](https://github.com/ZuodaoTech/everyone-can-use-english)
- Tags: how-to-guide
- Published: 2026-08-14

---

**Pull the latest code with `git pull`, run `yarn install` to refresh dependencies, then rebuild the Electron app with `cd enjoy && yarn dev` for development or `yarn make` for distribution.**

The `everyone-can-use-english` project maintained by **ZuodaoTech** is a monorepo containing an Electron desktop application for English learning. If you're running a local copy or contributing to development, keeping your installation current requires synchronizing code, updating Yarn workspace dependencies, and rebuilding the application. This guide walks through the exact commands and file locations based on the repository source code.

## Prerequisites: Understanding the Monorepo Structure

Before updating, it's important to understand how the repository is organized. The project uses **Yarn workspaces** to manage three distinct packages from the root [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json):

- **`enjoy/`** – The Electron desktop app (primary application)
- **`1000-hours/`** – The documentation site
- **`1000h-portal/`** – The content publishing portal

The root [[`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json)](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) declares these workspaces, enabling Yarn to orchestrate commands across all packages.

## Step 1: Sync Your Local Repository

First, ensure your local branch matches the remote `main` branch exactly.

```bash
git fetch --prune
git checkout main
git pull origin main

```

The `--prune` flag removes stale remote references. This guarantees you receive the latest version bumps, security patches, and feature commits.

## Step 2: Verify the Target Version

Check which version you're about to install by inspecting the Electron app's metadata.

```bash
cat enjoy/package.json | grep version

```

Alternatively, open [[`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json)](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json) directly. The `version` field (e.g., `0.7.9`) determines what the rebuilt app will report in its About dialog.

## Step 3: Refresh All Dependencies

From the repository root, run Yarn to install across all workspaces:

```bash
yarn install

```

This command:
- Resolves workspace interdependencies
- Updates `yarn.lock` with any new package versions
- Installs dependencies for `enjoy`, `1000-hours`, and `1000h-portal` simultaneously

## Step 4: Rebuild the Electron Application

Navigate to the `enjoy` workspace and choose your build target:

### Development Mode (Hot Reloading)

```bash
cd enjoy
yarn dev

```

The `dev` script in [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json) performs several tasks automatically:
- Executes `rimraf .vite` to clear stale build artifacts
- Downloads required dictionaries
- Launches Electron with development tools enabled

### Distribution Build (Installers)

```bash
cd enjoy
yarn make

```

This produces platform-specific installers (`.deb`, `.dmg`, `.zip`, etc.) in the `out/make/` directory. The `make` script calls **Electron Forge** to package and build distributables.

## Step 5: Publish a New Release (Optional)

If you have maintainer permissions and need to push a release:

```bash
cd enjoy
yarn publish

```

This executes `electron-forge publish`, which uploads builds to GitHub Releases and/or S3. The script requires environment variables (`GITHUB_TOKEN`, S3 credentials) injected at runtime—these are **not** stored in the repository.

## Step 6: Confirm the Update

Verify success through any of these methods:

- Open the app and check **Help → About** (or equivalent)
- Run `electron --version` from within the `enjoy` workspace
- Check the live version badge at `https://enjoy.bot/api/config/app_version`

The root [[`README.md`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/README.md)](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/README.md) displays a "Latest Version" badge that sources from this API endpoint, reflecting the current production release.

## Key Files Reference

| File | Purpose |
|------|---------|
| [`package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/package.json) (root) | Workspace declaration and monorepo configuration |
| [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json) | App metadata, Electron scripts (`dev`, `make`, `publish`), dependencies |
| [`enjoy/README.md`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/README.md) | Quick-start documentation for the desktop app |
| `enjoy/src/renderer/` | UI source code rebuilt on each `yarn dev` or `yarn make` |

## Summary

Updating **everyone-can-use-english** follows a predictable workflow:

- **Sync code** with `git pull origin main`
- **Check version** in [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json)
- **Install dependencies** with `yarn install`
- **Rebuild** using `yarn dev` (development) or `yarn make` (distribution)
- **Publish** via `yarn publish` when releasing (maintainers only)
- **Verify** through the About dialog or API endpoint

## Frequently Asked Questions

### How do I know if my update succeeded?

Compare the version shown in the application's About dialog against the `version` field in [`enjoy/package.json`](https://github.com/ZuodaoTech/everyone-can-use-english/blob/main/enjoy/package.json). The live API at `https://enjoy.bot/api/config/app_version` also reports the current production version.

### What if `yarn install` fails after pulling new code?

Delete `node_modules` directories and the lockfile, then reinstall:

```bash
rm -rf node_modules */node_modules yarn.lock
yarn install

```

This forces a clean resolution of all workspace dependencies.

### Can I update only the `enjoy` workspace without touching others?

Yes—run `cd enjoy && yarn install` to scope dependency updates to the Electron app only. However, full updates from the root are recommended to maintain workspace compatibility.

### Why does `yarn dev` clear the `.vite` directory?

The `dev` script calls `rimraf .vite` to eliminate stale build artifacts. This prevents cached assets from causing runtime errors when source code changes significantly between versions.