KLASSCI/ Docs

Changelog

Notable changes to the KLASSCI platform, grouped by month.

The format loosely follows Keep a Changelog.

This file is curated by hand from the release log. Minor fixes, internal refactors, and infrastructure changes aren't always listed. For the full technical history, check the repo's git log.


May 2026

Added

  • LMD academic blueprint fully editable inline — on the LMD Planning page, every cell of the table (lectures, tutorials, lab work, project, supervised work, ECTS credits) becomes editable on a single click. Changes save instantly without page reload, and the total hours recalculate automatically. Assigning a teacher to an ECUE happens through an elegant picker (grouped by role, with profile photos). Every change is traced in the audit log for compliance.

  • Bulk edit of pedagogical volumes — select multiple ECUEs at once (per-row checkbox or "select all"), an action bar appears at the bottom of the screen. Click "Bulk edit" to open a compact editor where you choose which fields to apply (for example: "Supervised work = 30h for the 12 selected ECUEs, without touching the rest"). Ideal for applying a uniform pedagogical policy across a full cohort in seconds.

  • Ready-to-use UEMOA Licence blueprints — 5 specialized Licence 3 tracks added on Ephrata (Private Law, Public Law, Economics, Management, Agroeconomics), alongside the Licence 1 and 2 common cores already imported. In total, 9 full tracks (Law, Economic & Management Sciences, Life & Earth Sciences, Modern Letters) covering 232 teaching units and 447 ECUEs, compliant with the UEMOA standard (30 credits per semester). No more manual entry of the pedagogical blueprint — everything is pre-filled, editable, audited.

  • Disability supervision for students (/esbtp/accessibility) — a new dedicated page to oversee the cohort of students with pedagogical accommodations. Per student: official recognition, categories (motor, visual, hearing, cognitive, psychiatric, learning disorders, chronic illness), concrete accommodations (extended time as a configurable percentage, adapted room, large-print materials, sign language interpreter, note-taking aid, laptop allowed, exam breaks), assistant required, validity period. The student profile gains a new "Accessibility & accommodations" section with a premium editor panel (colored chips, toggles, validity dates). A discrete pictogram appears next to the student's name in the students list, in attendance and full class rosters, in grade-entry sheets, and in every PDF / Excel export — so teachers spot affected students at a glance. Class attendance sheets and full class rosters now include a footer "Accommodations to respect" block listing the adaptations for each affected student. Medical detail is strictly separated from the teacher-visible summary: by default only coordinators and secretaries can access it. All edits are tracked in the audit log. Five new permissions configurable per school via the custom roles matrix. Dedicated cohort export (preview + PDF + Excel + email delivery).

Fixed

  • Level → semester cascade in LMD planning — the semester filter now automatically adapts to the chosen level (Licence 1 → S1+S2, Licence 2 → S3+S4, Licence 3 → S5+S6) per the UEMOA standard, regardless of which units are already attached to the selected track. The level filter displays every active LMD level.

  • Multi-user editing robustness — when two people edit the same cell simultaneously, a clear conflict message appears ("This planification was modified by another user, please refresh the page") instead of a generic error. Expired sessions, lost permissions, and server-side validation errors all show precise contextual messages.

Security

  • Audit log extended to pedagogical blueprints — every change to teaching hours, credits, coefficient, or assigned teacher is now traced in the audit log accessible from the "Security & Audit" menu (permission security.audit.view). You know exactly who changed what, when, and with which before/after values.

