Changelog
Latest updates, improvements, and fixes for Executive Group.
v2.10.10 LATEST
2026-09-30Compare 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-29WorkWell 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-29Compare 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-29WorkWell 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-29WorkWell 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-28WorkWell 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-25v2.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-25v2.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-24v2.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-24v2.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-24v2.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-09v2.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-09v2.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-08v2.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-08Release 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-07v2.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-07v2.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-04Security 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-01v2.6.0
v2.5.0
2026-08-28Free 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-22v2.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-22Marketing Language Switcher
- Navbar: Added desktop and mobile Language Switcher (English / Suomi) to the public marketing navbar.
v2.4.5
2026-08-22v2.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-22VSME 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-21About 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-18Super 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-13Blog 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-01Netvisor 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-09SEO 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-22Sustainability 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).