Repository navigation
chore(release): v0.17.0 - #190
Conversation
…and restored complete vi.json)
…ipt fail-fast, and e2e spec safety
…t createBtn helper mismatches
…id nullable) Also remove composer.phar and empty .rr.yaml from git tracking.
Feat/translate develop
…-view [feat] Per-order machines to run supervisor view #89
- PriorityRuleRequest: reject non-"equals" conditions for the customer.tier source (a numeric comparison casts the tier string to 0 and matches nonsense). - CustomerMetricsService: lock and re-check the work order inside the transaction so concurrent completions can't double-count revenue/orders. - Priority Settings band editor: block save when any threshold is blank instead of silently coercing an empty field to 0. Adds tests and en/pl strings. Full suite green (1690). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…and-priority feat: finish up whole feature
Resolve conflicts from the merged customer-management & priority feature (#173): - CHANGELOG.md: keep both the read-confirmation and customer/priority entries. - lang/en.json, lang/pl.json: union of both features' translation keys (parity preserved). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
feat: accepnt informations
feat: required operators
…#175) * feat(workstation): shop-floor device registration + live admin roster Workstation client PCs self-register against the MAIN app by IP and heartbeat; Admin → Structure → Workstation Devices shows them live (online/offline derived from last_seen_at) via an Electric shape. - Public, rate-limited API: POST /api/workstations/register + /heartbeat - WorkstationDevice model (soft-delete + audit), migration with a partial unique index on device_uuid, factory - Web admin roster page (ResourceTable) + forget (soft-delete) - Registered in SoftDeleteRegistry + ShapeRegistry; i18n en/pl parity - Tests: registration/heartbeat/validation, admin authz + soft-delete * docs(roadmap): add workflow/UX orchestration items from field feedback Operator/supervisor/scheduler workflow items surfaced by a high-volume plant's feedback (unified production+scrap reporting, role-based entry points, machine-counter reporting, shift board, start-of-shift + multi-day Gantt scheduling, made-to-order vs stock order entry). Tagged 'probable'.
…187) Extends the release workflow so a tag/dispatch produces installers for every platform, all attached to the same GitHub Release: - web: existing self-contained ZIP (unchanged) — creates the release - desktop: Tauri matrix (windows .exe/NSIS, macOS .dmg, linux .deb/.rpm), each bundling PHP + the backend; PHP runtime fetched per-OS, backend built (composer + vite) and injected via bundle-resources + --config - mobile: Expo prebuild + Gradle assembleRelease -> Android .apk Jobs fan out from the web job (needs: web) and upload to the release by tag, so a desktop/mobile failure never blocks the web artifact.
#186) * feat(desktop): OpenMES Desktop app (Tauri) + unattended install preset Brings the desktop platform app to develop alongside mobile/. A Tauri (Rust + webview) shell that bundles PHP + the backend and runs OpenMES as a local desktop app / LAN MES server, with an in-app self-updater. - desktop/: Tauri app (src-tauri Rust, TS control panel, icons, build scripts for self-contained Windows .exe and Linux .deb/.rpm) - Backend INSTALLER_PRESET mode: unattended install (skips env/db wizard steps, straight to admin creation) that the desktop shell drives — InstallController + install views + bootstrap/app.php - InstallPresetTest covers the preset behaviour The shop-floor workstation feature lands separately in #175. * fix(desktop): address CodeRabbit review on #186 - installer: stop leaking raw PDO exception messages to pre-auth visitors (log instead); reject path-traversal in sqlite db_database before it hits storage_path(); move admin-step validation into a CreateAdminRequest Form Request (per project convention) - tauri: harden config — withGlobalTauri=false + a CSP (permissive only for localhost so the served MES app's websockets/SSE keep working) - panel: AbortController in ensureDbMode so boot retries don't stack duplicate DB-choice listeners - updater: snapshot the SQLite DB before migrating and restore it on rollback, so restored old code never runs against the migrated schema
…185) * feat(work-orders): add elapsed-time "Age" column to work-order lists Add an "Age" column (now - created_at) to the admin and supervisor work-order lists, showing a compact human-readable duration (just now / 5m / 3h / 2d / 1y) with the exact creation time on hover. - New reusable elapsed() formatter in lib/i18n.js - Opt-in `live: true` column flag on ResourceTable: a shared 30s clock ticks live cells via context, so tables without one schedule no timer - Opt-in `sortAccessor` column flag so "Age" sorts by actual age (ascending = youngest first) while global search keeps using created_at - Vitest setup covering the duration formatting; wired into CI + pre-commit created_at was already synced on the work-order Electric shapes, so no schema or shape change. Closes #100 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * perf(work-orders): isolate live-clock ticks to a provider component Move the 30s clock state out of ResourceTable into a small LiveClockProvider wrapper, so a tick re-renders only the provider and the NowContext consumers (the live cells) rather than the whole ResourceTable body. Previously the tick re-ran the live query/filter and handed DataTable freshly allocated props (visibleRows, the inline rangeLabel), defeating its memoization and reconciling the entire grid every 30s. Addresses CodeRabbit review on #185. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…c report ids (#188) - Remove the WIP `__e2e__` test-control route group and its import: it referenced App\Http\Controllers\TestControl\TenantController, the EnsureE2eEnabled middleware and config/e2e.php — none of which exist in the repo (leaked from 'feat: custom fields wip'). It broke `php artisan route:list` and would 500 on /__e2e__/* instead of the intended 404. No spec references it; reintroduce complete (routes + controller + middleware + config) if the isolated-tenant harness is wanted. - Constrain reports.show / cost-reports.show to `whereNumber('workOrder')` so a non-numeric id (e.g. /admin/reports/net-requirements) 404s instead of hitting the controller with a string id and 500ing on an invalid-integer query.
* feat(bom): select multi bom in orders * fix(refactor): code fixes reported in code review by CodeRabbit --------- Co-authored-by: jakub-przepiora <jakub.przepioraa@gmail.com>
…pec (#189) The spec was missing the final `});` closing its `test.describe(...)` block, so Playwright failed to parse it — and because collection aborts on the first unparseable file, this broke the ENTIRE E2E suite (0 specs could run). E2E isn't part of the CI test gate, so it slipped onto develop unnoticed. Adds the missing close; the file now parses and lists its test.
|
Important Review skippedToo many files! This PR contains 734 files, which is 634 over the limit of 100. To get a review, narrow the scope: Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files. ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (52)
📒 Files selected for processing (800)
You can disable this status message by setting the ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
# Conflicts: # CHANGELOG.md # backend/config/version.php
Release v0.17.0 (develop → main)
Version bump (
backend/config/version.php→v0.17.0) + CHANGELOG finalized. MINOR bump — new features since the lastmainrelease (v0.16.2); 51 commits.Highlights
Platform apps (new)
MES features
__e2e__routes, report id 404-guarding, and a broken E2E spec.Full list in
CHANGELOG.mdunder [0.17.0].Merge / tag procedure
mainis protected — this PR is for you to merge (I can't admin-merge). After merge, push the tagv0.17.0onmain; the release workflow then builds & attaches all artifacts (web ZIP + desktop installers + apk). The tagged tree already carriesversion.php = v0.17.0, so the workflow's version check passes.CI (
Laravel tests) will run on this PR; full backend suite is green locally (1896 passed).