Improved

  • Resilient grade entry, even on flaky wifi (/esbtp/notes, entry modal) — every keystroke is now saved locally in the browser. If the connection drops while the teacher is entering 600 grades in class, nothing is lost: the next time the modal opens for the same class / subject / period, a yellow banner « Unsaved draft detected — 4 min ago · 38 grades pending sync » offers to restore everything in one click. A network badge in the modal header constantly shows the sync state: green « Synced », orange « Saving… », red « Offline — local draft ». If the teacher tries to close the modal while saves are still in flight, a premium confirmation prevents accidental data loss.

  • Excel-like keyboard navigation (/esbtp/notes, entry modal) — Tab and Shift+Tab move across columns, Enter and Shift+Enter move across rows, Ctrl+S saves all pending grades, Esc blurs the cell, Ctrl+F opens the search bar. On the very first focus of the first cell, a discreet tooltip surfaces the shortcuts once (auto-dismiss after 6 seconds or on the first Tab).

  • Premium redesign of the grade entry modal (/esbtp/notes) — the table header (Students, Semester 1/2, Assessments, Summary) stays sticky at the top while scrolling vertically. An integrated toolbar shows a live student search (filter by name, first name or matricule) and live counters (« 87 students · 6 assessments · 12 visible »). Beyond 80 students per class, the grid renders only the first 50 and a « Load 30 more students » button appears at the bottom to avoid jank. When the table overflows to the right, a subtle gradient and a floating arrow invite horizontal scrolling.

  • More visible save: premium toast instead of row flash (/esbtp/notes) — every saved grade now triggers an elegant toast in the top-right (« Grade saved — Marie Konaté · average 14.25/20 ») which intelligently batches if multiple grades save in less than half a second (« 8 grades saved — Marie, Aïcha, Jean, +5 »). The row flash is also kept for direct visual confirmation.

  • Visually clear absent toggle (/esbtp/notes) — the tiny checkbox is replaced by a red form switch with the « Abs » label. When a student is marked absent, their row is gently tinted red, their name turns italic and an « Absent » badge (or « Absent 3/6 » if only some assessments) appears next to their name.

  • Readable assessment headers + quick edit (/esbtp/notes) — the tiny score-scale and coefficient inputs are replaced by a clean three-line display: assessment title, « / 20 · Coef 1 », type badge. A subtle pencil button appears on hover and opens a mini form to quickly edit the title, score scale (1 to 100) and coefficient (0.1 to 10) without leaving the page.

  • « Save and continue » in assessment creation (/esbtp/notes) — a new button next to « Create assessment » saves the new assessment and keeps the form open with the class, subject, date, time, score scale and coefficient preserved, so teachers can string two or three assessments together in the same session without reopening the modal each time.

Added

  • Offline grade entry: Excel export + re-import with Before/After preview (/esbtp/notes) — every grade entry modal now offers an "Export to Excel" button (one row per student, one column per assessment with the score scale and coefficient in the header, freeze pane on the student and name columns, autoFilter, matricule kept as text to preserve leading zeros) for offline entry, e.g. in the classroom or at home. On the way back, an "Import Excel" button with drag-and-drop opens a premium preview modal showing, with four colored KPIs (to create, to update, unchanged, errors) and a row-by-row table, exactly what will change before confirmation. Validation is per-cell (score within scale, matricule must exist, French decimal format 12,5 accepted, ABS marker recognized for absence) and the apply step is atomic. 5 MB file limit, 10 exports per minute, 5 previews and 3 imports per minute to prevent abuse.

  • Real-time impact preview on the bulletin (/esbtp/notes) — every time a teacher types a grade in the entry grid, a discreet panel appears under the student row and shows in less than a second the new subject average, the new general average, and the CAMES mention change (Outstanding / Very Good / Good / Pass / Insufficient) if the grade tips the student into a different mention bracket. Guard against typos and instant visual confirmation of the academic impact.

  • Premium redesign of the teacher create / edit pages — single-page form with KLASSCI gradient hero, three required fields to get started (full name, phone, specialization), a "Contract regime" section with radio cards (Contractor / Permanent / Consultant) and conditional fields per regime, a collapsible "Detailed profile" panel for diplomas and grade, optional start-of-activity date prefilled to today.

  • Premium redesign of the bulk-availability editor (/esbtp/enseignants/bulk-availability) — every teacher item is repainted: gradient avatar with initials, premium stats (Preferred / Available / Unavailable) with semantic colors, 7×11 calendar grid with per-status gradients, edit mode with active blue outline, legend in a grey card.

  • Unified PDF / Excel export pattern with preview, email delivery, and per-tenant premium export settings. The same flow now powers payments, class rosters, bulletins, and accounting reports.

  • Per-tenant PDF customization — tenant settings for accent color, logo position, footer signature, margins, and rendering preview in a new tab without intermediate download.

  • Interactive chat with event-driven notifications — messaging reacts in real time to business events (payment validated, enrollment validated, payment created) and surfaces matching notifications in the recipient's sidebar.

  • Premium "New message" modal in chat — gradient header, circular recipient avatars, real-time search, full keyboard accessibility.

  • Chat UI 2026 polish — consecutive messages from the same sender are grouped, optimistic UI on send (the message shows up instantly), "New" banner on unread conversations.

  • Actionable collections page (/esbtp/comptabilite/relances) — every overdue line offers a pre-filled WhatsApp deeplink with the personalized reminder message, plus an accuracy widget showing the success rate of reminders by communication channel.

  • Full workflow gating — every role (cashier, accountant, secretary, coordinator, teacher) sees only the sidebar sections, routes, and action buttons that match their scope. A CLI command lets you supervise permissions granted per tenant.

