Logo de l'application Connect'Events

    Téléchargez dès maintenant notre application et profitez d’un contenu exclusif où que vous soyez.

    Télécharger sur le Play StoreTélécharger sur l'App Store

    Changelog

    Toutes les évolutions notables de Connect'Events. Format basé sur Conventional Commits.

    1.19.0 (2026-10-30)

    ✨ Fonctionnalités

    • apply a printing at sale change from the next cash register session (1b61614), closes #336
    • decide in the print-at-sale module how a register that does not print behaves (ee5b4ab), closes #340
    • download the visitor credit note from the ticketing invoices tab (d0beb40), closes #317
    • drop the « Commande validée » toast after a counter sale (7c914f2), closes #337
    • drop the order reference from the after-sale windows (ebaf221), closes #337
    • expose printsSales on the cash register holder sessions (49f5a61), closes #339
    • let a web register that does not print sell without the print station (c7eaca2), closes #340
    • let organisers choose per cash register whether it prints at sale (59aa568), closes #339
    • let the cash register holder leave an optional question blank on the tablet (757f389), closes #334
    • let the cash register holder leave an optional question blank on the web POS (360885f), closes #333
    • let the organiser make a cash register form question optional (e44ec0a), closes #332
    • pre-select the only available cash register at opening (ef872d0), closes #337
    • send the invoice email with the visitor credit note link (GuestInvoiceEmailV4) (2368cf5), closes #318
    • send the ticketing invoice by email from the transaction history (d2f6b75), closes #319
    • show the mobile coin and note visuals in the web POS cash count (eae21af), closes #322
    • store the printing at sale setting on cash registers (6aef568), closes #339

    🐛 Corrections

    • bound a mobile print job's printer search to 5 s (f281046), closes #301
    • bring the Formulaires back arrow to the counters when opened from them (c573148), closes #331
    • confirm the guest buyer email on web-app and embed checkout (aed3982)
    • count only this visit's choices on the ticketing group badge (ccd2f7e), closes #325
    • embed: make the exported iframe snippet valid HTML5 (bc42ba5)
    • fit the ticketing invoices tab on desktop and mobile (458ff05), closes #363
    • hide entries out of their sale period from the cash register (ac320a9), closes #309
    • keep accepting free mobile orders from nameless accounts (6bd7b8d)
    • keep the cashier signed in on Escape in the opening dialog (12f3764), closes #336
    • keep the entry name on POS basket lines (#355) (70af380)
    • keep the receipt duplicate by email on a register that does not print (6876c18), closes #336
    • keep the stacked toasts within the toast area (9408727), closes #327
    • keep the stored access lists until the download answers (7d6712f), closes #294
    • last-minute sales refused at scan (#286) (a78a828), closes #283 #282 #284 #285 #281 #281
    • let the POS remove a refused line on the payment screen (#356) (9c22ae1)
    • let the wrapped profile history tabs bar grow on mobile (d65d38a), closes #363
    • load the POS title picture once in CORS mode before laying out the card (65bedd8)
    • make the scanner slow mode temporary (d86b235), closes #285
    • match a full name in either order in the ticketing invoices search (ffc5c85), closes #364
    • mention only the email in receipt texts when print is not offered (8f754bf), closes #336
    • never overlap two calls on a mobile printer (d8e38c7), closes #301
    • never send a ticketing invoice that has no view token yet (f7bf6bb), closes #316
    • offer Réessayer in the ticket printing modal, receipt question after (f76f181), closes #305
    • offline sync removes only the scans it sent (731ac76), closes #293
    • preload the ticket personalization picture before rasterizing web POS titles (5 s max) (65fd2b4)
    • print each POS title and the receipt on a page of its exact height (ed53142), closes #338
    • print mobile tickets through a one-job-at-a-time printer port (f7dc7f0), closes #302
    • print the buyer name on embed access titles (cf33114)
    • print the mobile receipt through the printer port (081210e), closes #304
    • put the cash register Obligatoire switch on its own line (81c35d5), closes #332
    • re-signal ticket image readiness and block overlapping POS prints (46a84b8)
    • read the secure store cookie only when the auth client has none (8ff30e5), closes #295
    • recognise a renvoi on the unit ticket and badge scan (5f2d925), closes #282
    • refuse a cash register sale holding an entry no longer sellable (70c10ac), closes #310
    • release the navigation blocker however the unsaved-changes modal closes (aef7cb5), closes #330
    • remove only the targeted POS line when a badge and a ticket share an id (mobile) (86376fb)
    • say a ticket is not on sale yet when its counter sale has not started (ed45a96)
    • send the offline queue every 15 s, on foreground and at the end of slow mode (0aeb43b), closes #296
    • share the search helper across the ticketing invoices search tests (aa09748), closes #364
    • ship pnpm patches to the Docker and cron deploy builds (1e2f42b)
    • show invoice sends as the latest email in the orders journal (83f9160), closes #362
    • show the Par lieu d'animation section titles on the web ticketing (b115486), closes #326
    • show the printer connection modal only while a check runs (d080eec), closes #301
    • stack toasts and expand them on hover or focus (04dbade), closes #327
    • stop Epson printer disconnect from looping on ERR_ILLEGAL (c6d2863), closes #303
    • style the Modifier les formulaires link as a button (e69be07), closes #331
    • sync the offline queues before an access controller signs out (c6ecc2e), closes #297
    • time out offline sync bulk sends after 10 s (30ba13a), closes #290
    • title the entry and animation tickets of Par lieu d'animation (74db502), closes #326
    • treat a scan response without verdict as no answer (8d614cc), closes #281
    • wait for the server on titles missing from the local list (59ae29c), closes #284
    • wait for the ticket personalization image before capturing cash register titles on mobile (28e98f1)

    ♻️ Refactoring

    • align offline queue helpers with review conventions (da45129), closes #290
    • apply the review fixes of the ticketing layout feedback (9d68657), closes #324
    • decide the POS sale period once for both refusal messages (42a61b1)
    • default the optional cash register questions in one place only (5b7ff9e), closes #330
    • extract access title validation from AccessProvider (d26299c), closes #283
    • name the cash register form answers test after its source (eec19d0), closes #330
    • pick the loaded title picture outside the JSX (2ca795c)
    • render the cash count columns in a single loop (0cf0b4a)
    • reuse the cash registers fallback in the opening dialog (47195c8), closes #336
    • round a printed page height in one place (337549e), closes #336
    • share the accepted Avoir visiteur selection (5e073c6), closes #316
    • share the blank answer check between the event form answer schemas (1c338a0), closes #330
    • share the cash register form description between the web and tablet counters (3596818), closes #330
    • share the event form question label helper through @ac-expo/utils (85b78f2), closes #330
    • share the mobile print helpers and name the printer source (bdf905a), closes #301
    • share the POS basket total between web and mobile (4369012)
    • share the sale period and validity rule with the cash register (8f0c14b), closes #309 #310
    • share the vigil scan resend check (e60a1c2), closes #281
    • tidy the ticketing invoices actions in the back office (b6ae5a5), closes #316

    1.18.0 (2026-10-20)

    ✨ Fonctionnalités

    • backend: send Sentry events from prod only with DSN from env (366aae6)
    • backoffice: send Sentry events from prod builds only (ff7eec5)
    • mobile: report Sentry errors from production builds only (abeb3d3)
    • mobile: resend tickets by email from the ticket and badge detail (e840e03), closes #247
    • mobile: resend tickets by email from the ticket and badge detail (5c9d28b), closes #247
    • mobile: route free orders to the order confirmation screen (2bdc68f), closes #249
    • mobile: route free orders to the order confirmation screen (b34cab0), closes #249
    • mobile: show a payment pending state when the IPN outlasts the polling (4101188), closes #248
    • mobile: show a payment pending state when the IPN outlasts the polling (7ea5e75), closes #248
    • mobile: show one order confirmation screen after a paid order (5c8fa96), closes #246
    • mobile: show one order confirmation screen after a paid order (03770f5), closes #246
    • ticketing: afficher le statut du dernier mail dans le journal de commande organisateur (#115) (a14dae7)
    • ticketing: choisir titres d'accès et/ou facture lors d'un renvoi vers une autre adresse (#113) (d0d58f4)
    • ticketing: masquer la case facture du renvoi pour une commande d'invitation (0ada54e)
    • ticketing: ouvrir les billets et badges d'une commande depuis le journal organisateur (#114) (e36237b)
    • ticketing: renvoyer les titres d'accès d'une commande vers une autre adresse (#112) (060524a)
    • upload prod source maps to Sentry (302c1f7)

    🐛 Corrections

    • answer the offline badge sync per item and ignore resends (1276a4c), closes #182
    • answer the offline ticket sync per item and ignore resends (471f345), closes #179
    • aws: make the AWS access key optional in the backend and lambdas (19f88b9)
    • backend: make the payment return public for embedded orders (a83bd72)
    • backend: release titles on a failed payment return and send the numeric country to Up2Pay (1d04544)
    • backoffice: afficher l'erreur de validation du dialog de renvoi (b10bc8a)
    • backoffice: hide the order log PDF button when every title of that type is refunded (563a4be)
    • backoffice: keep the ticketing invoices tab when paging or filtering (02d4b3d)
    • ci: add the prod mobile build & submit workflow to main (267deb6)
    • ci: pin galacrypt and remove galadrim-feedback widget (f18a81e)
    • embed: fit the Up2Pay form on mobile and make the embed snippet responsive (45ee4d5)
    • embed: fit the Up2Pay form on mobile and make the embed snippet responsive (06c0b49)
    • embed: offer a link to pay on the Connect'Events event page (746e8e5), closes #237
    • embed: offer a link to pay on the Connect'Events event page (85ad680), closes #237
    • env: use the dedicated OpenAI test keys on staging and preprod (66d5157)
    • exempt the scanner routes from the IP throttler and raise the JSON body limit to 1mb (a031800)
    • invitations: read the event end dates through badges for a badges-only invitation (77f9f66), closes #83
    • invitations: read the event end dates through badges for a badges-only invitation (e9f274f), closes #83
    • invitations: sign invitation emails with the organiser name when no business name is set (7938519), closes #233
    • invitations: sign invitation emails with the organiser name when no business name is set (f8d2acd), closes #233
    • judge ticket validity dates at the offline scan time (d90d782), closes #181
    • mobile: address the order confirmation review findings (e344c7b), closes #245
    • mobile: address the order confirmation review findings (a7b56ba), closes #245
    • mobile: drop Android media permissions for Google Play photo/video policy (f09c354)
    • mobile: drop Android media permissions for Google Play photo/video policy (302038b)
    • mobile: refresh the controller affectation on scan focus and app foreground (7bd5264)
    • mobile: refresh the controller affectation on scan focus and app foreground (preprod) (7350d30), closes #236
    • pdf: lighten access title PDFs behind the access link (preprod) (20885f6), closes #156
    • pin next to the version the web-app image is built with (4790ef5)
    • pin next to the version the web-app image is built with (preprod) (325dfce), closes #225
    • restore the rotated OpenAI keys lost in the preprod merge (8c7b5bc)
    • scraping: bring the JDS scraper fixes and per-env lambda CI to prod (b57cf35), closes #109 #138
    • scraping: let the deploy guard pass retained layer versions (893403f)
    • scraping: let the deploy guard pass retained layer versions (3e35a04)
    • ticketing: rattacher la commande à l'événement par ses billets et badges, pas par la caisse (4e7155a)
    • ui-components: show the error message under a mandatory single choice question (b5b82ef)
    • vigil: reset single-entry and per-day entry limits each day (d173d44)
    • web-app: rename the professional entry link to Espace pro (980849c)
    • web-app: report Sentry errors from prod with the new DSN (f89ad72)

    ⚡ Performance

    • select only the fields the scanner reads in the assigned tickets preload (7e51a54)

    ♻️ Refactoring

    • backoffice: apply review feedback on the order log PDF button and glossary (b6c4038)
    • clarify the offline sync verdict after review (b864bb3), closes #179
    • share the sync inspector mapping and clarify names after review (c5d15df)
    • vigil: count mobile entry days in Paris time and reuse the Paris time zone constant (ca87e88)

    1.17.1 (2026-10-08)

    🐛 Corrections

    • invitations: render tickets given to an exhibitor structure nameless (81982a4), closes #226

    1.17.0 (2026-10-07)

    ✨ Fonctionnalités

    • add the cash register prevalidation migration (562f104)
    • add the Catégories de billets and the Personnalisée ticketing layout (f8cbaa5), closes #219
    • add the Par jour ticketing layout, from the back-office setting to the web accordions (e096342), closes #216
    • add the Par lieu d'animation ticketing layout (3d93635), closes #218
    • add the Par point d'entrée ticketing layout (85928f7), closes #217
    • add type_de_scan to the entries export and include badges (de7fe21), closes #210
    • an unconfirmed pre-validation no longer blocks a credit note (0466a37), closes #211
    • confirm the pre-validation at the first controller scan (0a1940a), closes #209
    • count entries with the shared counted-entry filter (8072dfe), closes #212
    • group the event page ticketing preview card by the ticketing layout (02a03b4), closes #221
    • groups: export a group from its edit page (2ad13a9)
    • groups: export a single group from the groups list (33f2c90)
    • groups: export one row per group member (34b5669), closes #196
    • mail the organiser when AC Expo accepts an Avoir visiteur (3ddb21e), closes #204
    • pre-validate the sales of a cash register (ad10015), closes #208
    • rename, delete and reorder the Catégories de billets (1251767), closes #220
    • send RefundNotificationV3 with event, references and refund sentence (77f969d), closes #203
    • show the basket quantity on the event page ticketing card groups (16f8a1d), closes #214
    • show the ticketing layout groups as collapsible sections on the mobile ticketing screen (a995d4e), closes #222
    • track credit note refund mails and widen the credit note read at send time (7de41a5), closes #202

    🐛 Corrections

    • backoffice: show the server message when an excel export fails (8a7b7df)
    • fill the invoice table header in light grey after the original invoice mention (708ec83), closes #201
    • filter entry periods on the sale date (6b043e3), closes #207
    • groups: use the group import header labels in the export (54b7bec)
    • isolate each refund mail and take the organiser mail event from tickets (1e4fe6d), closes #200
    • keep Group tickets out of the Catégories de billets (b092351), closes #214
    • load the entry points of the event activities' ticket types (3707572), closes #217

    ♻️ Refactoring

    • backoffice: move the excel download hook to the shared hooks (fbb6cc3)
    • convert the category table prices with centsToPrice (23797a0), closes #214
    • drop the « Bientôt » gating of the ticketing layouts (21cd21e), closes #214
    • groups: move the export select to the repository (3658dc5), closes #196
    • groups: name the edit-page export disabled state (d6bb375)
    • look the Catégorie de billets up in its repository (aac16d4), closes #214
    • move the pre-validation write to a cash register repository (aca4ce8), closes #207
    • record vigil entries through one repository function (bcf9466), closes #207
    • reuse the TicketingTarifKind of @ac-expo/utils in the back-office (678fc7d), closes #214
    • serve the public ticketing prices from a shared sections source (c257bae), closes #215
    • share the « Billets de votre groupe » title from @ac-expo/utils (b734fd1), closes #214
    • share the back-office error toast of the ticketing layout pages (dd5046d), closes #214
    • share the prestation event mapping and drop the capRefundAmount wrapper (abdec78), closes #200
    • share the public event cache invalidation (941c212), closes #214
    • share the ticketing sections of the purchase dialog and the embed (3cd5447), closes #214

    1.16.0 (2026-10-07)

    ✨ Fonctionnalités

    • add the cash register prevalidation migration (562f104)
    • add the Catégories de billets and the Personnalisée ticketing layout (f8cbaa5), closes #219
    • add the Par jour ticketing layout, from the back-office setting to the web accordions (e096342), closes #216
    • add the Par lieu d'animation ticketing layout (3d93635), closes #218
    • add the Par point d'entrée ticketing layout (85928f7), closes #217
    • add type_de_scan to the entries export and include badges (de7fe21), closes #210
    • an unconfirmed pre-validation no longer blocks a credit note (0466a37), closes #211
    • confirm the pre-validation at the first controller scan (0a1940a), closes #209
    • count entries with the shared counted-entry filter (8072dfe), closes #212
    • group the event page ticketing preview card by the ticketing layout (02a03b4), closes #221
    • groups: export a group from its edit page (2ad13a9)
    • groups: export a single group from the groups list (33f2c90)
    • groups: export one row per group member (34b5669), closes #196
    • mail the organiser when AC Expo accepts an Avoir visiteur (3ddb21e), closes #204
    • pre-validate the sales of a cash register (ad10015), closes #208
    • rename, delete and reorder the Catégories de billets (1251767), closes #220
    • send RefundNotificationV3 with event, references and refund sentence (77f969d), closes #203
    • show the basket quantity on the event page ticketing card groups (16f8a1d), closes #214
    • show the ticketing layout groups as collapsible sections on the mobile ticketing screen (a995d4e), closes #222
    • track credit note refund mails and widen the credit note read at send time (7de41a5), closes #202

    🐛 Corrections

    • backoffice: show the server message when an excel export fails (8a7b7df)
    • fill the invoice table header in light grey after the original invoice mention (708ec83), closes #201
    • filter entry periods on the sale date (6b043e3), closes #207
    • groups: use the group import header labels in the export (54b7bec)
    • isolate each refund mail and take the organiser mail event from tickets (1e4fe6d), closes #200
    • keep Group tickets out of the Catégories de billets (b092351), closes #214
    • load the entry points of the event activities' ticket types (3707572), closes #217

    ♻️ Refactoring

    • backoffice: move the excel download hook to the shared hooks (fbb6cc3)
    • convert the category table prices with centsToPrice (23797a0), closes #214
    • drop the « Bientôt » gating of the ticketing layouts (21cd21e), closes #214
    • groups: move the export select to the repository (3658dc5), closes #196
    • groups: name the edit-page export disabled state (d6bb375)
    • look the Catégorie de billets up in its repository (aac16d4), closes #214
    • move the pre-validation write to a cash register repository (aca4ce8), closes #207
    • record vigil entries through one repository function (bcf9466), closes #207
    • reuse the TicketingTarifKind of @ac-expo/utils in the back-office (678fc7d), closes #214
    • serve the public ticketing prices from a shared sections source (c257bae), closes #215
    • share the « Billets de votre groupe » title from @ac-expo/utils (b734fd1), closes #214
    • share the back-office error toast of the ticketing layout pages (dd5046d), closes #214
    • share the prestation event mapping and drop the capRefundAmount wrapper (abdec78), closes #200
    • share the public event cache invalidation (941c212), closes #214
    • share the ticketing sections of the purchase dialog and the embed (3cd5447), closes #214

    1.15.0 (2026-10-07)

    ✨ Fonctionnalités

    • add the cash register prevalidation migration (562f104)
    • add the Catégories de billets and the Personnalisée ticketing layout (f8cbaa5), closes #219
    • add the Par jour ticketing layout, from the back-office setting to the web accordions (e096342), closes #216
    • add the Par lieu d'animation ticketing layout (3d93635), closes #218
    • add the Par point d'entrée ticketing layout (85928f7), closes #217
    • add type_de_scan to the entries export and include badges (de7fe21), closes #210
    • an unconfirmed pre-validation no longer blocks a credit note (0466a37), closes #211
    • confirm the pre-validation at the first controller scan (0a1940a), closes #209
    • count entries with the shared counted-entry filter (8072dfe), closes #212
    • group the event page ticketing preview card by the ticketing layout (02a03b4), closes #221
    • groups: export a group from its edit page (2ad13a9)
    • groups: export a single group from the groups list (33f2c90)
    • groups: export one row per group member (34b5669), closes #196
    • mail the organiser when AC Expo accepts an Avoir visiteur (3ddb21e), closes #204
    • pre-validate the sales of a cash register (ad10015), closes #208
    • rename, delete and reorder the Catégories de billets (1251767), closes #220
    • send RefundNotificationV3 with event, references and refund sentence (77f969d), closes #203
    • show the basket quantity on the event page ticketing card groups (16f8a1d), closes #214
    • show the ticketing layout groups as collapsible sections on the mobile ticketing screen (a995d4e), closes #222
    • track credit note refund mails and widen the credit note read at send time (7de41a5), closes #202

    🐛 Corrections

    • backoffice: show the server message when an excel export fails (8a7b7df)
    • fill the invoice table header in light grey after the original invoice mention (708ec83), closes #201
    • filter entry periods on the sale date (6b043e3), closes #207
    • groups: use the group import header labels in the export (54b7bec)
    • isolate each refund mail and take the organiser mail event from tickets (1e4fe6d), closes #200
    • keep Group tickets out of the Catégories de billets (b092351), closes #214
    • load the entry points of the event activities' ticket types (3707572), closes #217

    ♻️ Refactoring

    • backoffice: move the excel download hook to the shared hooks (fbb6cc3)
    • convert the category table prices with centsToPrice (23797a0), closes #214
    • drop the « Bientôt » gating of the ticketing layouts (21cd21e), closes #214
    • groups: move the export select to the repository (3658dc5), closes #196
    • groups: name the edit-page export disabled state (d6bb375)
    • look the Catégorie de billets up in its repository (aac16d4), closes #214
    • move the pre-validation write to a cash register repository (aca4ce8), closes #207
    • record vigil entries through one repository function (bcf9466), closes #207
    • reuse the TicketingTarifKind of @ac-expo/utils in the back-office (678fc7d), closes #214
    • serve the public ticketing prices from a shared sections source (c257bae), closes #215
    • share the « Billets de votre groupe » title from @ac-expo/utils (b734fd1), closes #214
    • share the back-office error toast of the ticketing layout pages (dd5046d), closes #214
    • share the prestation event mapping and drop the capRefundAmount wrapper (abdec78), closes #200
    • share the public event cache invalidation (941c212), closes #214
    • share the ticketing sections of the purchase dialog and the embed (3cd5447), closes #214

    1.14.0 (2026-10-05)

    ✨ Fonctionnalités

    • exports: exhibitors, groups and guest answers as xlsx (a01e70a), closes #160
    • exports: numeric euro amounts and line quantity in the accounting exports (f4402af), closes #164
    • exports: order log as xlsx with explicit columns (890e330), closes #162
    • exports: organiser visitors and exhibitor clients as xlsx (3275e30), closes #161
    • exports: stable header rows and readable dates on the other xlsx exports (ac1c300), closes #163
    • invitations: invitations count and status per visitor in the table (7b01066), closes #193
    • pdf: embed PDF-sized Connect'Events logos in title PDFs (50f0a8f), closes #151
    • pdf: reduce external section images behind an SSRF guard (add6dab), closes #154
    • pdf: reduce media bucket section images on the server (4e0d5f0), closes #153
    • tickets: delivery mode for tickets sent to an exhibitor structure (ee9a308), closes #192
    • tickets: export event entries as xlsx, organiser only (f8b1ae6), closes #159

    🐛 Corrections

    • excel: keep blank strings and booleans out of currency cells (6cc6a00), closes #158
    • exports: keep a malformed event date as is instead of failing the export (678d36b), closes #163
    • pdf: count DNS resolution in the external image timeout (b43b619), closes #154
    • pdf: keep the removed-images warning visible (846f26d), closes #153

    ⚡ Performance

    • pdf: embed each distinct PDF template once per title PDF (bf27889), closes #152

    ♻️ Refactoring

    • delivery-mode: rename enum to DeliveryMode and share the resolution rule (9775641), closes #191
    • excel: explicit headers and currency columns in the Excel helpers (b721f99), closes #158
    • exports: explicit BOM code point and formula escaping test in the csv export (56fd313)
    • exports: remove the csv export path and add a BOM to the commercial accounts template (8156e7e)
    • invitations: address review on the visitor invitations table (44fbfe3), closes #193
    • tickets: reuse the entity name in the issuing success toast (141e9a9)

    1.13.0 (2026-10-02)

    ✨ Fonctionnalités

    • infra: relay EAS build results to Discord (d2df447)
    • mobile: limit the env switcher to development builds (172bcc4)
    • scraping: cap events per run outside production (6273bac)

    🐛 Corrections

    • groups: always refetch the SSR event with the visitor's session (58630a5)
    • infra: let SAM add the function URL invoke permission (ac70d5f)
    • mobile: set the app variant for eas-cli on the staging runner (98c2d72)
    • mobile: stop refreshing the iOS ad hoc profile on CI builds (585aca9)
    • scraping: echouer si une categorie JDS manque et relever la borne de pages (7adade7)
    • scraping: inclure la page 1 de chaque categorie JDS (9dfaa24)
    • scraping: reparer les selecteurs JDS et ajouter un dry-run local (269e3c7)

    1.12.0 (2026-09-29)

    ✨ Fonctionnalités

    • backoffice: badge Remboursée / Partiellement remboursée des factures billetterie (52668ad), closes #127
    • backoffice: filtres événement, dates et recherche des factures billetterie (73e00d1), closes #126
    • backoffice: onglet Factures billetterie dans l'historique organisateur (57557a9), closes #125
    • exhibitor-form: favori de l'invité appliqué après connexion ou inscription (412cc86), closes #135
    • exhibitor-form: le stand QR code ouvre la page web (e5af669), closes #133
    • exhibitor-form: onglet « Formulaire client » pour composer les exhibitor questions (56d7651), closes #134
    • exhibitor-form: page web du stand QR code avec les champs fixes (e2c2c18), closes #132
    • exhibitor-form: sous-onglet « Réponses » et export Excel du formulaire client (3e69c39), closes #136

    🐛 Corrections

    • backend: la liste des factures billetterie reste paginée sans paramètre de pagination (5748143), closes #125
    • backoffice: onglets de l'historique de transactions accessibles sur mobile (e621260), closes #124
    • basket: cart carry du panier de la guest session à la connexion (00fb128), closes #145
    • basket: le guest cart remplace le panier du compte à la connexion (3de4c12), closes #144
    • basket: reprise de commande après une création de compte (0c5fc29), closes #146
    • basket: toast du cart carry sans message technique d'axios (b134d5c)
    • event-pictures: flèches, points et légende fixés au cadre du carrousel (1066aa1), closes #140
    • event-pictures: le point actif du carrousel suit l'image affichée (f4e4ad3), closes #141
    • exhibitor-form: favori en attente oublié quand l'invité ferme la connexion (27e520b), closes #135
    • exhibitor-form: fiche affichée quand l'exposant ne participe pas à l'événement (ac61e5b), closes #132
    • exhibitor-form: liste des réponses toujours paginée, dates à l'heure de Paris (597eea9), closes #136
    • exhibitor-form: options d'une question à choix vérifiées à l'enregistrement (b461773), closes #134
    • mobile: permettre le scroll des modales quand le clavier est ouvert (3cee61a)
    • web-app: le build ne casse plus sur le worker pdf.js de l'impression A4 (25ae891)

    ♻️ Refactoring

    • backend: statut de remboursement typé depuis la sélection Prisma (1982601), closes #127
    • backoffice: corrections de revue des filtres factures billetterie (0e5fe1a), closes #126
    • basket: reprise de commande sur les helpers de sso-callback (5210821)
    • basket: vocabulaire du glossaire dans le cart carry de la guest session (ffdde2e)
    • ui-components: libellé identique pour un thème vide, types à part (91770f4), closes #131
    • ui-components: rendu des questions générique sur le formulaire hôte (5dcf2a1), closes #131

    1.11.0 (2026-09-28)

    ✨ Fonctionnalités

    • badges: mail dédié aux badges exposant, sans pièce jointe (f4b5e7f)
    • mobile: ecran de bascule d'environnement et footer de version (37c0820)
    • mobile: ouvrir la bascule d'environnement depuis l'ecran de connexion (38de95b)
    • mobile: source unique de verite des environnements (env/variants) (cf93342)
    • web-app: « Se connecter » unique et lien pro vers le back-office (88a947b)
    • web-app: impression A4 des billets et badges au guichet (b78beb0)

    🐛 Corrections

    • backend: suppression des comptes guichetier en soft delete (20a93e3)
    • web-app: la connexion n'échoue plus si /users/me échoue après l'authentification (e482d1e)

    1.10.0 (2026-09-23)

    ✨ Fonctionnalités

    • access title name in the scan verdict, kept until tap when the organiser option is on (07cf2cd)
    • optimistic toggle for the show-ticket-name-on-scan switch (afa3fe8)
    • organiser option to show the ticket name on scan (489bfc6), closes #38 #43
    • show the ticket type name on the vigil search result card (d87efbd)
    • three-colour scan verdict with machine-readable vigil error codes (adbefb4), closes #41

    🐛 Corrections

    • readable error toast when the scan option save fails without a server message (236ce3c)

    ♻️ Refactoring

    • exhaustive scan severity map, typed error codes and badge gate code (e3366f1)

    1.9.1 (2026-09-23)

    🐛 Corrections

    • caisse: image du billet imprime lue depuis le bucket S3 (dd6992d)

    1.9.0 (2026-09-23)

    ✨ Fonctionnalités

    • caisse: apport, saisie de caisse et changement d'operateur (89b5dfe)
    • caisse: connexion guichetier et route de caisse plein ecran (afbbc25), closes #95
    • caisse: ecran de paiement, formulaire facultatif et enregistrement de la vente (4ba905c)
    • caisse: fermeture de caisse et retour au site public (bfcc68f)
    • caisse: grille de vente, pave numerique et panier (1488f47), closes #97
    • caisse: historique des commandes et reimpressions (d3e3810)
    • caisse: impression des billets et badges apres la vente (4e6f864)
    • caisse: impression du ticket de caisse apres la vente (a5ce604)
    • caisse: ouverture de caisse avec selection de caisse et fond de caisse (31d4909), closes #96
    • caisse: port imprimante et validation du poste (1617888)

    🐛 Corrections

    • caisse: ecran de vente retenu tant que le poste n'est pas valide (154a635)

    ⚡ Performance

    • ci: cache docker registry et layers lockfile-first sur les pipelines staging (576011b)

    ♻️ Refactoring

    • caisse: connexion par identifiant partagee et controle du guichetier (23c4ef9)
    • caisse: requetes partagees, classes Tailwind et commentaires allégés (8dd3dd2)
    • e2e: lecture des parametres de route du harness POS via un helper (4d5073b)

    1.8.0 (2026-09-21)

    ✨ Fonctionnalités

    • groups: accroche tarif groupe sur la fiche evenement (a00d1ff)

    🐛 Corrections

    • groups: un compte a role membre d'un groupe de visiteurs voit ses tarifs (7794d76)
    • utils: reference the DOM lib in pdf-template-images (d4239c7)

    1.7.1 (2026-09-18)

    ⚡ Performance

    • backoffice: lighter PDF appearance templates (64668a4), closes #84
    • pdf: embed the template once per access PDF (a3c823e), closes #82

    1.7.0 (2026-09-18)

    ✨ Fonctionnalités

    • badges: delivery mode mail ou compte exposant, choisi par envoi et stocké sur le badge (6d98637), closes #85
    • badges: pdf des badges joint au mail d'invitation sous le seuil de taille (1f2091c), closes #86
    • badges: statut d'invitation et delivery mode dans le dialog des badges envoyés (7b4a024), closes #87

    ♻️ Refactoring

    • api: name the issue form without delivery mode (b311bfd)

    1.6.0 (2026-09-17)

    ✨ Fonctionnalités

    • add a purchase tunnel stepper to the cart and show guest identity errors only after an attempt (ff2c04a)
    • add the answer channel and scope catalogue questions for the cash register form (b8b729b)
    • compose the registration and cash register forms on one Formulaires page (328712b)
    • let the cash register holder answer the form questions when paying (cc3ce66)
    • let the organiser compose the cash register form from the registration form (ab91e9c)
    • let the organiser create, edit and deactivate cash-register-only questions (4cfcd1c)
    • show a loader on the save buttons while the form questions mutations run (46e6e33)

    🐛 Corrections

    • keep created organiser questions in the pool and share the sale answer type (95f602e)
    • let the organiser create a cash register question while the form has unsaved room (01cdd55)
    • limit the cash register form pool to the registration form and preview the current list (95fa4da)
    • send cart edits to the server whenever the server basket is displayed (14a6a26)

    ♻️ Refactoring

    • make the register form composition and question creation form reusable (b3c1258), closes #30

    1.5.0 (2026-09-17)

    ✨ Fonctionnalités

    • invitations: les billets d'animation suivent le lien direct (AfterActivityTicketsIssueV2) (f77cbd5), closes #78
    • invitations: mail d'invitation unique, « Je participe » ouvre directement le PDF (9600133), closes #75 #78
    • invitations: première ouverture du PDF = invitation opened + mail de participation (737c5fa), closes #77
    • invitations: une invitation refusée n'ouvre plus le PDF (410) (dcb4a85), closes #76

    🐛 Corrections

    • ci: aligne le specifier oxlint du lockfile sur le package.json (f022343)
    • events: la fiche et le contrôle des doublons appliquent les Options de mise en ligne (379d8a9)
    • events: la validation AC EXPO applique les Options de mise en ligne par une règle unique (91739c0), closes #69
    • events: refuse avec un message clair une option billetterie sans billetterie ou sans dates (35ba7a4), closes #70

    ♻️ Refactoring

    • invitations: découpe invitation-token en repository/utils, partage le bouton HTML (99c5b82), closes #74

    1.4.1 (2026-09-16)

    🐛 Corrections

    • ci: aligne le specifier oxlint du lockfile sur le package.json (f022343)

    1.4.0 (2026-09-15)

    ✨ Fonctionnalités

    • backoffice: libelle les limites par groupe et ajoute un loading a la sauvegarde du billet (c431b05)
    • groups: expose hasGroupTicketTypes and unlock guest auth by email (dbc26b6), closes #52
    • groups: group unlock on the embedded ticketing (4a93629), closes #55
    • groups: group unlock on the web-app ticketing (da49778), closes #53
    • groups: lock the checkout email while Group tickets are in the basket (fbd06c0), closes #54
    • groups: refuse ineligible Group tickets in basket and order (a60e368), closes #51
    • groups: single eligibility rule for Group tickets, glossary and ADR 0005 (71c8a2c), closes #50
    • web-app: regroupe les dates de l'evenement par rythme d'ouverture (b6c5c59)

    🐛 Corrections

    • cart: un Visitor en Guest session peut corriger un panier deja synchronise (20690d0), closes #66
    • embed ticketing client feedback (form per ticket, iframe confirmation, promo removal) (303581a)
    • groups: meme restitution du refus dans la billetterie integree (538ce32), closes #61 #64
    • groups: message unique pour le minimum d'un Group purchase (f3b1ae9), closes #65
    • groups: partage la limite effective par personne entre serveur et billetterie (0a35721), closes #60
    • groups: phrase the group unlock line as a question (10f8d12)
    • groups: rejoue le filtrage de la billetterie au changement de session (852a7a1), closes #49 #62
    • groups: un Group unlock sans Group ne laisse aucune trace (dc92834), closes #63
    • mobile: show the real signup error instead of a generic message (b05df71)
    • mobile: show the real signup error instead of a generic message (51988e7)
    • web-app: affiche l'etendue des periodes longues au lieu de chaque date (f26ee1f)
    • web-app: affiche le motif de refus du panier a l'ecran de paiement (119303b), closes #61

    ♻️ Refactoring

    • api: lit le refus du panier depuis l'erreur axios conservee (8e352a9)

    1.3.5 (2026-09-10)

    1.3.4 (2026-09-09)

    🐛 Corrections

    • count promo code uses per discounted unit and apply codes partially (1806638)
    • keep the login modal closed on the guest order confirmation page (2532688), closes #39
    • write guest cart quantities directly on click (9f1fad6)

    1.3.3 (2026-09-08)

    🐛 Corrections

    • open the signup modal from the post-purchase account link instead of looping 465c3e0

    1.3.2 (2026-09-07)

    🐛 Corrections

    • point the order confirmation account CTA to the web-app signup modal (009ba87), closes #36
    • set an explicit text color on Input so iOS Safari dark mode keeps it readable (c2f5fb7)

    1.3.1 (2026-09-07)

    🐛 Corrections

    • point the order confirmation account CTA to the web-app signup modal (009ba87), closes #36
    • set an explicit text color on Input so iOS Safari dark mode keeps it readable (c2f5fb7)

    1.3.0 (2026-09-04)

    ✨ Fonctionnalités

    • seed QA events between Besançon and Dijon on staging (b6ccc36)

    🐛 Corrections

    • backoffice: restore the staging web-app URL in .env.staging (a5b0f7e)
    • email-templates: render the invoice button only when an invoice URL is provided (2d6b0d4)
    • guest-checkout: hide the invoice button for free orders and use the durable invoice URL (780109a)
    • show a not-yet-online page instead of a 500 on non-online event pages (6816f27)

    ♻️ Refactoring

    • guest-checkout: resolve the invoice view URL once in the email context (63d74e4)

    1.2.0 (2026-09-03)

    ✨ Fonctionnalités

    • seed shared QA accounts for staging (3d37075)
    • use the shared qa@ mailbox aliases for staging QA accounts (627ea44)

    🐛 Corrections

    • ci: keep script/ in the docker context so the root postinstall runs (7517493)
    • embed: authorise the registration form with an order-scoped token (257b98c)
    • web-app: build with webpack so the Sentry instrumentation loads in Docker (a2efad9)
    • web-app: sync a returning guest's local cart before applying a promo code (add259b)

    1.1.0 (2026-09-02)

    ✨ Fonctionnalités

    • backoffice: warn when a promo code has no selectable validity date (0654397)
    • enforce promo code format and per-event uniqueness among active codes (f420483)
    • limit promo code uses in total and per visitor, one use per order (509a5d1)
    • show promo code label errors as toast and red field at once (e260bd2)

    🐛 Corrections

    • accept null group limits when updating a ticket type (23f3490)
    • align badge promo codes with the shared discount-code layer (9df65c3)
    • allow credit notes on free order items so a 100% promo code use can be released (0c4da2c)
    • api: flag duplicated promo code labels inline on the badge form (14e9914)
    • api: keep the AxiosError instance in badge type mutations so a 409 marks the field (8abc544)
    • apply the promo code rules to animation tickets (d0dc17a)
    • auth: never mint guest sessions for real accounts and revoke guest tokens on registration (b1360a6)
    • backend: raise the JSON body limit for day-enumerated discount code dates (0a98dac)
    • backend: upsert the activity area when updating an activity (8d5ff5e)
    • backoffice: keep the validity dates prefilled on the discount form after a reload (0b2c563)
    • backoffice: mark the rejected promo code on animation ticket screens (ea2d730)
    • backoffice: point the staging web-app URL at the visitor site, not the backoffice (86af425)
    • backoffice: wait for sign-out before redirecting on 401 to avoid a reload loop (1d54694)
    • display promo code name validation errors inline (fc4c5d5)
    • embed: show and submit the registration form in the iframe checkout (dcefe8c)
    • link ticket and badge pricings to the event ticketing (217ae23)
    • lru cache (f0fbe4f)
    • migration: attach existing ticket and badge pricings to their event ticketing (0c31f1a)
    • pin better-auth family to lockfile versions (pnpm deploy bundles drift, broke preprod sign-in) (56a1e99)
    • show the promo code limit fields' errors in French when the value is not a number (44da100)
    • stop legacy promo code labels from blocking or being rewritten on edit (f0891cd)
    • web-app: show the real total in the embed cart when a promo code applies (cc131d9)
    • web-app: style the promo code error with the form design system (788f84c)

    ⚡ Performance

    • code-split backoffice route pages (da57d69)

    ♻️ Refactoring

    • use native range mode in the calendar and restyle the time field (fcad732)

    1.0.0 (2026-08-26)

    ✨ Fonctionnalités

    • send tickets by email automatically when a visitor order is paid (5cfd456)

    🐛 Corrections

    • align order confirmation email with previous after-purchase design (b31bec2)
    • allow the first tickets email resend right away, cooldown only after a resend (403f798)
    • guard seed against remote DBs, default .env to local docker database (f0b3c9d)
    • keep Connect'Events logo aspect ratio in access PDF (6bb23f0)
    • make migration history replayable on fresh installs (af41e48)
    • reprise staging — env vars manquantes, timeouts seed, suivi infra (1745736)
    • seed — emails vers le simulateur SES (safeSeedEmail) + maj suivi reprise staging (4628aff)
    • seed event slugs and missing backoffice prestations, guard null slugs in web-app (fa2a86d)
    • wrap long contact and detail lines inside access PDF quadrants (c9c1cf8)

    ⚡ Performance

    • switch web-app dev to turbopack (drop legacy babel config) (622ea18)
    logo avec nom Connect'Events
    logo
    DécouvrirFAQAide

    Rejoignez-nous sur

    instagram_logo
    facebook_logo
    linkedin_logo
    v1.19.0 · changelog