Skip to content

Commit 57c8d73

Browse files
author
jakub-przepiora
committed
Merge develop into main
2 parents d361de9 + cf79be6 commit 57c8d73

352 files changed

Lines changed: 30121 additions & 973 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
name: Build & Publish Docker Image
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
workflow_dispatch:
8+
inputs:
9+
tag:
10+
description: 'Image tag (e.g. v0.12.0 or latest)'
11+
required: false
12+
default: 'latest'
13+
14+
env:
15+
REGISTRY: ghcr.io
16+
IMAGE_NAME: ${{ github.repository_owner }}/openmes
17+
18+
jobs:
19+
build-and-push:
20+
name: Build & Push
21+
runs-on: ubuntu-latest
22+
permissions:
23+
contents: read
24+
packages: write
25+
26+
steps:
27+
- name: Checkout
28+
uses: actions/checkout@v4
29+
30+
- name: Log in to GitHub Container Registry
31+
uses: docker/login-action@v3
32+
with:
33+
registry: ${{ env.REGISTRY }}
34+
username: ${{ github.actor }}
35+
password: ${{ secrets.GITHUB_TOKEN }}
36+
37+
- name: Extract metadata
38+
id: meta
39+
uses: docker/metadata-action@v5
40+
with:
41+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
42+
tags: |
43+
type=semver,pattern={{version}}
44+
type=semver,pattern={{major}}.{{minor}}
45+
type=raw,value=latest,enable={{is_default_branch}}
46+
type=raw,value=${{ github.event.inputs.tag }},enable=${{ github.event_name == 'workflow_dispatch' }}
47+
48+
- name: Set up Docker Buildx
49+
uses: docker/setup-buildx-action@v3
50+
51+
- name: Build and push
52+
uses: docker/build-push-action@v5
53+
with:
54+
context: .
55+
file: backend/Dockerfile
56+
push: true
57+
tags: ${{ steps.meta.outputs.tags }}
58+
labels: ${{ steps.meta.outputs.labels }}
59+
cache-from: type=gha
60+
cache-to: type=gha,mode=max

.github/workflows/release.yml

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -81,21 +81,59 @@ jobs:
8181
echo "$BODY" >> $GITHUB_OUTPUT
8282
echo "EOF" >> $GITHUB_OUTPUT
8383
84-
- name: Bump version in config/version.php
84+
- name: Bump version and update CHANGELOG.md
8585
run: |
8686
VERSION="${{ steps.version.outputs.version }}"
87+
DATE=$(date +%Y-%m-%d)
8788
git config user.name "github-actions[bot]"
8889
git config user.email "github-actions[bot]@users.noreply.github.com"
8990
git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }}
9091
git fetch origin main
9192
git checkout main
9293
git pull origin main
94+
95+
# Bump version.php
9396
sed -i "s/'current' => '.*'/'current' => '${VERSION}'/" backend/config/version.php
97+
98+
# Update CHANGELOG.md — replace [Unreleased] header with version + date, add new Unreleased
99+
if [ -f CHANGELOG.md ]; then
100+
# Build changelog entry from conventional commits
101+
PREV_TAG=$(git tag --sort=-v:refname | grep -v "^${VERSION}$" | head -1 || echo "")
102+
FEATURES=""
103+
FIXES=""
104+
if [ -n "$PREV_TAG" ]; then
105+
FEATURES=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges | grep -E "^feat" | sed 's/^feat[^:]*: /- /' || true)
106+
FIXES=$(git log "${PREV_TAG}..HEAD" --pretty=format:"%s" --no-merges | grep -E "^fix" | sed 's/^fix[^:]*: /- /' || true)
107+
fi
108+
109+
# Build the new entry
110+
ENTRY="## [${VERSION}] - ${DATE}\n"
111+
if [ -n "$FEATURES" ]; then
112+
ENTRY="${ENTRY}\n### Added\n${FEATURES}\n"
113+
fi
114+
if [ -n "$FIXES" ]; then
115+
ENTRY="${ENTRY}\n### Fixed\n${FIXES}\n"
116+
fi
117+
118+
# Insert after the [Unreleased] section marker
119+
sed -i "/^## \[Unreleased\]/,/^## \[/ {
120+
/^## \[Unreleased\]/! {
121+
/^## \[/ i\\
122+
${ENTRY}
123+
}
124+
}" CHANGELOG.md
125+
126+
# Update comparison links
127+
sed -i "s|\[Unreleased\]: .*|[Unreleased]: https://github.com/Mes-Open/OpenMes/compare/${VERSION}...develop|" CHANGELOG.md
128+
129+
git add CHANGELOG.md
130+
fi
131+
94132
git add backend/config/version.php
95133
if git diff --cached --quiet; then
96134
echo "Version already set to ${VERSION}, no commit needed."
97135
else
98-
git commit -m "chore: bump version to ${VERSION}"
136+
git commit -m "chore: bump version to ${VERSION}, update CHANGELOG"
99137
git push origin main
100138
fi
101139