Improved

  • Merged esbtp_enseignant_profiles into esbtp_teachers — one editing screen, one schema. The "contract type" and "employment status" fields are unified in a single "Regime" field (Contractor / Permanent / Consultant). "Hire date" becomes "Start-of-activity date". The esbtp_enseignant_profiles, esbtp_enseignant_disponibilites, esbtp_enseignant_affectations tables (never actually populated by the modern UI) are dropped.
  • Cleanup of out-of-context fields on the teacher profile — Laboratory, Motivation, Teaching Methods, Pedagogical Tools, CV upload and photo (coming via progressive upload) are removed. The "Department" filter and column on the list are also removed (KLASSCI targets higher education without department layering).
  • "Secondary view" banner on the teacher list reminding that the primary staff management surface is /esbtp/personnel/unified.
  • Centralized teacher access via the new Eloquent relation — every screen (teacher dashboard, attendances, grades, planning) now uses the same relation to access the profile of the connected teacher. Pages no longer crash after schema migrations.

Security

  • Throttling on teacher routes — 60 requests per minute on the teacher group, and 5 per minute on password reset (which creates a random password).

Improved

  • The "Print" button now prints the actual document, not the web page (preview screens for attendance sheet, full class roster, student financial situation, attendance certificate, school certificate, timetable, report card, payment receipt, attendance report) — previously the button printed the whole page (KLASSCI sidebar, topbar, and KPI cards all visible in the print preview). Now clicking "Print" opens the real PDF of the document in a new tab; just click the printer icon in the PDF viewer (or hit Ctrl+P) for a clean printout, identical to the PDF that gets downloaded. Bonus: if the user accidentally hits Ctrl+P on any other page of the app, the sidebar and topbar are now auto-hidden so only the meaningful content prints.

Removed

  • Purged "ESBTP" references that leaked through as fallback values in emails, SMS, PDFs, and the install screens — KLASSCI being a multi-tenant product, seeing "ESBTP" as a default whenever a school hadn't yet filled in its own name was incoherent. Parent notification emails now use "votre enfant" / "your child" as the fallback (instead of "ESBTP"), reminder SMSes use the configured school acronym from Settings (instead of a hardcoded "ESBTP:" prefix), and every PDF (receipts, certificates, timetable, grades report, attestations) now reads its header (school name, address, phone, email, city) live from the school's Settings — no more "Ecole Spéciale du Bâtiment et des Travaux Publics", "BP 2541 Yamoussoukro", or "esbtp@aviso.ci" hardcoded in if config was incomplete. Form placeholders and subtitles cleaned up too. Legitimate references — "ESBTP Yakro" and "ESBTP Abidjan" on the bulletin style picker (which are the real names of the two bundled style templates) — are preserved.

Fixed

  • School logo not appearing (blank rectangle) on attendance sheets, full class rosters, student/class exports, and several accounting PDFs — on the blue header banners of these documents, the logo collapsed to a white rectangle due to a legacy CSS filtering effect, and the file lookup only tried a single storage location (so it went missing for any tenant whose logo had landed in a different subfolder over time). The logo now renders in its real colors, framed in a white card so it stays readable on the colored banner, and the file resolution now tries every plausible location (with two bundled KLASSCI logos as last-resort fallbacks so the header is never logo-less).

Security

  • "Record payment" button now actually works for roles that hold the "create payment" permission (student profile /esbtp/etudiants/{id} and enrollment profile /esbtp/inscriptions/{id}) — previously, the "Record a payment", "Make a payment" and "Pay" buttons were rendered (the create-payment permission was granted) but clicking them and submitting the form silently failed with a 403, because the endpoint also required the "validate enrollment" permission which isn't actually used in this flow. The cashier and any custom role with the create-payment permission can now record a payment from those two screens, as expected.
  • "Validate payment immediately" checkbox restricted to the self-override permission (payment modals on student profile and enrollment profile) — the checkbox used to show up for everyone, and was even pre-checked on the student profile. Ticking it let a user validate their own payment in one step, bypassing the anti-fraud separation of duties. The checkbox is now visible only for users who explicitly hold the "Self-validate own payments" permission (reserved for very small schools with a single accounting account). For everyone else, the payment is created pending validation and a separate accountant must validate it.

