Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -250,3 +250,4 @@ The following pages were created or significantly revised by other Copilot sessi
- For PRs in this repository, verify Netlify checks pass when applicable (especially `Pages changed - shaftengine`, `Header rules - shaftengine`, and `Redirect rules - shaftengine`).
- Do not consider the task complete until required checks have completed successfully or any failures are explicitly investigated and fixed.
- Before proposing or updating a PR, always run local validation for affected areas (at minimum `npm run build`; and relevant tests such as `npm test`/`yarn test:playwright` when applicable) and confirm results in the PR update.
- For automated release blog generation, ensure the generated `## ⚡ What Changed?` summary is MDX-safe text only (no raw HTML tag fragments like `<div ...`/`</div`), and verify with `npm run test:release-template` plus `npm run build` before pushing.
28 changes: 20 additions & 8 deletions .github/workflows/automated-release-blog-post.yml
Original file line number Diff line number Diff line change
Expand Up @@ -236,14 +236,26 @@ jobs:
? `\n🎉 **A warm welcome to our first-time contributors!** ${firstTimers.map((c) => `[@${c.login}](https://github.com/${c.login})`).join(', ')} — your first contribution is now part of SHAFT's story. We're thrilled to have you on board!`
: '';

const extractScopeSummary = (markdownText) => {
const sanitizedMarkdownText = markdownText.replace(/<!--[\s\S]*?-->/g, '');
const candidateLines = sanitizedMarkdownText
.split('\n')
.map((line) => line.trim())
.filter((line) => line && !line.startsWith('#'))
.map((line) => line.replace(/^[-*+]\s*/, '').replace(/[*_>#]/g, '').trim())
.filter(Boolean);
const extractScopeSummary = (markdownText) => {
const sanitizedMarkdownText = markdownText.replace(/<!--[\s\S]*?-->/g, '');
const candidateLines = sanitizedMarkdownText
.split('\n')
.map((line) => line.trim())
.filter((line) => line && !line.startsWith('#'))
.map((line) =>
line
.replace(/<[^>]+>/g, ' ')
.replace(/!\[[^\]]*\]\([^)]+\)/g, '')
.replace(/\[([^\]]+)\]\([^)]+\)/g, '$1')
.replace(/^[-*+]\s*/, '')
.replace(/^>\s*/, '')
.replace(/[*_`#]/g, '')
.replace(/\s+/g, ' ')
.trim()
)
// Guard against incomplete HTML fragments that can break MDX (e.g., "<div ..." or "...>").
.filter((line) => line && !/^<[^>]*$/.test(line) && !/^[^<]*>$/.test(line))
.filter(Boolean);

if (!candidateLines.length) {
return 'This version focuses on improving developer productivity, strengthening runtime reliability, and making test design more expressive across common automation scenarios.';
Expand Down
192 changes: 192 additions & 0 deletions blog/2026-05-06-release-10.2.20260506.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
---
slug: release-10.2.20260506
title: "🚀 SHAFT 10.2.20260506: What's New and Why You Should Upgrade Today"
authors: [autobot]
tags: [shaft_engine, release, changelog, test-automation, open-source]
---

Hey there, SHAFT community! 👋

A fresh release just dropped and it's packed with improvements you don't want to miss. **SHAFT_ENGINE 10.2.20260506** is here, and whether you're a seasoned SHAFT user or just getting started, there's something in this release for you.

<!-- truncate -->

## ⚡ What Changed?

- Improved project hygiene by updating `.gitignore` and Maven metadata management
- Expanded SHAFT_ENGINE test coverage across file managers, validation builders, and REST utilities
- Added Allure 2 compatibility mode and fixed Allure 3 real-time monitoring watch command behavior

👉 [View the full release on GitHub](https://github.com/ShaftHQ/SHAFT_ENGINE/releases/tag/10.2.20260506)

## 📋 Changelog

<!-- SHAFT_ENGINE Release Body Template
Rendered automatically by the Maven Central CD workflow (mavenCentral_cd.yml).

HOW THIS WORKS:
- The workflow runs `sed` to replace 10.2.20260506 with the actual version, then passes the
result as the `bodyFile` to ncipollo/release-action with `generateReleaseNotes: true`.
- ncipollo APPENDS the auto-generated changelog (categorized via .github/release.yml) AFTER the
entire content of this template. It does NOT inject it into any placeholder inside this file.
- Therefore: do NOT add static sections here that reference optional changelog categories
(e.g. "Breaking Changes", "Security Fixes") — those sections only appear in the appended
changelog when PRs carry the matching labels, and referencing them unconditionally creates
misleading empty-looking entries in every release. -->

<div align="center">

# 🎉 SHAFT_ENGINE 10.2.20260506

**The unified test automation engine — Web · Mobile · API · CLI · Database**

[![Maven Central](https://img.shields.io/maven-central/v/io.github.shafthq/SHAFT_ENGINE?color=blue&logo=apachemaven)](https://central.sonatype.com/artifact/io.github.shafthq/SHAFT_ENGINE)
[![GitHub stars](https://img.shields.io/github/stars/ShaftHQ/SHAFT_ENGINE?style=social)](https://github.com/ShaftHQ/SHAFT_ENGINE/stargazers)

</div>

---

## ⬆️ How to Upgrade

Update the version in your `pom.xml`:

```xml
<properties>
<shaft_engine.version>10.2.20260506</shaft_engine.version>
</properties>
```

Or update the dependency directly:

```xml
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>SHAFT_ENGINE</artifactId>
<version>10.2.20260506</version>
</dependency>
```

> [!IMPORTANT]
> **We support only the latest release.** If you encounter any issue, please upgrade to `10.2.20260506` first before filing a bug report.

---

## 📖 Resources

| Resource | Link |
|---|---|
| 📚 Full Documentation | [shafthq.github.io](https://shafthq.github.io/) |
| 🚀 Getting Started | [Quick-Start Guide](https://shafthq.github.io/) |
| 📋 JavaDocs | [ShaftHQ JavaDoc](https://shafthq.github.io/SHAFT_ENGINE/) |
| 🤖 MCP Server | [SHAFT_MCP](https://github.com/ShaftHQ/SHAFT_MCP) |
| 🗺️ Roadmap | [GitHub Projects](https://github.com/orgs/ShaftHQ/projects) |
| 💬 Community | [GitHub Discussions](https://github.com/ShaftHQ/SHAFT_ENGINE/discussions) |
| 🐛 Report a Bug | [Bug Report](https://github.com/ShaftHQ/SHAFT_ENGINE/issues/new?template=bug_report.md) |
| 💡 Request a Feature | [Feature Request](https://github.com/ShaftHQ/SHAFT_ENGINE/issues/new?template=feature_request.md) |
| 💬 Slack | [Join our Slack](https://join.slack.com/t/shaft-engine/shared_invite/zt-oii5i2gg-0ZGnih_Y34NjK7QqDn01Dw) |

---

## 🙌 Get Involved

If SHAFT_ENGINE saves you time, helps your team ship quality software faster, or you just enjoy using it — please consider:

- ⭐ **[Star the repository](https://github.com/ShaftHQ/SHAFT_ENGINE)** — it helps others discover the project and motivates the team!
- 🐛 **Found a bug?** [Open a bug report](https://github.com/ShaftHQ/SHAFT_ENGINE/issues/new?template=bug_report.md)
- 💡 **Have an idea?** [Request a feature](https://github.com/ShaftHQ/SHAFT_ENGINE/issues/new?template=feature_request.md)
- 🤝 **Want to contribute?** Read the [Contributing Guide](https://github.com/ShaftHQ/SHAFT_ENGINE/blob/main/CONTRIBUTING.md)
- 💬 **Questions or feedback?** Join us on [GitHub Discussions](https://github.com/ShaftHQ/SHAFT_ENGINE/discussions) or [Slack](https://join.slack.com/t/shaft-engine/shared_invite/zt-oii5i2gg-0ZGnih_Y34NjK7QqDn01Dw)

---

<!-- The auto-generated, categorized changelog (from .github/release.yml) is appended here by GitHub. -->


<!-- Release notes generated using configuration in .github/release.yml at main -->

## What's Changed
### 🔨 Other Changes
* Update .gitignore and pom.xml for improved encoding and dependency management by @MohabMohie in https://github.com/ShaftHQ/SHAFT_ENGINE/pull/2498
* feat(tests): Increase SHAFT_ENGINE unit and E2E test coverage across file managers, validation builders, and REST utilities by @Copilot in https://github.com/ShaftHQ/SHAFT_ENGINE/pull/2501
* feat: Allure 2 compatibility mode + fix Allure 3 real-time monitoring watch command by @Copilot in https://github.com/ShaftHQ/SHAFT_ENGINE/pull/2497
* chore(release): prepare SHAFT_ENGINE 10.2.20260506 metadata by @Copilot in https://github.com/ShaftHQ/SHAFT_ENGINE/pull/2502


**Full Changelog**: https://github.com/ShaftHQ/SHAFT_ENGINE/compare/10.2.20260505...10.2.20260506

## 🏆 Community Spotlight

This release was made possible by **45 amazing contributors** who have poured their time and expertise into making SHAFT better for everyone.

Open source thrives because of people like these. Every bug fix, every feature, every review — it all counts.

- <img src="https://github.com/MohabMohie.png" width="32" height="32" alt="@MohabMohie" /> [@MohabMohie](https://github.com/MohabMohie)
- <img src="https://github.com/MahmoudElSharkawy.png" width="32" height="32" alt="@MahmoudElSharkawy" /> [@MahmoudElSharkawy](https://github.com/MahmoudElSharkawy)
- <img src="https://github.com/MennaMagedm.png" width="32" height="32" alt="@MennaMagedm" /> [@MennaMagedm](https://github.com/MennaMagedm)
- <img src="https://github.com/AhmdZanoon.png" width="32" height="32" alt="@AhmdZanoon" /> [@AhmdZanoon](https://github.com/AhmdZanoon)
- <img src="https://github.com/magdyheiba.png" width="32" height="32" alt="@magdyheiba" /> [@magdyheiba](https://github.com/magdyheiba)
- <img src="https://github.com/MustafaAgamy.png" width="32" height="32" alt="@MustafaAgamy" /> [@MustafaAgamy](https://github.com/MustafaAgamy)
- <img src="https://github.com/amfarid.png" width="32" height="32" alt="@amfarid" /> [@amfarid](https://github.com/amfarid)
- <img src="https://github.com/KyrillosNageh.png" width="32" height="32" alt="@KyrillosNageh" /> [@KyrillosNageh](https://github.com/KyrillosNageh)
- <img src="https://github.com/Mohab-Osama.png" width="32" height="32" alt="@Mohab-Osama" /> [@Mohab-Osama](https://github.com/Mohab-Osama)
- <img src="https://github.com/RihamMostafa.png" width="32" height="32" alt="@RihamMostafa" /> [@RihamMostafa](https://github.com/RihamMostafa)
- <img src="https://github.com/MhmdElGazzar.png" width="32" height="32" alt="@MhmdElGazzar" /> [@MhmdElGazzar](https://github.com/MhmdElGazzar)
- <img src="https://github.com/MohamedHazem95.png" width="32" height="32" alt="@MohamedHazem95" /> [@MohamedHazem95](https://github.com/MohamedHazem95)
- <img src="https://github.com/MamdouhMansour.png" width="32" height="32" alt="@MamdouhMansour" /> [@MamdouhMansour](https://github.com/MamdouhMansour)
- <img src="https://github.com/samiir95.png" width="32" height="32" alt="@samiir95" /> [@samiir95](https://github.com/samiir95)
- <img src="https://github.com/mohamedtawfek05354.png" width="32" height="32" alt="@mohamedtawfek05354" /> [@mohamedtawfek05354](https://github.com/mohamedtawfek05354)
- <img src="https://github.com/sys123-data.png" width="32" height="32" alt="@sys123-data" /> [@sys123-data](https://github.com/sys123-data)
- <img src="https://github.com/ieZaky.png" width="32" height="32" alt="@ieZaky" /> [@ieZaky](https://github.com/ieZaky)
- <img src="https://github.com/hammad101088.png" width="32" height="32" alt="@hammad101088" /> [@hammad101088](https://github.com/hammad101088)
- <img src="https://github.com/MahmoudMabrok.png" width="32" height="32" alt="@MahmoudMabrok" /> [@MahmoudMabrok](https://github.com/MahmoudMabrok)
- <img src="https://github.com/Kinasr.png" width="32" height="32" alt="@Kinasr" /> [@Kinasr](https://github.com/Kinasr)
- <img src="https://github.com/wesamhamed.png" width="32" height="32" alt="@wesamhamed" /> [@wesamhamed](https://github.com/wesamhamed)
- <img src="https://github.com/themosaeed.png" width="32" height="32" alt="@themosaeed" /> [@themosaeed](https://github.com/themosaeed)
- <img src="https://github.com/khaledskhamis.png" width="32" height="32" alt="@khaledskhamis" /> [@khaledskhamis](https://github.com/khaledskhamis)
- <img src="https://github.com/Waleedmohammed.png" width="32" height="32" alt="@Waleedmohammed" /> [@Waleedmohammed](https://github.com/Waleedmohammed)
- <img src="https://github.com/TarekGaafar.png" width="32" height="32" alt="@TarekGaafar" /> [@TarekGaafar](https://github.com/TarekGaafar)
- <img src="https://github.com/Salma2018170.png" width="32" height="32" alt="@Salma2018170" /> [@Salma2018170](https://github.com/Salma2018170)
- <img src="https://github.com/osamaayman1005.png" width="32" height="32" alt="@osamaayman1005" /> [@osamaayman1005](https://github.com/osamaayman1005)
- <img src="https://github.com/sultanpaymob.png" width="32" height="32" alt="@sultanpaymob" /> [@sultanpaymob](https://github.com/sultanpaymob)
- <img src="https://github.com/Mochxd.png" width="32" height="32" alt="@Mochxd" /> [@Mochxd](https://github.com/Mochxd)
- <img src="https://github.com/MarwaYoussef1.png" width="32" height="32" alt="@MarwaYoussef1" /> [@MarwaYoussef1](https://github.com/MarwaYoussef1)
- <img src="https://github.com/xValenciax.png" width="32" height="32" alt="@xValenciax" /> [@xValenciax](https://github.com/xValenciax)
- <img src="https://github.com/hjsblogger.png" width="32" height="32" alt="@hjsblogger" /> [@hjsblogger](https://github.com/hjsblogger)
- <img src="https://github.com/georgii-musikhin.png" width="32" height="32" alt="@georgii-musikhin" /> [@georgii-musikhin](https://github.com/georgii-musikhin)
- <img src="https://github.com/DavidIshakGorgy.png" width="32" height="32" alt="@DavidIshakGorgy" /> [@DavidIshakGorgy](https://github.com/DavidIshakGorgy)
- <img src="https://github.com/BojteTamas.png" width="32" height="32" alt="@BojteTamas" /> [@BojteTamas](https://github.com/BojteTamas)
- <img src="https://github.com/blacelle.png" width="32" height="32" alt="@blacelle" /> [@blacelle](https://github.com/blacelle)
- <img src="https://github.com/Ayanasrallah.png" width="32" height="32" alt="@Ayanasrallah" /> [@Ayanasrallah](https://github.com/Ayanasrallah)
- <img src="https://github.com/AmrAdelElkholy.png" width="32" height="32" alt="@AmrAdelElkholy" /> [@AmrAdelElkholy](https://github.com/AmrAdelElkholy)
- <img src="https://github.com/amlosman.png" width="32" height="32" alt="@amlosman" /> [@amlosman](https://github.com/amlosman)
- <img src="https://github.com/ahmednasr95.png" width="32" height="32" alt="@ahmednasr95" /> [@ahmednasr95](https://github.com/ahmednasr95)
- <img src="https://github.com/ahmed-madyan.png" width="32" height="32" alt="@ahmed-madyan" /> [@ahmed-madyan](https://github.com/ahmed-madyan)
- <img src="https://github.com/AhmedHelalyy.png" width="32" height="32" alt="@AhmedHelalyy" /> [@AhmedHelalyy](https://github.com/AhmedHelalyy)
- <img src="https://github.com/A-Alii.png" width="32" height="32" alt="@A-Alii" /> [@A-Alii](https://github.com/A-Alii)
- <img src="https://github.com/AbdelrahmanFahd.png" width="32" height="32" alt="@AbdelrahmanFahd" /> [@AbdelrahmanFahd](https://github.com/AbdelrahmanFahd)
- <img src="https://github.com/Abdelrhman-Ellithy.png" width="32" height="32" alt="@Abdelrhman-Ellithy" /> [@Abdelrhman-Ellithy](https://github.com/Abdelrhman-Ellithy)


## 🚀 Get Started in Seconds

Upgrading is simple — just update your dependency version:

```xml
<dependency>
<groupId>io.github.shafthq</groupId>
<artifactId>SHAFT_ENGINE</artifactId>
<version>10.2.20260506</version>
</dependency>
```

## 💬 Join the Conversation

We'd love to hear what you think! Found a bug? Have an idea? Just want to say hi?

- ⭐ [Star SHAFT on GitHub](https://github.com/ShaftHQ/SHAFT_ENGINE) — it helps more than you think
- 💡 [Start a Discussion](https://github.com/ShaftHQ/SHAFT_ENGINE/discussions) — share feedback or ideas
- 🐛 [Report an Issue](https://github.com/ShaftHQ/SHAFT_ENGINE/issues/new) — help us squash bugs faster
- 📖 [Read the Docs](https://shafthq.github.io/) — dive deeper into SHAFT

Thanks for being part of the SHAFT journey. Until the next release — happy testing! 🎯
Loading