From 302648f15a7cc9a576a456603c401e40a70031ad Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 6 May 2026 21:47:09 +0000 Subject: [PATCH 1/3] ci: strip status:* labels on issue close MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companion workflow to project-status-sync.yml β€” when an issue closes, remove every `status:*` label so closed issues stop carrying transient workflow state in the label list. Project v2 board remains the single source of truth for closed-state status (βœ… Done). Category / area / priority / quality labels are untouched. Triggered on issues:closed only, idempotent, fails open per-label so a single label-removal failure doesn't abort the rest. --- .github/workflows/strip-status-on-close.yml | 37 +++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 .github/workflows/strip-status-on-close.yml diff --git a/.github/workflows/strip-status-on-close.yml b/.github/workflows/strip-status-on-close.yml new file mode 100644 index 000000000..7fa3b9b7d --- /dev/null +++ b/.github/workflows/strip-status-on-close.yml @@ -0,0 +1,37 @@ +name: Strip status labels on close + +# When an issue is closed, remove every `status:*` label so the issue +# stops carrying transient workflow state into the closed history. The +# Project v2 board (managed by project-status-sync.yml) becomes the +# single source of truth for closed-state status (βœ… Done). Labels are +# kept for category / area / priority β€” only `status:*` are wiped. + +on: + issues: + types: [closed] + +permissions: + issues: write + +jobs: + strip: + runs-on: ubuntu-latest + steps: + - uses: actions/github-script@v7 + with: + script: | + const stale = context.payload.issue.labels + .map(l => l.name) + .filter(n => n.startsWith('status:')); + for (const name of stale) { + try { + await github.rest.issues.removeLabel({ + ...context.repo, + issue_number: context.payload.issue.number, + name, + }); + core.info(`removed ${name}`); + } catch (e) { + core.warning(`could not remove ${name}: ${e.message}`); + } + } From eabf93ce204c4af853240ea0bf454559817c9428 Mon Sep 17 00:00:00 2001 From: Claude Date: Wed, 6 May 2026 21:57:37 +0000 Subject: [PATCH 2/3] =?UTF-8?q?ci(project-status):=20map=20status:needs-in?= =?UTF-8?q?fo=20label=20to=20'=F0=9F=94=8D=20Needs=20Info'=20column?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Companion to the new Status field option added in the v2 board. Used for issues awaiting reporter input or external confirmation (e.g. #229 awaiting adb devices output, #203 awaiting cert ack). --- .github/workflows/project-status-sync.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/project-status-sync.yml b/.github/workflows/project-status-sync.yml index c7db0ff1a..8eead6a9e 100644 --- a/.github/workflows/project-status-sync.yml +++ b/.github/workflows/project-status-sync.yml @@ -45,6 +45,7 @@ jobs: *" status:in-review "*) echo "πŸ‘€ In Review" ;; *" status:in-progress "*) echo "In Progress" ;; *" status:up-next "*) echo "🎯 Up Next" ;; + *" status:needs-info "*) echo "πŸ” Needs Info" ;; *" status:backlog "*) echo "πŸ“‹ Backlog" ;; *" help wanted "*) echo "🀝 Help Wanted" ;; *) echo "" ;; From 01ecb78e6d28f782799dd0be76ba641eb81270b3 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 9 May 2026 09:02:59 +0000 Subject: [PATCH 3/3] release: bump to v3.0.3 stable + CHANGELOG entry + stable release notes from CHANGELOG - Bump 6 poms 3.0.3-rc5 -> 3.0.3 (root, API, IDE, MCP, Reporter, build-extensions) - CHANGELOG.md: add stable [v3.0.3] section above [v3.0.3-rc5], focused on user-facing evolution (universal typing, IDE rebrand, slimmer fat-jars, CLI auto-run, MCP maturity, build banner) plus known issues / not-in-this-release transparency block and contributors credits. - .github/workflows/release.yml: read release notes from CHANGELOG.md per version (mirrors release-rc.yml). Falls back to a minimal note if no matching section is found. Adds gh release edit branch when re-running. Pushing this on release/oculix triggers the stable release workflow: build win/mac/lux artifacts, create GitHub release v3.0.3 with the new CHANGELOG section as body, upload jars. --- .github/workflows/release.yml | 39 ++++++++++++++++-- API/pom.xml | 2 +- CHANGELOG.md | 75 ++++++++++++++++++++++++++++++++++- IDE/pom.xml | 2 +- MCP/pom.xml | 4 +- Reporter/pom.xml | 2 +- build-extensions/pom.xml | 2 +- pom.xml | 2 +- 8 files changed, 116 insertions(+), 12 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3fe19cd57..9a1dce418 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -119,16 +119,49 @@ jobs: echo "=== Release assets ===" ls -lh + - name: Extract release notes from CHANGELOG.md + id: notes + run: | + VERSION="${{ steps.version.outputs.VERSION }}" + NOTES_FILE="release-notes-${VERSION}.md" + FALLBACK="OculiX ${VERSION}" + + if [ -f CHANGELOG.md ]; then + awk -v ver="$VERSION" -v vver="v$VERSION" ' + /^## / { + if (found) exit + if (index($0, "[" vver "]") > 0 || index($0, "[" ver "]") > 0) { + found = 1 + next + } + } + found { print } + ' CHANGELOG.md > "$NOTES_FILE" + fi + + if [ ! -s "$NOTES_FILE" ]; then + echo "::warning::No section for $VERSION found in CHANGELOG.md, using fallback notes" + echo "$FALLBACK" > "$NOTES_FILE" + fi + + echo "NOTES_FILE=$NOTES_FILE" >> "$GITHUB_OUTPUT" + echo "=== Release notes preview (first 40 lines) ===" + head -40 "$NOTES_FILE" + - name: Create release if it does not exist env: GH_TOKEN: ${{ github.token }} run: | - TAG="v${{ steps.version.outputs.VERSION }}" + VERSION="${{ steps.version.outputs.VERSION }}" + TAG="v${VERSION}" + NOTES_FILE="${{ steps.notes.outputs.NOTES_FILE }}" if ! gh release view "$TAG" > /dev/null 2>&1; then gh release create "$TAG" \ - --title "OculiX ${{ steps.version.outputs.VERSION }}" \ - --notes "OculiX ${{ steps.version.outputs.VERSION }}" \ + --title "OculiX ${VERSION}" \ + --notes-file "$NOTES_FILE" \ --target master + else + gh release edit "$TAG" --notes-file "$NOTES_FILE" fi - name: Upload assets to release diff --git a/API/pom.xml b/API/pom.xml index b6ecb4fad..d6a54f2d8 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -10,7 +10,7 @@ io.github.oculix-org oculixapi - 3.0.3-rc5 + 3.0.3 jar diff --git a/CHANGELOG.md b/CHANGELOG.md index 96dacf216..ef3609beb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,79 @@ Format inspired by [Keep a Changelog](https://keepachangelog.com/). Versions follow [SemVer](https://semver.org/) with `-rcN` / `-betaN` / `-alphaN` suffixes for pre-releases. > Each `## [vX.Y.Z]` section is consumed verbatim by `.github/workflows/release-rc.yml` -> and published as the GitHub Release body for the matching tag. Keep entries -> reader-friendly β€” they ship as the public release notes. +> (RC tags) and `.github/workflows/release.yml` (stable tags) and published as the +> GitHub Release body for the matching tag. Keep entries reader-friendly β€” they +> ship as the public release notes. + +--- + +## [v3.0.3] - 2026-05-09 + +![status](https://img.shields.io/badge/release-stable-brightgreen) +![maven](https://img.shields.io/badge/maven_central-published-blue) +![track](https://img.shields.io/badge/upgrade-drop--in_from_3.0.x-orange) + +> **Major evolution release** β€” visual rebrand, full multilingual typing, +> slimmer fat-jars, MCP server matures. Drop-in upgrade from 3.0.x. + +### What's new for users + +- 🌏 **Universal typing** β€” write `region.type("δ½ ε₯½")`, `region.type("こんにけは")`, `region.type("ΠΏΡ€ΠΈΠ²Π΅Ρ‚")` and it just works. ASCII path unchanged, non-ASCII routed automatically through clipboard. Asian-language and accented-Latin automation now first-class. + +- 🎨 **Polished IDE** β€” full visual rebrand with dark/light theme system, Welcome tab, sidebar redesign, theme-aware console + workspace explorer. The IDE now looks and feels like a 2026 tool. + +- πŸ“¦ **Lighter footprint** β€” fat-jars trimmed by **~50 MB on Linux** and **~114 MB on Windows**. Faster downloads, faster CI, lower bandwidth bill. Same API, same behavior. + +- πŸš€ **CLI auto-run** β€” launch the IDE with a script preloaded and auto-executed: `java -jar oculixide.jar -l my-script.sikuli -e`. Cross-platform (Linux + WSL + Windows). + +- πŸ€– **MCP server matured** β€” auditable visual-control server with Ed25519-signed action journal, ready for regulated environments (finance, health, defense). Plug any MCP-compatible AI agent on top of OculiX as its visual layer. + +- 🦎 **Build banner** β€” every `mvn` / `mvnd` invocation greets you with the OculiX gecko. Personality at the build level. Easter egg, but also a discreet brand marker. + +### Maven coordinates + +```xml + + io.github.oculix-org + oculixapi + 3.0.3 + +``` + +API, IDE, and MCP modules all available on Maven Central. + +### Upgrading from 3.0.x + +Drop-in. No breaking API changes. Bump the version in your pom and rebuild. + +### Known issues / not in this release + +We ship `3.0.3` knowing some things are still pending β€” preferring honesty over polish: + +- **Android device picker** (#229) β€” when multiple emulators / devices are connected via ADB, the selection prompt is missing. Workaround: stop other devices, or manually export `ANDROID_SERIAL`. Targeted for `3.0.4`. + +- **GNOME 3+ system tray icons** β€” IDE tray indicator (#223) not yet implemented. Linux KDE/XFCE/MATE/Cinnamon would already work; planned for `OculiX 4.0`. The Shift+Alt+C kill switch and the IDE message panel remain the canonical "is my script alive?" surfaces in the meantime. + +- **CLI args parser** (#226) β€” internal duplication between `Commons.hasArg` and the Apache Commons CLI `Options` API. No user-facing impact, but the cleanup is on the V4 tech-debt list. + +- **Visual Intelligence** (#160, #170-#179) β€” the natural-language `AItype("the red button below the menu")` API and the embedded ML pipeline are roadmap, not 3.0.x. They live on the [`OculiX 4.0`](https://github.com/oculix-org/Oculix/milestone/5) and [`OculiX 5.0 β€” Game Changers`](https://github.com/oculix-org/Oculix/milestone/6) milestones. + +Full open backlog: [oculix-org/Oculix/issues](https://github.com/oculix-org/Oculix/issues). Bug reports and field feedback drive the next cycle β€” open an issue, a fork, or a PR. + +### Contributors + +This release was made possible by: + +- [@julienmerconsulting](https://github.com/julienmerconsulting) β€” release lead +- [@RaiMan](https://github.com/RaiMan) β€” `ScreenUnion` removal, Java 8 cleanup +- [@kelvinkirima014](https://github.com/kelvinkirima014) β€” foundational EDT fix +- [@adriancostin6](https://github.com/adriancostin6), [@blackball](https://github.com/blackball), [@micves](https://github.com/micves), [@roboraptor](https://github.com/roboraptor) β€” bug reports and field validation +- [Claude](https://claude.com) (Anthropic) β€” pair-programming partner +- And the testers who pulled every RC and stuck around 🦎 + +### Detailed changelog + +Full per-RC technical breakdown is preserved in the [v3.0.3-rc5](#v303-rc5---2026-05-09) section below. This stable release aggregates rc1 through rc5. --- diff --git a/IDE/pom.xml b/IDE/pom.xml index 0beb8c32a..35224b858 100644 --- a/IDE/pom.xml +++ b/IDE/pom.xml @@ -10,7 +10,7 @@ io.github.oculix-org oculixide - 3.0.3-rc5 + 3.0.3 OculiX IDE Visual automation IDE - edit and run OculiX scripts diff --git a/MCP/pom.xml b/MCP/pom.xml index 1e769dc3c..70d8525fa 100644 --- a/MCP/pom.xml +++ b/MCP/pom.xml @@ -10,7 +10,7 @@ io.github.oculix-org oculixmcp - 3.0.3-rc5 + 3.0.3 jar @@ -51,7 +51,7 @@ io.github.oculix-org oculixapi - 3.0.3-rc5 + 3.0.3 diff --git a/Reporter/pom.xml b/Reporter/pom.xml index 53ce40975..9cd0cc37e 100644 --- a/Reporter/pom.xml +++ b/Reporter/pom.xml @@ -10,7 +10,7 @@ io.github.oculix-org oculixreporter - 3.0.3-rc5 + 3.0.3 jar diff --git a/build-extensions/pom.xml b/build-extensions/pom.xml index f9ef5875e..b92ff030f 100644 --- a/build-extensions/pom.xml +++ b/build-extensions/pom.xml @@ -10,7 +10,7 @@ io.github.oculix-org oculix - 3.0.3-rc5 + 3.0.3 oculix-build-extensions diff --git a/pom.xml b/pom.xml index 37131c257..fef8bbd83 100755 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ 4.0.0 io.github.oculix-org oculix - 3.0.3-rc5 + 3.0.3 OculiX Visual automation - if you can see it, you can automate it https://github.com/oculix-org/Oculix