Fixed

  • Pre-enrollment of a new student by the cashier (/esbtp/inscriptions/pre-inscription) — the "Save pre-enrollment" button failed with a database integrity error whenever a brand-new student (never previously enrolled) was submitted. Only re-enrollment of an existing student worked. The bug had been there since the very first cashier release. Fixed: pre-enrollment of a new student now goes through and parks the enrollment as a "prospect" with its subscribed fees and any partial down-payment recorded.
  • RelationNotFoundException [enseignantProfile] on the Planning Général page and several endpoints related to attendances, grades, and the teacher dashboard — fixed. A new User → teacherProfile relation (with teacher and enseignant aliases) is exposed and used by every affected screen.
  • "Create teacher" modals on /esbtp/planning-general and on the session creation form — were still displaying the old fields (Department, Contract Type, Employment Status, Hire Date) after the DB merge. Now aligned with the new schema: Regime + Start-of-activity date.
  • Phone field required on teacher edit — the form was blocking legacy teachers whose phone was not on file. The field is now optional on the edit form (server validation accepts empty).

April 2026

Added

  • Premium redesign of the subjects list (/esbtp/matieres) — gradient hero with 4 live KPIs, hybrid filters (3 always-visible selects + collapsible advanced button), sticky bulk actions bar, per-row kebab menu (View / Configure / Edit / Delete), modal confirmations, AJAX bulk delete, premium empty state.

  • Premium redesign of re-enrollment (/esbtp/reinscription) — tabs and indicators fed from the same source (yearly per-class KPIs), clear status badges (Re-enrolled / To re-enroll / Pending), real-time sort and search, aligned with the visual pattern of other modules.

  • Premium redesign of announcements (five views: index, create, edit, detail, manage) — KLASSCI gradient header, semantic badges per audience (students / teachers / all), iiConfirm confirmations everywhere, removed the legacy green background in favor of the KLASSCI monochrome blue palette.

  • Conditional enrollment for upcoming year — a student can enroll before the term starts with a grace period on missing documents or fees. Dedicated dashboard at /esbtp/inscriptions/sous-reserve with automatic detection of missing documents, smart alerts by reserve condition, click-to-detail navigation, sidebar link. The Overview, Academic, and Attendance tabs of the student profile now show an explicit fallback when the current year is still under conditional enrollment.

  • Premium redesign of the enrollment detail page — two-column info-grid for parents / student, summarized finance bar (expected / paid / balance), list of other enrollments for the same student, premium empty states, modernized payment table. Edit page also refactored (removed redundant address field, parents info-grid, section headers).

  • Bulletin configuration redesigned — per-school configuration page rebuilt (template, mentions, calculation formulas, signatures, /20 or /100 grading), fixed broken sidebar links.

  • Password expiry alert at 6 months — contextual warning message in the header ("your password expires in X days"), redirect to the change form, visual distinction between first login and expiration. A CLI command unblocks an expired account without UI access.

  • Show / hide password toggle on the admin creation page during initial install, and on the premium password change modals (4 profiles: superadmin, secretary, accountant, coordinator).

  • Per-tenant module activation and deactivation — every tenant can enable or disable the Teachers / Grades & Evaluations / Timetable / Attendance / LMD / Accounting / Cashier / Communication / Tech Support modules. The sidebar and dashboard KPIs hide deactivated sections. Corresponding permissions (module.*.access) are managed from the role configuration screen.

  • Remote tenant management CLI — REST endpoints + Artisan commands to create a user, list accounts, soft-delete, create or set the current academic year, unblock an expired password. Sanctum token auth. Lets you operate a tenant without UI access (useful for support and onboarding).

  • Bulk attendance entry without a course — the new interface lets you log class hours without assigning a specific course, useful for shared lectures and conferences. UNIQUE+NULL pattern, cross-compatible MariaDB/MySQL via a generated column.

  • Group portal for founders — cross-tenant aggregation of financial, academic, and operational metrics, with per-school health scoring, automated alerts (plan mismatch, inactive tenant, SSL expiry, enrollment drop), and a transverse subscription banner.

  • Group member onboarding — new DGA role, email-based invite flow with auto-generated password and a 24-hour signed URL, forced password change on first login, username fallback (auto-generated firstname.lastname with collision-handling).

  • Cross-tenant notifications — invoice system, faculty notifications, founder notifications, dedicated table with per-user preferences.

  • Block enrollments on full classes in the enrollment form: live display of available seats with colored thresholds (green above 30%, orange 10-30%, dark orange below 10%, red full), automatic disabling of the submit button, only validated enrollments for the current year are counted.

  • Conversational context for the Claude chatbot — the bot now remembers the last tool result (students or classes) so it can answer follow-up questions like "and the next class over?" without you having to re-specify the class.

  • Richer chatbot filters — student lookup by workflow step and status, class lookup by system (BTS / LMD) and seat availability.

  • Signature 2026 pricing scheme — three tiers (Essentiel, PRO, ELITE) aligned with higher education, Partner formula at 15,000 XOF per year, 3-month trial, grandfathering of existing subscriptions for 24/18/12 months.