.gitignore

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,20 @@ yarn-error.log*
6464
*.tmp
6565
*.temp
6666

67+
# Playwright E2E (config + specs tracked; artifacts and node_modules ignored)
68+
/node_modules
69+
/test-results
70+
/playwright-report
71+
72+
# Local binaries / installers
73+
cloudflared.deb
74+
6775
# Project-specific
6876
.init_prompt
6977
/reference-app
7078

7179

7280
# Modules — all managed externally, never committed to public repo
73-
# Core modules (Packaging etc.) stay in repo history but new ones go to private repos
81+
# (Packaging was promoted to core; remaining modules ship via private repos)
7482
modules/*
7583
!modules/README.md

CHANGELOG.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
# Changelog
2+
3+
All notable changes to OpenMES are documented in this file.
4+
Format based on [Keep a Changelog](https://keepachangelog.com/).
5+
6+
---
7+
8+
## [Unreleased] (develop)
9+
10+
### Added
11+
- ISA-95 / IEC 62264 foundations (equipment hierarchy, material lots, process segments, personnel classes, quality disposition)
12+
- Minute-level production planning with hourly Gantt view (drag, resize, cross-line moves)
13+
- Material allocation hardening (lot picking, stock movements, reservation system)
14+
- Activity Logs and System Logs with live tail and detail modal
15+
- Maintenance overhaul: recurring schedules, redesigned forms and index
16+
- Updater hardening (8/8): snapshot/rollback, SHA256 checksum, background job, maintenance mode, audit trail
17+
- Inbound quality inspection workflow with dashboard widget
18+
- OEE dashboard: one-click PDF download, shift breakdown, per-line trend
19+
- Extended demo seeder: shifts, materials, lots, ISA-95 hierarchy, skills, segments, maintenance, OEE records
20+
- Packaging moved from module to core: label templates, PDF label generation
21+
- Security Policy (SECURITY.md) and Code of Conduct
22+
- Screenshots in README (dashboard, planner weekly/hourly, operator queue/workstation)
23+
24+
### Fixed
25+
- Sidebar "Orders" group: label now navigates to Work Orders, chevron toggles submenu
26+
- Schedule planner: prev/next preserves view mode, correct step per mode (daily=1 day, weekly=1 week, monthly=1 month)
27+
- Unassign clears planned_start_at/planned_end_at
28+
- Max validation (99999999) on planned_qty across all controllers
29+
- SQL errors hidden from users in production (generic message + report())
30+
- CSV formula injection neutralization in all exports
31+
- PR review fixes: __() translations, raw SQL replaced with Query Builder, hardcoded URL moved to config
32+
33+
## [0.11.1] - 2026-05-19
34+
35+
### Fixed
36+
- Version file not updated for v0.11.0 release (caused "Update available" banner)
37+
- Alerts page 500 error (Carbon diffForHumans() invalid argument)
38+
39+
## [0.11.0] - 2026-05-19
40+
41+
### Added
42+
- Production planner with Gantt shift grid, weekly/daily/monthly views
43+
- Drag & drop work order scheduling with shift-precise placement
44+
- Real-time schedule updates with polling + WebSocket support
45+
- Live order tracking panel + overdue visual on schedule planner
46+
- Tabbed system settings (General, Production, Schedule, Security, Data)
47+
- Overdue work order highlighting (red rows in admin/supervisor views)
48+
- Download-based updater replacing exec git pull
49+
50+
### Fixed
51+
- Security hardening: CRITICAL (C1-C3) + MEDIUM (M2-M6) vulnerabilities
52+
- CORS admin settings, WorkOrder authorization
53+
- CheckInstallation removed from global middleware
54+
- Sidebar cleanup (removed duplicate Shifts link, Integrations link)
55+
56+
## [0.9.0] - 2026-05-14
57+
58+
### Added
59+
- Full i18n system with language selector (EN/PL)
60+
- 1178 translation keys covering all views
61+
- Dashboard widget system (enable/disable/reorder from Settings)
62+
- OEE overview section on dashboard with A/P/Q gauges
63+
- Favicon from getopenmes.com
64+
- Workstation view improvements (info button, report issues, stronger row colors)
65+
- Optional marketing consent checkbox on registration
66+
67+
### Fixed
68+
- Session expired (419) redirect to login instead of blank error
69+
- Removed Microsoft Clarity tracking script
70+
- Default to light mode (ignore system dark preference)
71+
72+
## [0.8.0] - 2026-05-12
73+
74+
### Added
75+
- Onboarding wizard (4-step setup guide for first-time admins)
76+
- Welcome popup on first admin login
77+
- Help icon linking to onboarding wizard
78+
79+
## [0.7.0] - 2026-05-10
80+
81+
### Added
82+
- Bill of Materials (BOM) module
83+
- LOT tracking, workstation assignment, batch release workflow
84+
- Operator production controls UI + supervisor dashboard
85+
- Process confirmations, quality checks, packaging checklist
86+
87+
## [0.6.0] - 2026-05-07
88+
89+
### Added
90+
- PIN login, workstation view, shifts, view templates
91+
- Mobile API with Sanctum authentication
92+
- OpenAPI documentation (Scramble)
93+
94+
## [0.5.0] - 2026-05-03
95+
96+
### Added
97+
- User self-registration (Operator role, disabled by default)
98+
- Multi-tenant registration (isolated Admin workspaces)
99+
- Demo account expiry (3h countdown)
100+
- Registration log
101+
102+
### Fixed
103+
- Bug fixes, UX improvements, module support
104+
105+
## [0.4.1] - 2026-04-30
106+
107+
### Fixed
108+
- Critical and high security vulnerabilities
109+
110+
## [0.4.0] - 2026-04-28
111+
112+
### Added
113+
- MQTT machine connectivity module
114+
- Barcode scanning (Packaging module)
115+
116+
## [0.3.0] - 2026-04-20
117+
118+
### Added
119+
- Plug-and-play ZIP release with vendor and assets
120+
- WordPress-style browser-based installation wizard
121+
- Auto-setup on Docker Compose (migrations + seed + admin)
122+
- MariaDB, MySQL, SQLite support alongside PostgreSQL
123+
- Update check and apply (banner for Admin)
124+
125+
---
126+
127+
[Unreleased]: https://github.com/Mes-Open/OpenMes/compare/v0.11.1...develop
128+
[0.11.1]: https://github.com/Mes-Open/OpenMes/compare/v0.11.0...v0.11.1
129+
[0.11.0]: https://github.com/Mes-Open/OpenMes/compare/v0.9.0...v0.11.0
130+
[0.9.0]: https://github.com/Mes-Open/OpenMes/compare/v0.8.0...v0.9.0
131+
[0.8.0]: https://github.com/Mes-Open/OpenMes/compare/v0.7.0...v0.8.0
132+
[0.7.0]: https://github.com/Mes-Open/OpenMes/compare/v0.6.0...v0.7.0
133+
[0.6.0]: https://github.com/Mes-Open/OpenMes/compare/v0.5.0...v0.6.0
134+
[0.5.0]: https://github.com/Mes-Open/OpenMes/compare/v0.4.1...v0.5.0
135+
[0.4.1]: https://github.com/Mes-Open/OpenMes/compare/v0.4.0...v0.4.1
136+
[0.4.0]: https://github.com/Mes-Open/OpenMes/compare/v0.3.0...v0.4.0
137+
[0.3.0]: https://github.com/Mes-Open/OpenMes/releases/tag/v0.3.0

CODE_OF_CONDUCT.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as contributors and maintainers of OpenMES pledge to make participation in our project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
6+
7+
## Our Standards
8+
9+
Examples of behavior that contributes to a positive environment:
10+
11+
- Using welcoming and inclusive language
12+
- Being respectful of differing viewpoints and experiences
13+
- Gracefully accepting constructive criticism
14+
- Focusing on what is best for the project and its users
15+
- Showing empathy towards other community members
16+
17+
Examples of unacceptable behavior:
18+
19+
- Trolling, insulting/derogatory comments, and personal or political attacks
20+
- Public or private harassment
21+
- Publishing others' private information without explicit permission
22+
- Other conduct which could reasonably be considered inappropriate in a professional setting
23+
24+
## Our Responsibilities
25+
26+
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
27+
28+
## Scope
29+
30+
This Code of Conduct applies within project spaces (issues, pull requests, discussions, Discord) and in public spaces when an individual is representing the project.
31+
32+
## Reporting
33+
34+
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team via:
35+
36+
- **Email**: [contact@getopenmes.com](mailto:contact@getopenmes.com)
37+
- **Founder**: [jakub.przepiora@nice-code.com](mailto:jakub.przepiora@nice-code.com)
38+
- **Discord**: [discord.gg/fw3fG78pZj](https://discord.gg/fw3fG78pZj)
39+
- **GitHub Issues**: [Mes-Open/OpenMes](https://github.com/Mes-Open/OpenMes/issues)
40+
41+
All complaints will be reviewed and investigated. The project team is obligated to maintain confidentiality with regard to the reporter of an incident.
42+
43+
## Enforcement
44+
45+
Project maintainers who do not follow or enforce the Code of Conduct may face temporary or permanent repercussions as determined by other members of the project's leadership.
46+
47+
## Attribution
48+
49+
This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org/), version 2.1.
50+
51+
---
52+
53+
**OpenMES** is licensed under [AGPL-3.0](LICENSE). By participating in this project, you agree to abide by its terms.

0 commit comments

Comments
 (0)