# DeukPack OSS — Releasing & Distribution

## Pre-Release Checklist (OSS)

Before the first OSS (GitHub/DeukPackOSS) release, verify the following:

| Item | Verification Method |
|------|-----------|
| **Version Sync** | `package.json` and `package-lock.json` must match. Run `npm run release:check`. |
| **CHANGELOG** | Update [CHANGELOG.md](CHANGELOG.md) (EN) and [CHANGELOG.ko.md](CHANGELOG.ko.md) (KO) with changes for the specific version. Ensure alignment with [DEUKPACK_V1_RELEASE_SCOPE.ko.md](docs/DEUKPACK_V1_RELEASE_SCOPE.ko.md). |
| **Site Notices** | Product notices are managed in [release-notice.json](release-notice.json). Run `npm run release-notice:apply` to update banners and snippets on deukpack.app. |
| **Build & Test** | `npm ci && npm run build && npm test` must pass. |
| **Package List** | `npm pack --dry-run` to verify included files (ensure internal files are excluded). |
| **URLs** | `repository` / `bugs` point to public GitHub. **`homepage` points to `https://deukpack.app/`**. |
| **Tags** | Ensure `package.json` version is updated before tagging `vX.Y.Z`. |

**Quick Check**: `npm run release:check` (Validates version, build, test, and pack dry-run).

After bumping the version, run `npm install` once to refresh `package-lock.json` before committing.

## v1.0.0 Public Scope

The scope supported for the **1.0.0** release is defined in [docs/DEUKPACK_V1_RELEASE_SCOPE.ko.md](docs/DEUKPACK_V1_RELEASE_SCOPE.ko.md).
*(Note: Excel protocol and Excel add-in are distributed separately.)*

## Deployment Steps

### 1. Versioning
Use `npm version patch` (or `minor` / `major`) to update `package.json` and create a local tag.

### 2. Push to GitHub
```bash
git push origin main
git push origin v1.0.6
```
Pushing a tag triggers **GitHub Actions → Release**, which attaches the **`deukpack-x.y.z.tgz`** asset.

### 3. npm Registry (Optional)
If configured, the release workflow can automatically publish to npm. To publish manually:
```bash
npm publish --access public
```

## Syncing with DeukPackOSS
When releasing to the public repository (DeukPackOSS), use the sync script:
1. `npm run sync:oss:apply` — Synchronizes changes to the public clone.
2. `cd ../DeukPackOSS`
3. `git add -A && git commit -m "release: vX.Y.Z" && git push origin main`
4. `git tag vX.Y.Z && git push origin vX.Y.Z`

---
**DeukPack** — From IDL to distribution.