Improved

  • Full overhaul of the accounting module — six premium pages redesigned: bursar dashboard, payments, category tracking, fee configuration, dashboard, reminders. Two-row planning-header pattern with KPIs embedded in the hero.
  • Redesigned Attendance tab on the student profile — single unified dark hero gathering the synthesis, white sub-cards for granular detail, gating of past years to prevent visual regressions.
  • Redesigned class schedule page — day/week/month views with colored session pills, per-session kebab menu, legend, dynamic per-school PDF settings, one-click week duplication.
  • Premium overhaul of enrollments — live-updating KPIs, bulk actions (cancellation, export), modal iiConfirm confirmations, uniform toasts, shared styles via common.js and ii-* CSS namespace.
  • Redesigned classes page — restructured layout, semantic badges, modernized table, AJAX filters.
  • Redesigned admin modals — unified on the KLASSCI monochrome blue palette, removed non-semantic decorative colors.
  • Hardened money-related actionsthrottle:60,1 and 10,1 on payment routes, every native window.confirm() replaced with custom iiConfirm dialogs.

Fixed

  • N+1 fix in the chatbot's class lookup — went from 300 queries per call down to 2, using a filtered withCount and a single current-year lookup.
  • Double selectClasse() definition in the class picker: the second hoisted definition silently overwrote the first without calling toggleSubmitButton(), so the button was never disabled by the "class full" modal. The two functions are merged.
  • "Notes" button on the assessments page now redirects to quick entry; bulk delete fixed.
  • Removed a composer install at deploy time that froze some tenants on shared environments.

Security

  • IDOR audit phase 1 — three Policies created, authorize() calls added to sensitive routes, viewFinancials masked for unauthorized roles.
  • Cleanup of stack traces exposed in production on ten identified routes.
  • Migration of 230+ hasRole() calls to the Spatie permission system (@can, @cannot), removed hardcoded role checks in controllers.

March 2026

Added

  • Full LMD system alongside BTS — UE, ECUE, and credits per semester, many-to-many ECUE↔UE pivot with contextual coefficients, student parcours with progressive credit validation, LMD report cards with weighted averages, configurable calculation formulas (AQ, NAQ, APC).
  • Tronc commun module — common-core enrollment flow then specialisation, original-class report card, shared courses, strict scheduling, three configuration parameters (report card, courses, schedule).
  • Conduct grade — automatic calculation on a 16/20 scale (one point off per 4 hours of absence), Reprimand and Warning mentions, eight tiers of appreciation, per-school configuration, factors in absences per course.
  • Cashier role — dedicated workspace with cash dashboard, multi-step pre-enrollment flow with category-by-category fee entry, partial payment, automatic credentials via UserService, administrative completion banner with safeguards.
  • Multi-tenant LMS API — public school discovery endpoints (no permanent token required), dedicated authentication with lms-discovery rate limiting, internal documentation accessible via GET /api/lms/documentation.
  • Student documents module — upload, list, download, extension badge, role-based read permissions.
  • BTS/LMD differentiation on the student profile — semester tabs, residual fees by category, lifetime CECT, unified photo_url accessor.
  • Interactive fee configuration — artisan command to manage fee subscriptions interactively, no-duplicate generation, archive of inactive entries.
  • ECUE module — two-tab modal with credit validation, premium Select2 tabs, fully-AJAX UE page (zero reload), UE↔Parcours linking across multiple semesters.

