Changelog

Latest updates, improvements, and fixes for Executive Group.

v2.10.10 LATEST

2026-09-30

Compare Arena Done Button Event Propagation Fix & Dependency Security Bump

  • Compare Arena Done Button Event Propagation Fix (#504)**:
  • Implemented server-side `promptFinishCollection()` in `ParticipantPortal`: participants with proposals advance immediately to the completion view and chained stage on the first click without page reload.
  • Added clean MaryUI in-app confirmation modal for zero-submission exits.
  • Security & Dependencies (#505)**:
  • Upgraded `phpseclib/phpseclib` from 3.0.55 to 3.0.57 resolving CVE-2026-84308.

v2.10.9

2026-09-29

WorkWell Uniform Exposure Balancing & CI Pipeline Restoration

  • WorkWell Uniform Exposure Balancing (#499)**:
  • Removed the active-learning 70% rating convergence heuristic in `PairwiseEngineService::getNextPair()`.
  • Enforced 100% uniform global exposure balancing (`($globalA + $globalB) * 1.0`) ensuring under-exposed statements receive priority across participant cohorts.
  • Preserved session-level stratified exposure penalties and recency cooldown to eliminate duplicate statements and consecutive repeats.
  • CI Lint & Pipeline Fixes (#501)**:
  • Disabled `fully_qualified_strict_types` in `pint.json` to prevent spurious lint failures following the Pint 1.32 upgrade.
  • Scoped Compare Studio tab button locator with `.first()` in `compare-accessibility.spec.ts` to prevent Playwright strict mode collisions.

v2.10.8

2026-09-29

Compare Arena Collection UX Redesign & Stacked Action Controls

  • Compare Arena Collection UX Redesign (#498)**:
  • Pinned live "Omat kohteet" submissions feed directly beside the input form, completely eliminating the need to scroll down to verify submissions.
  • Added real-time submission highlight rings (`ring-2 ring-emerald-400/30`) with newest submissions pinned to the top of the feed.
  • Added clean empty state placeholder card ("Ei vielä ehdotuksia" / "No submissions yet") to maintain two-column visual balance prior to first entry.
  • Stacked Action Controls & Concise Labels (#498)**:
  • Stacked action buttons vertically: full-width primary green `Lähetä` (Submit) on top, and secondary subtle outline `Valmis` (Done) on the bottom.
  • Added zero-submission exit guard prompting gentle confirmation if clicking `Valmis` before submitting any proposals.
  • Added automatic text input refocusing upon submission for rapid multi-idea brainstorming.
  • Added automated UX regression test `test_issue_498_collection_ux_two_column_feed_and_stacked_buttons` in `CompareParticipantUxTest.php`.
  • Verified live end-to-end against staging environment (`https://vsmetest.pomegroup.studio`).

v2.10.7

2026-09-29

WorkWell Survey Closure Enforcement & Studio Status Switcher

  • WorkWell 1-Click Studio Status Switcher (#496)**:
  • Added 1-click segmented status switcher in WorkWell Management Studio header: `Draft | Active | Closed | Action Phase` (matching `CompareArenaManager`).
  • Added reactive status badge synchronization across the Studio header and WorkWell index card views.
  • Participant Portal Survey Closure Enforcement (#496)**:
  • Added survey closure enforcement preventing new participant sessions when assessment status is `closed`.
  • Added dedicated "Survey Concluded" / "Arviointi on päättynyt" lock screen with informational messaging and optional public results link.
  • Enforced in-flight duel termination in `PairwiseVoter` to immediately halt voting if assessment is closed mid-session.
  • Localization & Polish (#496)**:
  • Added bilingual English and Finnish translations for closure states, badges, and lock screen notifications in `lang/en/act.php` and `lang/fi/act.php`.
  • Automated Verification Suite (#496)**:
  • Added comprehensive backend feature tests in `WorkwellClosureEnforcementTest.php` covering status transitions, participant locking, and voter guards.
  • Added live staging Playwright E2E verification in `workwell-closure-staging.spec.ts`.

v2.10.6

2026-09-29

WorkWell Stakeholder Telemetry Ribbon, Per-Lens Duel Counts & Balanced Sampling

  • WorkWell Stakeholder Quota & Completion Telemetry Ribbon (#491)**:
  • Added executive cohort completion ribbon in WorkWell Studio with live progress bars, quota percentages, and quorum status.
  • Interactive cohort filtering: 1-click focus on specific departments or aggregate across all stakeholder groups.
  • Per-Lens Duel Competition Badges (#490)**:
  • Added separate, vertically stacked micro-badges in Studio statements table: Cyan (`Ideal: X×` / `Ihanne: X×`) and Emerald (`Current: Y×` / `Nyky: Y×`).
  • Added duel density summary chip (`Duel Density: Ideal ... Current ...`).
  • GapMap Item-Level Exposure Gating (#492)**:
  • Enforced $\ge 6$ comparison threshold for plotting statement dots on GapMap scatter plot.
  • Replaced academic sample size blackout with operational *"Data Collection in Progress"* notice and live progress counters.
  • Masked gap scores for under-exposure statements (`Gap: — (<6)`).
  • Balanced Stratified Duel Sampling & Recency Cooldown (#487)**:
  • Implemented session-level item exposure tracking in `PairwiseEngineService` to prioritize unviewed statements and eliminate duplicate statements in short sessions.
  • Added recency cooldown penalty to prevent back-to-back repetitions.
  • Added uniform tie-breaking jitter to prevent array ordering bias.
  • Compare Anything Tab Label Parity**:
  • Updated English Tab 2 label to "2. Statements" across all comparison views and updated feature test assertions.

v2.10.5

2026-09-28

WorkWell Duel Distribution, Compare Equal-Weight Prioritization & Decens Workshop Readiness

  • WorkWell Statement Duel Competition Counts & Exposure Distribution (#488)**:
  • Added dedicated **"Competed"** column in WorkWell Studio statements table showing exact duel appearance counts per statement.
  • Added interactive tooltip breakdown detailing duel counts across Ideal State vs. Current Reality lenses.
  • Added **Exposure Distribution summary chip** above the statements table displaying Min, Max, and Average duels per statement for immediate visibility into pairwise balancing.
  • Compare Arena Equal-Weight Group Prioritization & Raw Win Rate (#480, #481)**:
  • Added equal-weight group aggregation to eliminate cohort size bias across stakeholder groups.
  • Added raw win rate ranking toggle and metrics across Arena Manager and Arena Presenter views.
  • Decens Workshop Readiness & Statement CSV Export (#477)**:
  • Added CSV export functionality for comparison statements with team metadata.
  • Added workflow unpark chaining and rehearsal tooling with production safety guards.
  • Decens Demo & Mobile Voter Polish (#482, #483, #484, #485, #486)**:
  • Fixed mobile voter Part 2 evaluation prompt to dynamically render the secondary lens title.
  • Gated the consensus reliability banner behind sample size thresholds.
  • Isolated the duel exposure message from WorkWell sample size string.
  • Updated English tab label from "Seed Options" to "Statements".
  • Arena Settings Robustness (#478, #477)**:
  • Prevented 500 error when clearing duel counts and team sizes in settings modal.
  • Fixed array-to-string conversion in `ArenaManager` by using `getTargetGroupNames()`.

v2.10.4

2026-09-25

v2.10.4

  • WorkWell Duels Upper Limit & Statistical Sizing Model (#467)**:
  • Raised the upper limit for pairwise duels per lens from 20 to 50 across WorkWell Studio, WorkWell Index creation modal, and Compare Arena wizard.
  • Aligned the statistical duel sizing advisor (`calculateWorkwellDuels()`) to accurately recommend up to 50 duels per lens for small cohorts ($\lceil 90 / N \rceil$), enabling small teams of 3 participants to receive exactly 30 duels per lens (Innoduel standard) and 2 participants to receive 45 duels per lens for full statistical item exposure ($\ge 6$ evaluations per statement).
  • Fixed Round 2 (`reality` lens) duel quota inheritance in `PairwiseVoter::startRoundTwo()` so that participants continue with their cohort's adaptive duel quota rather than reverting to the fallback assessment setting.
  • Updated UI hints and validation bounds to support the expanded range (3–50 duels per lens).
  • Fully verified with 133 automated PHP tests and automated Playwright E2E verification on staging.
  • Stakeholder Group Duel Inputs with Editable Recommended Duels & Helper Copy (#468)**:
  • Redesigned stakeholder group tables across Arena Creation, Arena Settings, and WorkWell Settings into a unified 3-column layout matching design mockups (`Group Name`, `Estimated # participants`, `Recommended # duels`).
  • Added ability for facilitators and organizers to manually edit recommended duel quotas per stakeholder group (between 3 and 50 duels) while retaining auto-recalculation when participant estimates change.
  • Added bilingual explanatory helper copy explaining participant estimates and recommended duel logic.
  • Added automated feature test suite (`StakeholderGroupSizingTest`) covering group duel bounds, calculation formulas, and persistence.
  • Dynamic WorkWell Participant Welcome Instructions (#469)**:
  • Replaced hardcoded participant instruction string with dynamic rendering of `$assessment->description` (with HTML line-break formatting `nl2br(e(...))`).
  • Allowed welcome screen instructions to be completely optional: leaving description empty hides the paragraph entirely, displaying only the question card.
  • Updated WorkWell Studio settings modal textarea label, placeholder, and hint for bilingual clarity.
  • Added automated feature tests covering custom description rendering and empty state fallback.

v2.10.3

2026-09-25

v2.10.3

  • Multi-Tenant Switcher Security & Single-Company UI (#465)**:
  • Restricted `+ Add Client Company` strictly to `admin` and `super_admin` users, eliminating the `isOwnerOf` loophole for standard business clients.
  • Single-company accounts (e.g. standard SME customers) now display a clean, static organization badge in the top navbar without interactive dropdown menus or action clutter.
  • Added backend authorization enforcement in `CompanySwitcher::createCompany()` and `ArenaIndex::createWorkwellAssessment()`.
  • Added comprehensive automated feature tests covering RBAC boundaries (`MultiTenantCompanySwitcherTest`, `WorkwellMultiClientTest`).
  • SEO 301 Redirects & Bot Protection**:
  • Added permanent 301 redirects for legacy routes (`/resources/expert-review-specs`, `/blog/supply-chain-trickle-down`).
  • Added explicit crawl disallows in `robots.txt` for WordPress bot probes (`/wp-admin`, `/wp-login.php`, `*.php`).
  • Newsletter Subscriber Synchronization**:
  • Allowed fallback authorization via GitHub Webhook Secret for automated digest sync.
  • Included web form signups in daily and weekly subscriber dispatch feeds.

v2.10.2

2026-09-24

v2.10.2

  • Multi-Tenant Company Switcher & Client Management (#465)**:
  • Added persistent `CompanySwitcher` component in top navigation bars for seamless 1-click workspace switching across accessible client organizations.
  • Implemented session-aware dynamic active company context on `User` model (`activeCompany()`, `accessibleCompanies()`, `switchCompany()`).
  • Added inline "+ New Client Company" modal in navbar and Arena creation dialogs, allowing advisors to spin up new client delivery workspaces on the fly.
  • Added client organization filtering and client badges in Arena Index for multi-company management.
  • Added automated feature tests (`MultiTenantCompanySwitcherTest`, `WorkwellMultiClientTest`) and Playwright E2E test suites.
  • WorkWell Assessment Settings Management & Duel Sizing Advisor (#466)**:
  • Added persistent "Settings" (`Asetukset`) action button in WorkWell Studio header, accessible in both State Zero and active voting modes.
  • Added comprehensive Settings modal allowing post-launch editing of Title, Description, Duels per Lens, Expected Team Size, Target Groups repeater, Adaptive Duel Sizing toggle, Assessment Status, and Report Access PIN.
  • Integrated interactive WorkWell Sizing Advisor calculating statistical confidence thresholds (>= 6 evaluations per statement) with a 1-click "Apply Recommendation" action.
  • Added deep-link support via `?settings=1` query parameter and direct settings shortcuts in Arena Index table rows and card dropdowns.
  • Added bilingual translations in English and Finnish.
  • Fixed undefined variable `$isFi` in Arena Index client filter.
  • Added automated feature tests (`WorkwellSettingsManagementTest`) and Playwright E2E UI test suites covering positive and negative validation constraints.

v2.10.1

2026-09-24

v2.10.1

  • AuraWorkWell™ & Compare Stakeholder Groups (#464)**:
  • Resolved unhandled 500 Server Error (`Array to string conversion` and `TypeError`) on `/panel/understand/workwell/{id}` when opening an assessment with structured stakeholder groups.
  • Switched `WorkwellStudio`, `WorkwellReport`, `CompareReport`, `ArenaManager`, and Blade templates to use `getTargetGroupNames()` for seamless backward compatibility.
  • Added null-safety in `WorkwellGapService` for framework statements queries.
  • Added comprehensive automated regression test suite covering structured stakeholder groups across studio and participant flows.

v2.10.0

2026-09-24

v2.10.0

  • AuraWorkWell™ 2-Lens Architecture & Multi-Format PDF (#460, #462)**:
  • Standardized assessment taxonomy to a 2-lens framework: "Current State" (Nykytila) vs. "Desired Future" (Tavoitetila).
  • Implemented dynamic 2D GapMap scatter engine matching the CEO mathematical model with 50% quadrant thresholds, Linear GAP, and Priority Scores.
  • Multi-format executive PDF reports: 4 print-ready output formats (Finnish & English, Portrait & Landscape).
  • Streamlined Top 10 lists by removing "Core Values" and "Realized Strengths" badge boxes across all PDF variants per executive sign-off.
  • Updated AuraWorkWell statements WW01–WW30 in Finnish and English.
  • Added sample size reliability gating ($n < 6$) with cohort-aware warnings and metrics masking.
  • Unlisted shareable tokens with optional PIN protection for corporate client delivery.
  • Compare Anything & Compare Studio 2.0 (#414, #438, #455, #456)**:
  • Overhauled survey creation hub with reusable presets: Single-Round Rankings and Two-Lens Gap Analysis.
  • Dynamic entity types & customizable terminology allowing arenas to adapt to any decision noun (initiatives, proposals, strategic bets).
  • Adaptive duel sizing advisor calculating optimal matchup counts based on pool size and participant quota to satisfy single-exposure thresholds.
  • Multi-stakeholder group participant links with isolated idea submissions and cohort-specific consensus calculation.
  • Real-time 2D consensus matrix, clutter-free presenter mode, and response-gated results to prevent premature visibility.
  • Cockpit Simplification & Executive Access Guard (#459, #461)**:
  • Simplified the client dashboard cockpit: collapsed sidebar settings, elevated core VS (VSME) reporting tools, and streamlined the onboarding checklist with persistent minimize/dismiss controls.
  • Implemented executive access guard (`FEATURE_WORKWELL_SUPERADMIN_ONLY`, `FEATURE_COMPARE_SUPERADMIN_ONLY`, `EXECUTIVE_WHITELIST_EMAILS`) restricting WorkWell and Compare Anything to the 4-member executive team (`Mahdi`, `Jyrki`, `Jussi`, `Veini`) on production and staging, ensuring standard customer accounts experience a clean, distraction-free reporting interface.
  • Active Legal Consent & GDPR Telemetry (#428, #431)**:
  • Active clickwrap consent checkbox required on user registration.
  • Updated Terms of Service and Privacy Policy with explicit GDPR-compliant AI training consent, data retention policies, and corporate authority representations.
  • Persisted consent telemetry audit trail (`accepted_terms_at`, `accepted_terms_version`, `accepted_privacy_version`, `consent_ip`).
  • Founder Welcome Outreach & Commercial CRM Pipeline (#426, #457, #458)**:
  • Automated founder welcome sequence from Veini Simolin (`[email protected]`) with Microsoft Bookings integration and direct WhatsApp outreach.
  • Account reconciliation script and permission bypass for internal commercial team.
  • Automated CRM lead classification into New Leads, In Discussion, and Customers with instant email notifications to commercial leadership upon new registrations.
  • AI Readiness & Enterprise Portability (`5f9771f`, `e27e4fe`)**:
  • Decision latency metrics (rapid, deliberate, hesitant voting behavior) captured for AuraPrefs / RLHF benchmark exports.
  • Full company data export and GDPR portability tools.

v2.9.3

2026-09-09

v2.9.3: Fix Registration Lead Alert & Auto-Provisioning Single Dispatch

  • Registration Alert & Provisioning Deduplication**:
  • Removed duplicate event listeners for `NotifyAdminsOfNewRegistration` and `ProvisionEsgClickOrganization` in `AppServiceProvider` that were already discovered via Laravel Event Discovery.
  • Eliminated duplicate lead alert emails sent to commercial leadership (Jyrki, Mahdi, Jussi) upon new user registration.
  • Added strict single-dispatch test assertions in `NewUserRegistrationNotificationTest` (`Mail::assertSent(..., 1)`) and `EsgClickSyncServiceTest` (`Http::assertSentCount(1)`).

v2.9.0

2026-09-09

v2.9.0: Supplier Invoice Upload Bridge with Persistent Audit Trail

  • Supplier Invoice Upload Bridge with Persistent Audit Trail (#175, #171, #284)**:
  • Drag-and-drop supplier invoice upload supporting PDF, Excel (`.xlsx`, `.xls`, `.csv`), Word (`.docx`, `.doc`), and text files directly in the GHG Emissions Calculator.
  • Automatic emissions classification and factor matching for Scope 1 (fuels, stationary and mobile combustion) and Scope 2 (purchased grid electricity and district heating) with unit normalization.
  • Dedicated persistent audit trail architecture (`document_uploads` and `document_extractions` tables) with secure company-isolated file storage (`storage/app/documents/...`).
  • Cross-module business partner extraction for VSME Module B1 (`b1.q1.business_partners`) linking identified suppliers (e.g. St1 Oy, Helen Oy, Neste).
  • Robust multilingual and European number format parsing supporting both comma decimals and thousand separators.

v2.8.1

2026-09-08

v2.8.1: AuraWorkWell Diagnostic PDF, Token Sharing & Benchmarks Fix

  • AuraWorkWell™ Executive PDF Diagnostic Report (#283)**:
  • Formatted 5-page A4 print-ready diagnostic PDF template.
  • Implemented WorkwellShowcasePdfService using Spatie LaravelPdf and Browsershot.
  • Registered download endpoint GET /workwell-showcase/pdf with one-click download buttons.
  • AuraWorkWell™ Dynamic Diagnostic Report Engine & Token Sharing (#282)**:
  • Added standalone WorkwellReport component supporting public unlisted tokens and authenticated company admin access.
  • Added additive migrations for workwell_gap_scores and workwell_assessments.
  • Implemented exact 2D scatter coordinate system matching the CEO Excel model.
  • Peer Benchmarks Dashboard 500 Error (#220)**: Resolved Undefined variable $peerWidth 500 error on /panel/benchmarks.
  • AuraWorkWell™ Gap Map Alignment (#271)**: Positioned 4-quadrant labels cleanly above and below canvas.

v2.8.0

2026-09-08

Release v2.8.0: Heidi QA Report Enhancements, Dynamic GHG Calculator, Scope 2 Market Factors, and AuraWorkWell Debrief

  • #279 Dynamic Livewire Updates**: Real-time invalidation of memoized computed properties in Livewire 3 ensures newly added, edited, or deleted emissions entries immediately update KPI summary cards without requiring a page refresh.
  • #280 Custom & District Heating Factors**:
  • Added company-scoped custom emission factors so users can input supplier-verified invoice figures.
  • Seeded Scope 2 district heating market-based factors (100% renewable bio-heat, waste heat recovery, residual mixes).
  • Added Finnish district heating guidance tip for Helen, Fortum, Alva, Turku Energia invoices.
  • #281 Scope 2 Renewable Electricity Factors & 1-Click Action**:
  • Seeded official Scope 2 market-based electricity factors: 100% Renewable Electricity (Guarantees of Origin / PPA), 100% Wind, 100% Solar, 100% Hydro, 100% Nuclear, Finland Residual Mix (Energiavirasto), and EU Average Residual Mix.
  • Added 1-click '+ Select 100% Renewable' quick action button that sets contractual market emissions to 0 tCO2e while retaining the physical Finnish grid factor for location-based disclosure.
  • Live instant preview renders side-by-side comparison of Location-Based (Grid) and Market-Based (Contract) with a green 'Net Zero' badge.
  • #272 Energy & Emissions**: Fixed B3-Q1 fuels/electricity mappings, Executive Summary Scope 1+2 calculation, and GHG intensity ratio presentation.
  • #273 Workforce Health & Safety**: Corrected data mapping keys for accidents count, LTIFR rate, and work-related fatalities.
  • #274 Remuneration & Training**: Fixed key mismatch in B10 to populate collective bargaining, minimum wage, gender pay gap, and training metrics.
  • #275 Layout**: Prevented contact info text overlap on the back page.
  • #276 Pagination**: Single-page layout preservation for Environment, Social, and Governance section dividers.
  • #277 Formatting**: Enforced space thousands separators across Finnish/Nordic reports (e.g., '12 500 MWh' instead of comma separators).
  • #278 Key Figures**: Company-level fallback resolution ensures completed DMA material topic counts display accurately.
  • Standardized terminology across the executive showcase: 100% English copy, Theme taxonomy, rotated Y-axis Gap Map, and singular 'Accepted Weakness' classification.
  • Local Tests**: 683 automated tests passed (3,624 assertions).
  • Staging Preflight**: Live E2E test suite verified on https://vsmetest.pomegroup.studio.
  • Production Status**: Successfully deployed to https://executesg.com with health status 200 OK.

v2.7.1

2026-09-07

v2.7.1: Questionnaire Wizard State Retention & Radio-Cards Hotfix

  • Questionnaire Wizard State Retention (#263)**:
  • Fixed an issue where selecting 'Yes' and typing into inner input fields in radio-cards (such as B1.Q5 Sustainability Certificates & Labels) would lose input state on clicking Next.
  • Resolved DOM scraping quote parsing conflict in Alpine x-data on the wizard actions bar.
  • Made Wizard::next() merge partial input updates rather than destructively overwriting the answers array.
  • Added regression test suite covering B1.Q5 state retention and Next navigation.

v2.7.0

2026-09-07

v2.7.0: Native CRM Pipeline, Inbound Lead Alerts & SEO Architecture

  • Native CRM Lead Pipeline (/core/users)**: Integrated commercial lead tracking tabs, interaction notes, activity logs, and assignee delegation.
  • Inbound Lead Alerts**: Automated transactional email alerts to commercial leadership on new user registrations.
  • Dedicated Sustainability Reporting Tool Pillar**: Added dedicated landing page and navigation entries for /sustainability-reporting-tool.
  • SEO Canonical URL Optimization**: Converted legacy duplicate route aliases to canonical 301 redirects; expanded sitemap.xml.
  • Performance**: Eager loaded company reports and answers in admin user listings with defensive relation guards.

v2.6.1

2026-09-04

Security Hardening, Threat Defense & Cross-Tenant Isolation

  • Security: Enforced global user account suspension via CheckSuspended middleware, terminating active sessions and revoking Sanctum API tokens immediately.
  • Security: Locked down GET /api/newsletter-subscribers behind admin auth / sync secrets to eliminate user PII leakage.
  • Security: Restricted POST /api/test-email-trigger to local development and authenticated admins to eliminate email relay spam vector.
  • Security: Added comprehensive cross-tenant isolation and IDOR checks across Report Viewer, XBRL/Excel export, WorkWell Studio, and Compare Arenas.
  • Security: Added NotDisposableEmail validation rule and IP-based rate limiting on registration to block disposable email bot accounts.
  • Security: Added API rate limiting on login and webhook endpoints with secret token verification.

v2.6.0

2026-09-01

v2.6.0

v2.5.0

2026-08-28

Free Readiness Assessment Engine, Super Admin Lead Manager & Integrated Strategy Positioning

  • Assessments: Added free interactive ESG Readiness Diagnostic survey (/readiness) and central Assessment Hub (/assessments) with real-time scoring, module breakdowns, and ROI estimates.
  • Admin: Built Super Admin Assessment Submissions manager (/core/assessments) with KPI cards, tier/industry filtering, CSV export, and detailed response inspection drawer.
  • Marketing: Repositioned homepage Hero to "Sustainability & Strategy. Integrated in One Platform" with direct CTAs for free VS (VSME) onboarding and meeting bookings.
  • Localization: Added complete Finnish translations for hero positioning copy and assessment flows.
  • Act Module: Added strategic elements, multi-tier hierarchy progress rollups, and interactive project cards.

v2.4.7

2026-08-22

v2.4.7 - High-Impact Marketing Localization

  • Marketing Localization (Issue #227)**: Fully translated core marketing pages and shared navigation into Finnish and English.
  • Navbar & Footer**: Dynamic navigation menus, mega-menu descriptions, and footer links.
  • Pricing**: Localized headings, pricing cards, billing toggles, add-on consolidation banner, and FAQs.
  • Contact**: Localized headlines, office address, contact person, and Livewire contact form.
  • About**: Localized mission, Self-Determination Theory philosophy pillars, and leadership team bios.
  • Testing**: Added automated feature tests in MarketingLocalizationTest.

v2.4.6

2026-08-22

Marketing Language Switcher

  • Navbar: Added desktop and mobile Language Switcher (English / Suomi) to the public marketing navbar.

v2.4.5

2026-08-22

v2.4.5 - Smart Report Resolution, Review & Submit Step, and Draft Deletion

  • Dedicated Review & Submit Step**: Replaced abrupt auto-submission on the last question with an interactive summary step displaying completion percentage, counts, and 1-click jump links to any incomplete disclosures before final submission (#226).
  • Draft Report Deletion**: Added a delete action with confirmation prompt for draft reports in the Reports dashboard (/panel/report), allowing users to easily clean up accidental empty drafts.
  • E2E Automation**: Added automated Playwright test suite for report resolution, review & submit step, and draft deletion.
  • Smart Report Resolution**: Prevented silent auto-creation of duplicate draft reports when opening the questionnaire from the sidebar. The wizard now reliably reuses the company's active report.
  • Question Completion Check**: Fixed false positive completion check on table questions (B3-Q1) by ignoring derived 0 totals and evaluating only user-provided source inputs.
  • GHG Calculator Links**: Added target="_blank" and rel="noopener noreferrer" to external GHG calculator entry points to preserve active wizard position.

v2.4.4

2026-08-22

VSME Wizard B3-Q1 Energy Table Fix, Fast Sync & Fennoa Integration

  • Wizard: Fixed 500 PALVELINVIRHE error on Question 18 (B3-Q1 Energy Table) by eliminating concurrent $wire.set calls in Alpine x-effect and auto-computing derived totals on server (Issue #225).
  • Wizard: Migrated all questionnaire inputs to wire:model.live.debounce.300ms to eliminate answer loss and validation race conditions on Next click.
  • Integration: Added Fennoa accounting integration with settings UI, normalizer service, and background synchronization.
  • Act: Fixed Kanban board blade null checks and progress rollup calculations.
  • API: Added token-authenticated /api/newsletter-subscribers endpoint and 1-click test email review trigger.
  • Security: Updated composer dependencies to address security audit advisories.
  • Testing: Added Playwright E2E automation suite for B3-Q1 Energy Table calculations and rapid navigation.

v2.4.3

2026-07-21

About Page Team Update & LinkedIn Profiles

  • Team: Replaced Pasi Papunen with Jyrki Taiminen (Business Director) on the About page with updated bio.
  • Team: Updated team portrait imagery with Jyrki Taiminen's official photo.
  • Team: Added direct LinkedIn profile links for all ExecutESG team members.

v2.4.2

2026-07-18

Super Admin Dashboard Redesign & Database Cleanup

  • Admin: Redesigned the Super Admin Dashboard with KPI stats, signup growth & plan distribution charts, conversion pipeline funnel, activity feed, and alerts/quick actions.
  • Admin: Added db:cleanup-production command to safely remove sandbox, test, or development data while preserving primary customer records.
  • Fix: Resolved lazy loading violation in the dashboard by eager-loading user subscriptions.
  • Fix: Fixed flakiness in AdminReportViewerTest by using explicit names for test users.

v2.4.1

2026-07-13

Blog Links Hotfix

  • feat(api): add guided next-question endpoint + robust required detection by @bemehrbani in https://github.com/ExecutESG/vsme/pull/213
  • fix(api): unblock consolidated reports + detect object-form required … by @mojbala in https://github.com/ExecutESG/vsme/pull/214

v2.4.0

2026-07-01

Netvisor Integration, External API, Glossary, Analytics & Production QA Hardening

  • feat: Visma Netvisor API integration for automated GHG baselining by @bemehrbani in https://github.com/ExecutESG/vsme/pull/205
  • feat: implement external integration API for VSME platform (#206) by @bemehrbani in https://github.com/ExecutESG/vsme/pull/207

v2.3.1

2026-06-09

SEO Redirects & Code Quality Polish

  • fix(deploy): update blog:sync paths to match renamed content files and add guide sync by @bemehrbani in https://github.com/ExecutESG/vsme/pull/200
  • fix(content): replace irrelevant featured image for best-vsme-reporting-software by @bemehrbani in https://github.com/ExecutESG/vsme/pull/201

v2.3.0

2026-05-22

Sustainability Directory, Peer Benchmarks & Onboarding Improvements

  • Directory: Public sustainability directory with searchable company profiles and dynamic badge tiers.
  • Benchmarks: Peer comparison module with AI-digested ESG data from real sustainability reports.
  • Onboarding: Added Company Name and Registration Number capture during user registration.
  • Analytics: GTM dataLayer user identification for GA4 attribution on authenticated pages.
  • Content: Blog sync paths updated to match renamed content files; added guide syncing support.
  • Content: FAQ JSON-LD schema extraction to prevent raw text display on blog pages.
  • UX: Human-readable NACE sector display in directory and company profiles.
  • UX: Fixed geolocation input editing and conditional textarea disabled state.
  • Security: Patched 4 CVEs in Laravel/Symfony dependencies (laravel/framework v12.61.1).

🍪 Your Privacy Options

We use strictly necessary cookies to keep you signed in and protect your session. With your explicit consent, we also use analytics cookies (Google Analytics GA4) to improve our service. You can choose to accept all cookies or only allow essential ones. Read our Privacy Policy.