Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
cf379b1
chore(beta): prepare changeset for beta releases
giamir Aug 22, 2025
55a97dd
ci(beta): adjust workflows to support beta releases
giamir Aug 22, 2025
3a1a810
fix(prettier): ignore .changeset folder
giamir Aug 22, 2025
73e4b6e
chore(readme): add beta publishing section (#475)
ttaylor-stack Aug 22, 2025
f00554a
ci(changeset): ensure that changeset action branch is set to beta
giamir Aug 22, 2025
033a386
docs(beta): ensure that we can easily differentiate beta docs
giamir Aug 22, 2025
e027ad6
ci(release-beta): ensure that changeset action do not create GH releases
giamir Aug 22, 2025
6fcb021
chore(lint): remove precommit hooks
giamir Aug 22, 2025
57430b1
Merge branch 'main' into beta
giamir Aug 22, 2025
bbf0225
chore(beta): use git cli to manage changesets PRs
giamir Aug 25, 2025
4b0254f
Merge branch 'main' into beta
giamir Aug 25, 2025
fb42501
Revert "chore(lint): remove precommit hooks"
giamir Aug 25, 2025
44896f5
chore(readme): update beta publishing section
giamir Aug 25, 2025
2322a6d
Merge branch 'main' into beta
giamir Aug 25, 2025
7fb8137
ci(release): document workaround to run workflows on release PRs
giamir Aug 25, 2025
370f325
ci(release): fix release beta job issue
giamir Aug 25, 2025
d8a2a46
Merge branch 'main' into beta
giamir Aug 25, 2025
976c0b9
chore(new-beta-release) (beta) (#478)
stacks-tooling Aug 25, 2025
d9ad150
chore(ci) - update workflow file (#482)
ttaylor-stack Aug 27, 2025
2f5697d
chore(new-release) (beta) (#483)
stacks-tooling Aug 27, 2025
822144c
Revert "chore(new-release) (beta) (#483)" (#484)
ttaylor-stack Aug 27, 2025
dcae067
chore(new-release) (beta) (#485)
ttaylor-stack Aug 27, 2025
f5a9b89
Merge branch 'main' into beta
giamir Oct 9, 2025
b9019be
chore(deps): update stacks classic peer deps to beta
giamir Oct 27, 2025
86b4d26
chore(new-release) (beta) (#500)
stacks-tooling Oct 27, 2025
2738c2e
chore(deps): update @stackoverflow/stacks peer dependency version
giamir Nov 10, 2025
0625eb9
chore(new-release) (beta) (#503)
stacks-tooling Nov 10, 2025
4e0102a
chore(styles): ensure editor plays well with tne new stacks v3 styles…
giamir Jan 23, 2026
bb6cb56
chore(new-release) (beta) (#506)
stacks-tooling Jan 23, 2026
48a0a20
feat(editor): stabilize Editor for Stacks 3
dancormier Aug 25, 2026
128b808
feat(editor): complete stable release readiness
dancormier Sep 14, 2026
5707ebd
fix(ci): limit workflow token permissions
dancormier Sep 14, 2026
371db07
fix(editor): restore stable presentation
dancormier Sep 14, 2026
d095235
fix(editor): use clear link tooltip buttons
dancormier Sep 14, 2026
d3dbaf8
fix(editor): refine link tooltip spacing
dancormier Sep 14, 2026
4c31b99
test(editor): cover CommonJS package consumer
dancormier Sep 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/better-deer-tap.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": patch
---

Support both @stackoverflow/stacks v2 and v3 as peer dependencies
5 changes: 5 additions & 0 deletions .changeset/mean-tools-hammer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": patch
---

Add beta publishing information to README
5 changes: 5 additions & 0 deletions .changeset/ninety-lizards-report.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": patch
---

update stacks classic peer dependency to point to beta
5 changes: 5 additions & 0 deletions .changeset/odd-rules-jump.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": minor
---

ensure editor continue to work with stacks v3 styles
15 changes: 15 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"mode": "exit",
"tag": "beta",
"initialVersions": {
"@stackoverflow/stacks-editor": "0.15.3"
},
"changesets": [
"better-deer-tap",
"mean-tools-hammer",
"ninety-lizards-report",
"odd-rules-jump",
"ripe-carpets-pull",
"wise-horses-wear"
]
}
5 changes: 5 additions & 0 deletions .changeset/ripe-carpets-pull.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": patch
---

update workflow file
7 changes: 7 additions & 0 deletions .changeset/stable-editor-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"@stackoverflow/stacks-editor": patch
---

Require stable Stacks Classic 3, preserve the established Editor presentation,
remove the obsolete link-preview demonstration, and prepare the final Editor
1.0 release.
5 changes: 5 additions & 0 deletions .changeset/wise-horses-wear.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@stackoverflow/stacks-editor": major
---

enter prerelease mode for project shine
55 changes: 48 additions & 7 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,12 @@ name: CI

on:
push:
branches: [main, beta]
branches: [main]
pull_request:
branches: [main, beta]
branches: [main]

permissions:
contents: read

jobs:
lint:
Expand Down Expand Up @@ -38,6 +41,41 @@ jobs:

- name: Run unit tests
run: npm run test:unit
package-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Install consumer test browser
run: npx playwright install --with-deps chromium

- name: Test package consumer
run: npm run test:package
release-config-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5

- name: Setup Node.js environment
uses: actions/setup-node@v4
with:
node-version: lts/*
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Run release configuration tests
run: npm run test:release-config
e2e-test:
runs-on: ubuntu-latest
steps:
Expand All @@ -64,9 +102,12 @@ jobs:
name: playwright-test-results
path: test-results/
release:
name: Release (latest or beta)
if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/beta'
needs: [lint, unit-test, e2e-test]
name: Release (latest)
if: github.ref == 'refs/heads/main'
needs: [lint, unit-test, e2e-test, package-test, release-config-test]
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
Expand All @@ -88,8 +129,8 @@ jobs:
publish: npm run release
title: "chore(new-release)"
commit: "chore(new-release)"
branch: ${{ github.ref == 'refs/heads/beta' && 'beta' || null }}
createGithubReleases: ${{ github.ref == 'refs/heads/main' }}
branch: main
createGithubReleases: true
env:
GITHUB_TOKEN: ${{ secrets.STACKS_TOOLING_GH_RW_PAT }}
NPM_TOKEN: ${{ secrets.NPM_API_KEY }}
Expand Down
3 changes: 2 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
.vscode/
stats.json
dist/
test-results/
test-results/
.changeset/
36 changes: 36 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,41 @@
# Changelog

## 1.0.0-beta.5

### Minor Changes

- [#505](https://github.com/StackExchange/Stacks-Editor/pull/505) [`4e0102a`](https://github.com/StackExchange/Stacks-Editor/commit/4e0102a6821436c5b307b747697aafa308229f4f) Thanks [@giamir](https://github.com/giamir)! - ensure editor continue to work with stacks v3 styles

## 1.0.0-beta.4

### Patch Changes

- [`2738c2e`](https://github.com/StackExchange/Stacks-Editor/commit/2738c2eae1e69dea5081df9f5c5a1fe22cac3119) Thanks [@giamir](https://github.com/giamir)! - Support both @stackoverflow/stacks v2 and v3 as peer dependencies

## 1.0.0-beta.3

### Patch Changes

- [`b9019be`](https://github.com/StackExchange/Stacks-Editor/commit/b9019bea1b4078016b352611edcf827c402adfd8) Thanks [@giamir](https://github.com/giamir)! - update stacks classic peer dependency to point to beta

## 1.0.0-beta.2

### Patch Changes

- [#482](https://github.com/StackExchange/Stacks-Editor/pull/482) [`d9ad150`](https://github.com/StackExchange/Stacks-Editor/commit/d9ad150ecf4cf0ae987fbb14020cb07fb17d20dd) Thanks [@ttaylor-stack](https://github.com/ttaylor-stack)! - update workflow file

## 1.0.0-beta.1

### Patch Changes

- [#475](https://github.com/StackExchange/Stacks-Editor/pull/475) [`73e4b6e`](https://github.com/StackExchange/Stacks-Editor/commit/73e4b6e0191b25518b52e015d63b4853ea330f34) Thanks [@ttaylor-stack](https://github.com/ttaylor-stack)! - Add beta publishing information to README

## 1.0.0-beta.0

### Major Changes

- enter prerelease mode for project shine

## 0.15.4

### Patch Changes
Expand Down
40 changes: 33 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,10 @@ new StacksEditor(

## Run Tests

Use a Node release supported by the locked Playwright version. Install
dependencies with `npm ci` and the browser binaries with
`npx playwright install` before running browser tests.

Run all unit tests (no end-to-end tests) using

npm run test:unit
Expand All @@ -78,6 +82,24 @@ Run all end-to-end tests (written in Playwright) using

End-to-end tests need to follow the convention of using `someName.e2e.test.ts` as their filename. They'll automatically get picked up by the test runner this way.

Verify the published package and release configuration using:

```sh
npm run test:package
npm run test:release-config
```

The package check builds an npm tarball, installs it in a temporary consumer,
type-checks the public imports, and bundles its JavaScript and CSS. It then
opens the consumer in Chromium and checks editing and menu styling. Consumer
installation may access npm; direct Classic, Icons, and Highlight.js versions
match the repository lockfile. A missing Chromium binary fails the check.

Menu end-to-end tests cover keyboard operation and layout in light, dark,
high-contrast, and dark high-contrast themes across all three browsers.
They save `heading-menu.png` review artifacts in `test-results/`. These are
not pixel-regression baselines or a complete accessibility audit.

## Browser Bundle analysis

Generate a `stats.json` file for analysis using
Expand All @@ -88,13 +110,17 @@ You can upload your `stats.json` file [here](http://webpack.github.io/analyse/)

## Publishing

We use [changesets](https://github.com/changesets/changesets) to automatize the steps necessary to publish to NPM, create GH releases and a changelog.
We use [Changesets](https://github.com/changesets/changesets) to publish to npm, create GitHub Releases, and update the changelog.

- Add a changeset to pull requests that require a package release.
- The release workflow creates and updates a release pull request against `main` while changesets are pending.
- Merging the reviewed release pull request publishes the package under npm's `latest` tag and creates a GitHub Release.
- The `v0` branch preserves supported Editor 0.15.x maintenance and publishes under the separate `legacy-v0` npm tag.

- Every time you do work that requires a new release to be published, [add a changesets entry](https://github.com/changesets/changesets/blob/main/docs/adding-a-changeset.md) by running `npx @changesets/cli` and follow the instructions on screen. (changes that do not require a new release - e.g. changing a test file - don't need a changeset).
- When opening a PR without a corresponding changeset the [changesets-bot](https://github.com/apps/changeset-bot) will remind you to do so. It generally makes sense to have one changeset for PR (if the PR changes do not require a new release to be published the bot message can be safely ignored)
- The release github job continuously check if there are new pending changesets in the main branch, if there are it creates a GH PR and continue updating it as more changesets are potentially pushed/merged to the main branch.
- When we are ready to cut a release we need to simply merge the `chore(release)` PR back to main and the release github workflow will take care of publishing the changes to NPM and create a GH release for us. The `chore(release)` PR also give us an opportunity to adjust the automatically generated changelog when necessary (the entry in the changelog file is also what will end up in the GH release notes).
_The release job runs only after lint, unit, end-to-end, packed-package, and release-configuration tests pass._

_The release github job only run if the lint, unit-test and e2e-test jobs are all successful: this is to block accidental releases_.
Review the generated versions, dependency ranges, changelog, and package
contents before merging the release pull request. Its merge authorizes
publication; there is no additional manual approval step in the workflow.

_Despite using changesets to communicate the intent of creating releases in a more explicit way, we still follow [conventional commits standards](https://www.conventionalcommits.org/en/v1.0.0/) for keeping our git history easily parseable by the human eye._
Continue using [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) for repository history.
6 changes: 5 additions & 1 deletion config/jest-unit.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,11 @@ module.exports = {
"\\.svg$": "<rootDir>/test/__mocks__/svgMock.ts",
},
rootDir: "../",
testPathIgnorePatterns: ["/node_modules/", String.raw`\.e2e\.test`],
testPathIgnorePatterns: [
"/node_modules/",
"<rootDir>/dist/",
String.raw`\.e2e\.test`,
],
setupFilesAfterEnv: [
"<rootDir>/test/setup.ts",
"<rootDir>/test/matchers.ts",
Expand Down
Loading
Loading