Improved

  • Coordinator dashboard overhaul — premium design with KPIs and AJAX navigation between tabs, no reloads.
  • Class schedule page overhaul — premium design, KPIs, ECharts scrollable charts, HH:MM time format everywhere.
  • Results pages overhaul (index, classes, class) — annual / S1 / S2 views, attendance integration, fix for inconsistent grade filtering.
  • Notes page overhaul — availability calendar with inline editing, real-time search in selection modals, standalone modal replacing the legacy AJAX embed.
  • Pre-enrollment page overhaul — premium analytics cards, centered steps with continuous lines between circles, student lookup for the re-enrollment flow.
  • Annual planning page overhaul — Events tab merged in, balanced calendar (900 px, 48 px cells), KPIs corrected on every tab, save modal without reload.
  • Coordinator and Class workload sections overhaul — premium design, sign-in modal aligned with the attendance-codes page.
  • Financial standing overhaul — preview as a dark hero in the student-profile style, PDF in formal-document style, action buttons on the Finances tab, SVG fallback for missing avatars.
  • Staff page overhaul — premium design, role masking based on permissions, cashier tab added to the unified view.
  • Performance tweaks — extracted fee-configuration constants, removed hardcoded email, fixed N+1 in LMD via proper eager loading.

Fixed

  • LMD report card averages stuck at zero — period-format inconsistency in the query, added getPeriodeVariants().
  • Enrollment workflow fix — a validated payment is now required before the enrollment itself can be validated, alert on the student page when the enrollment is pending, automatic redirect after validation.
  • superAdmin dashboard fix — white background, softer warning text, AJAX refresh fixed for class/faculty loads.
  • Parent modal rendering fix — eliminated hover flash, removed transitions, custom modal replacing the Bootstrap one for parent search.
  • Select2 in modals fix — z-index 1075, dropdown forced downward, dropdownParent on body to escape overflow-y:auto.
  • "Edit availability" button fix in the faculty grid.

February 2026

Added

  • Enriched report-card system — semester weighting for the annual average, persistence of results on generation, report-card style picker, "Abidjan style" toggle.
  • Per-student report card — coefficient modal self-contained on the student profile, no round-trip to a separate page.
  • Filières & Levels overhaul — selectable pills, per-filière handling of levels in the linkages.
  • Faculty sign-in module — "Coming up" badges, bulk editing, report modal, tracking of completed hours, availability polling.
  • Administrative PDF documents — full overhaul of the previews, configurable color settings, generation via Browserless for reliability, stronger watermarks, themed header applied to certificates.
  • Blank grade-sheet PDF generation for manual entry.
  • Quick faculty creation from the course-session modal.
  • Real-time search in selection modals for students, classes, and courses.

Improved

  • Availability calendar overhaul — inline editing right inside add-seance.
  • Fullscreen notes modal overhaul + fix for the 500 error on faculty quick-create.
  • Faculty attendance stats overhaul + faculty report page overhaul.
  • "Hours per course" tracking section overhaul on the class page.
  • Class filters in the planner + standardized HH:MM time format.
  • Student management modals on the class page (add, remove, transfer).

Fixed

  • bulk-update-status fix for faculty attendance — uses url() instead of route() to avoid crashes when the route isn't cached on the server.
  • Matricule regeneration fix — changes are now applied during student edits.
  • Auto-generated matricule fix — pulls info from the most recent enrollment.

January 2026

Added

  • Premium overhaul of the landing page — editorial design inspired by zed.dev, IBM Plex Serif/Sans/Mono, KLASSCI blue on a beige background, dot grid + grain texture, premium animations (gradient text shimmer, morphing blobs, clip-path text reveal, button pulse, pillar stagger), 9 real screenshots in the hero marquee, feature modals, full dark mode, mobile-responsive.
  • Per-role permission manager — dedicated UI, permissions grouped by module, automatic group expansion, role grouping in the UI.
  • Full Notes module overhaul — modal-based workflow, dedicated API endpoints.
  • Faculty attendance module — per-faculty drilldown, individual stats, PDF button in the bulk banner, accordion for bulk editing, time pickers in the embed, conflict confirmations during quick generation.
  • Bulk schedule editing for sessions, with conflict handling for faculty.
  • Auto-generated matricules for new students.
  • Coefficients per filière and level — strict application instead of a global fallback.
  • Schedule helper tip — step-by-step guide modal.
  • plan-and-confirm workflow — validation step before code for significant changes.

Improved

  • Average-coefficient unblock — improved UX for tronc commun cases.
  • ESBTP-ABIDJAN cleanup — MASTER/L3 matricules adjusted, full-class handling.
  • Bulk faculty availability management — dedicated UI, mass apply.

Last updated: April 25, 2026

On this page