What's new in Solvo 2.0
2.0.1 (9 October 2026)
- Licensing now works like Creator Collective and Family OS. The package ships with the
systems.mojamoza.com signing secret (2.0.0 shipped without it, which caused "Secret mismatch"),
reads the server, secret and product only from
config/license-server.php(old.envvalues can't interfere), accepts both reply formats, only gives the grace period after a real activation, and re-checks after 15 minutes when the server was briefly unreachable. - While a licence isn't active, Super Admins land on System & licence; schools, parents and staff see a "We'll be back shortly" page; sign-in, password reset and payment callbacks keep working.
- System & licence shows activation date, failed checks, what the server said and technical details for
support. The installer takes the licence key. New daily cron:
scripts/verify_license.php. - Phone tab bar. On phones every dashboard has an app-style bottom navigation with each role's four most-used pages (with live badges) and More for the full menu. It respects iPhone and Android safe areas, ready for the coming Android and iOS apps.
- Installable app. Solvo now registers its service worker, so phones offer "Add to home screen" / "Install app", it opens full-screen like a native app, and shows a branded "You're offline" screen instead of the browser's error page. The manifest no longer points at missing splash and shortcut images.
2.0.0
Released 9 October 2026. Upgrading from 1.x? See UPGRADING_FROM_1X.md — your data stays exactly where it is, and the database update is one button.
Look and feel
- One shared stylesheet per side. Every page now loads
public/assets/css/solvo-app.css(dashboards for all roles) orpublic/assets/css/solvo-site.css(marketing site, school websites, sign-in pages, installer, docs). The 125 inline<style>blocks that were scattered through 1.x pages are gone, so a change to a colour, button or table is made once and applies everywhere. - Light, dark and "follow my device" modes on every page, for every role, plus the public sites. The choice is saved to the user's account, so it follows them to any device.
- Colour themes. Eight ready-made themes (Ocean, Emerald, Royal, Crimson, Slate, Sunset, Midnight, Forest), the platform's own brand colours, and — for school users and school websites — the school's own colours.
- New dashboard shell. Grouped sidebar with icons and unread badges, top bar with search, theme
menu and user menu, a command palette (
Ctrl/⌘ + K) to jump to any page, toast notifications and a mobile-friendly off-canvas menu. - Self-hosted Inter font (no Google Fonts call, faster on slow connections, nothing to block).
- Light and dark logo variants for the platform and every school, used automatically on light or dark backgrounds — including inside emails.
- School websites rebuilt on one shared layout: top bar with contacts, sticky header, Events, Gallery and FAQ pages (shown only when the school has content), dark mode, school colours, a "coming soon" page for unpublished sites, and the school's live chat.
Communications
- 13 email engines: Resend, Mailchimp Transactional (Mandrill), Mailgun (US/EU), SendGrid, Brevo,
Postmark, Amazon SES, ZeptoMail, Elastic Email, MailerSend, SMTP (with STARTTLS/SSL), PHP
mail()and "log only". - 9 SMS gateways: Africa's Talking, Twilio, Advanta, Celcom Africa, Infobip, Vonage, Termii, any HTTP gateway (configurable URL, method, body template and success check) and "log only".
- 44 ready email templates and 37 SMS templates covering accounts, billing, fees and instalments, attendance, academics, admissions, announcements, events, library, payroll, transport, elections, alumni, enquiries, live chat and affiliates. Every email is a complete, responsive, email-client-safe HTML design that pulls in the right logo variant, colours, address, phone, website, WhatsApp and social links — the platform's for platform emails, the school's for school emails.
- Template editor with live preview (desktop and phone widths; SMS with character and segment counter), variable picker, test send and "reset to default". Super Admin edits the platform defaults; each school can override any school template for its own sends.
- Message log and outbox. Every email and SMS is recorded with its rendered content, provider,
status and error. Failures are retried automatically with back-off (
scripts/process_outbox.php), and can be retried by hand. - Per-school sender settings. Schools can set their sender name, reply-to address and footer note, or connect their own email engine and SMS gateway.
- API keys are encrypted at rest (libsodium) — including the M-Pesa and Paystack secrets that were stored in plain text in 1.x.
- Wired into the flows that matter: welcome emails for new staff, guardians and students, password reset and password-changed alerts, school onboarding, subscription invoices, payments and overdue reminders, fee receipts after M-Pesa and manual payments, fee reminders, absence alerts, announcements (email plus optional SMS), new in-app messages, admissions (received, status updates, offers and a heads-up to the school), contact-form auto-replies and affiliate emails.
Live chat (new)
- A chat bubble on the marketing site (talks to the platform team) and on every school's website and in-app for parents and students (talks to that school's office).
- Agent console for Super Admin and School Admins: inbox with unread counts, visitor details and
current page, typing indicators, saved replies with
/shortcuts, assign, close/reopen, email transcript, ratings, availability toggle and opening hours. - Offline messages are emailed to the team; visitors get replies by email if they've left.
- Works on shared hosting — no WebSockets or Node required. See LIVE_CHAT.md.
Administration
- System & licence page: licence status and re-check, one-click database update, outbox health, copy-ready cron commands for your server, and server checks (PHP version, extensions, writable folders, HTTPS).
- Appearance page: default mode and theme, platform colours, sidebar style, whether users may choose their own theme.
- Licence activation screen — paste the key and sign in; no
.envediting. - Database updates are tracked (
schema_migrations) and applied safely from the browser orphp scripts/migrate.php. - Installer applies the schema statement by statement (works where multi-query is disabled), offers optional sample data, prepares the encryption key and lists your cron jobs.
Demo edition
- One-click sign-in buttons for every role on the login page.
- Dangerous settings (engines, licence, appearance defaults, protected demo accounts, suspending demo schools) are read-only, and no real email or SMS ever leaves the demo — messages are rendered and logged as "suppressed" so visitors can still see them.
- Nightly reset (
scripts/demo_reset.php) rebuilds everything, including demo logos, chat conversations and a populated message log.
Fixes
- Transport assignments: the "filter vehicles by route" helper never received route data.
- Parent dashboard, teacher assignments: "undefined array key" warnings when a child or assignment had no records yet.
- Service worker no longer serves an outdated stylesheet after an update (network first, cache only as an offline fallback).
- Static files are now compressed and cached by the browser (
public/.htaccess), with versioned URLs so updates are picked up immediately.