[1m[38;5;2m@[0m  [1m[38;5;13mpkn[38;5;8mwmmky[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;14m2026-05-11 14:44:19[39m [38;5;12m7e8[38;5;8m166d7[39m[0m
│  [1m[38;5;3m(no description set)[39m[0m
○  [1m[38;5;5mkm[0m[38;5;8mxvkmqm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 14:36:01[39m [1m[38;5;4m3f7[0m[38;5;8mb2961[39m
│  [38;5;2m(empty)[39m wrap licence fragment content in nested fieldset with legend
○  [1m[38;5;5myup[0m[38;5;8munuzo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 14:36:01[39m [1m[38;5;4m678[0m[38;5;8mf1d3c[39m
│  refactor licence fragment: Libre→CC2r+licence, Interne→opt-in want_license, Interdit→none
○  [1m[38;5;5mpny[0m[38;5;8mrukop[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 14:24:27[39m [1m[38;5;4m8cc[0m[38;5;8m0bc34[39m
│  Added details and summary to the license choosing element.
○  [1m[38;5;5mll[0m[38;5;8mmtqprz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:55:19[39m [1m[38;5;4mf0[0m[38;5;8mbf86cb[39m
│  [38;5;2m(empty)[39m guard syncOrderInput against undefined pond instance during FilePond init
○  [1m[38;5;5mmr[0m[38;5;8mtoqozz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:55:19[39m [1m[38;5;4mb5[0m[38;5;8m31602f[39m
│  server-side upload progress: poll /admin/actions/upload-progress.php via token; progress file written during PeerTube uploads
○  [1m[38;5;5mnw[0m[38;5;8mozruss[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:38:35[39m [1m[38;5;4m41[0m[38;5;8m5a03cb[39m
│  decorelate formats from fichiers: no HTMX toggles, all slots always visible; progress bar 25/75 split; sticky formats fieldset
○  [1m[38;5;5mqv[0m[38;5;8mnunynl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:33:20[39m [1m[38;5;4m12[0m[38;5;8m09931c[39m
│  upload progress bar: fieldset layout, accent colors, file name display, completion animation, 800ms delay before redirect
○  [1m[38;5;5mql[0m[38;5;8mvmyvuo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:24:09[39m [1m[38;5;4m24[0m[38;5;8me1048a[39m
│  Bump peertube embed audio player height + remove figure for iframes in tfe.php
○  [1m[38;5;5mtx[0m[38;5;8mzqmwnx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:10:01[39m [1m[38;5;4mb75[0m[38;5;8m4732c[39m
│  fix PeerTube upload: switch to simple multipart POST /api/v1/videos/upload with CURLFile; remove resumable protocol
○  [1m[38;5;5msu[0m[38;5;8mrwmkqz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 13:00:07[39m [1m[38;5;4m1b3[0m[38;5;8m4dd14[39m
│  fix PeerTube upload: pass original filename in init body; chunk Content-Type → application/octet-stream
○  [1m[38;5;5muss[0m[38;5;8mkovxu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:53:57[39m [1m[38;5;4m8c0[0m[38;5;8mf90fe[39m
│  fix PeerTube init: remove waitTranscoding, add category+commentsEnabled; switch PATCH back to POSTFIELDS; remove verbose logging; clean curl_close
○  [1m[38;5;5mnll[0m[38;5;8mmqxnz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:50:44[39m [1m[38;5;4m68[0m[38;5;8m6be3c3[39m
│  fix PeerTube PATCH: use CURLOPT_INFILE stream for binary body; global CURL_HTTP_VERSION_2_0; fix chunkNum off-by-one
○  [1m[38;5;5mmxq[0m[38;5;8mulkkl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:46:02[39m [1m[38;5;4m3f2[0m[38;5;8m8ed35[39m
│  fix PeerTube PATCH: force HTTP/2 (CURL_HTTP_VERSION_2_0) to match init connection
○  [1m[38;5;5moll[0m[38;5;8mozskx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:43:41[39m [1m[38;5;4mff[0m[38;5;8m9070c4[39m
│  debug PeerTube PATCH 400: let curl negotiate HTTP version, log raw hex body
○  [1m[38;5;5mlu[0m[38;5;8mxqovts[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:42:45[39m [1m[38;5;4m83[0m[38;5;8m7f6ef9[39m
│  debug PeerTube PATCH 400: force HTTP/1.1, set CURLOPT_INFILESIZE, log verbose tail
○  [1m[38;5;5mmos[0m[38;5;8mupsso[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:40:24[39m [1m[38;5;4m59[0m[38;5;8m89baac[39m
│  fix PeerTube upload: force HTTP/1.1 for PATCH chunks; remove deprecated CURLOPT_BINARYTRANSFER
○  [1m[38;5;5mnn[0m[38;5;8moxlkll[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:38:56[39m [1m[38;5;4md9[0m[38;5;8m357537[39m
│  fix PeerTube upload: add CURLOPT_VERBOSE debug; use BINARYTRANSFER for chunk body
○  [1m[38;5;5myxk[0m[38;5;8mvwkqy[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:35:54[39m [1m[38;5;4m7ea[0m[38;5;8m832f1[39m
│  fix PeerTube upload: Google-resumable (Location header, PATCH), +debug logging
○  [1m[38;5;5mkk[0m[38;5;8mxkwlvw[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:21:45[39m [1m[38;5;4md1[0m[38;5;8m213cf9[39m
│  fix PeerTube upload: use Google-resumable protocol (Location header + PATCH) instead of PUT; capture response headers; ensure chunk size multiple of 256KB
○  [1m[38;5;5musx[0m[38;5;8mlqwxk[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 12:09:14[39m [1m[38;5;4m7e0[0m[38;5;8m28d3f[39m
│  Cleanup acces fichier section
○  [1m[38;5;5mom[0m[38;5;8mwsuqoy[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:40:50[39m [1m[38;5;4m56[0m[38;5;8mab779e[39m
│  move Restrictions d'accès aux fichiers from contenus.php to acces.php
○  [1m[38;5;5musm[0m[38;5;8myqlwr[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:35:11[39m [1m[38;5;4m03[0m[38;5;8mc9d317[39m
│  cleanup: merge SMTP fields into single fieldset, rename to Emails
○  [1m[38;5;5mrxw[0m[38;5;8mmppwn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:28:58[39m [1m[38;5;4m5a[0m[38;5;8m45cb02[39m
│  fix: remove alt labels, fix curl_close deprecation, fix PeerTube description param
○  [1m[38;5;5mmqo[0m[38;5;8myqups[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:24:57[39m [1m[38;5;4m42[0m[38;5;8m722c21[39m
│  feat: PeerTube channel by name, test button, always-visible FilePond pools
○  [1m[38;5;5mqm[0m[38;5;8moswsvt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:15:06[39m [1m[38;5;4m679[0m[38;5;8m120b6[39m
│  feat: shared SMTP credentials + resumable PeerTube upload + embed improvements
○  [1m[38;5;5msx[0m[38;5;8mpsrqsl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 11:01:25[39m [1m[38;5;4mfd[0m[38;5;8m3ad3d3[39m
│  feat: add PeerTube alternate audio/video labels and FilePond pools
○  [1m[38;5;5mqr[0m[38;5;8mtmmwro[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 10:31:19[39m [1m[38;5;4m2f[0m[38;5;8mb392f6[39m
│  fix: make schema.sql fully idempotent — add IF NOT EXISTS to all CREATE INDEX, CREATE TRIGGER, and CREATE VIEW statements
○  [1m[38;5;5mpy[0m[38;5;8mlyqurz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 04:45:23[39m [1m[38;5;4m674[0m[38;5;8m5734d[39m
│  feat(backup): deploy cron-based SQLite backups to production
○  [1m[38;5;5mpqno[0m[38;5;8mvwxx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:43:09[39m [1m[38;5;4m16[0m[38;5;8m4df763[39m
│  fix(production): fix multiple remote server errors from nginx logs
○  [1m[38;5;5mrxp[0m[38;5;8mvwzkt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:43:09[39m [1m[38;5;4mcf[0m[38;5;8mc55073[39m
│  feat(admin): add htmx toast feedback for settings checkboxes in contenus.php
○  [1m[38;5;5mss[0m[38;5;8mtzwlpk[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m677[0m[38;5;8mf5050[39m
│  feat(deploy): upload deploy-server.sh, run migrations, fix migrate.sh server layout
○  [1m[38;5;5mmy[0m[38;5;8msnnsru[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4md6[0m[38;5;8m548157[39m
│  feat(deploy): upload and run deploy-server.sh before permission verification, run migrations
○  [1m[38;5;5munnm[0m[38;5;8morqw[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m0f[0m[38;5;8mf5abbe[39m
│  feat(deploy): upload and run deploy-server.sh before permission verification
○  [1m[38;5;5mrqr[0m[38;5;8mkkkuo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m17[0m[38;5;8m8a8577[39m
│  feat(deploy): add deploy-verify-permissions recipe to check ownership/permissions after rsync
○  [1m[38;5;5mkp[0m[38;5;8mvxplms[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4mac[0m[38;5;8m53d0da[39m
│  fix: settings handler was treating hidden value="0" as truthy
○  [1m[38;5;5mku[0m[38;5;8mslmqps[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m97[0m[38;5;8mabb41b[39m
│  fix: use HTMX auto-save with hidden value=0 inputs in separate fieldsets
○  [1m[38;5;5mqq[0m[38;5;8mssmzsl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4mbd4[0m[38;5;8md5bff[39m
│  fix: split formulaire section into separate forms to avoid cross-resets
○  [1m[38;5;5mtm[0m[38;5;8mklpprq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m7a[0m[38;5;8m2525e0[39m
│  fix: replace HTMX auto-save checkboxes with regular form + Enregistrer button
○  [1m[38;5;5mrs[0m[38;5;8mwkvuzm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m61[0m[38;5;8m8356af[39m
│  fix: settings checkboxes could not be unchecked + could not be checked independently
○  [1m[38;5;5mws[0m[38;5;8mtuyzym[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:43[39m [1m[38;5;4m18d[0m[38;5;8m9bd1a[39m
│  feat: implement SQLite backup & data integrity plan (Phases 2-4)
○  [1m[38;5;5mou[0m[38;5;8mqzmwvn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4m28[0m[38;5;8m608d2c[39m
│  feat: implement SQLite backup & data integrity plan (Phases 2-4)
○  [1m[38;5;5mps[0m[38;5;8mvklxsu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4mc7[0m[38;5;8m012c91[39m
│  fix: exclude entire var/ from rsync --delete to preserve logs
○  [1m[38;5;5mnlv[0m[38;5;8msnzkz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4m9c[0m[38;5;8m4138fa[39m
│  fix: add hx-swap="none" to admin auto-save checkboxes to prevent page swap
○  [1m[38;5;5molz[0m[38;5;8mzwmwr[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4mae[0m[38;5;8m12c463[39m
│  feat: require 3 mots-clés in partage, language asterisk toggle, admin auto-save checkboxes
○  [1m[38;5;5mnq[0m[38;5;8mmqrqmo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4mf65[0m[38;5;8m44c5d[39m
│  fix: obfuscate email in contact links, raise rate limits, make Libre toggleable
○  [1m[38;5;5mry[0m[38;5;8mqustol[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4med[0m[38;5;8mfc1fd0[39m
│  import dialog: add Terminé button, fix padding, make success permanent, avoid POST resend
○  [1m[38;5;5msns[0m[38;5;8mxswsz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4m4b[0m[38;5;8me7b931[39m
│  fix: jury-fieldset.php calling old() with wrong signature for partage
○  [1m[38;5;5mwp[0m[38;5;8mspurnq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4mc3[0m[38;5;8m61702d[39m
│  Make Auteur(s) and Accès columns sortable alphabetically in admin list
○  [1m[38;5;5mzx[0m[38;5;8mryvzkv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-11 03:35:42[39m [1m[38;5;4md2[0m[38;5;8m570bc3[39m
│  Improve recap page + fix CSV import for jury roles
○  [1m[38;5;5mvqx[0m[38;5;8mpnkox[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 22:20:29[39m [1m[38;5;4m9d[0m[38;5;8md791cd[39m
│  fix migration 028, promoteurice repopulation, DB bootstrap
○  [1m[38;5;5mxz[0m[38;5;8mnsyswm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 22:18:05[39m [1m[38;5;4mb9[0m[38;5;8m52709e[39m
│  FilePond production hardening
○  [1m[38;5;5mvqn[0m[38;5;8monzxp[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:31:56[39m [1m[38;5;4m99[0m[38;5;8mc51201[39m
│  remove accept attributes from FilePond inputs, rely on beforeAddFile validation
○  [1m[38;5;5mrl[0m[38;5;8mqsxozn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:29:40[39m [1m[38;5;4m9b[0m[38;5;8m9445fe[39m
│  fix file validation: use extension-based check in beforeAddFile, drop plugin
○  [1m[38;5;5mwm[0m[38;5;8mzntpxp[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:25:45[39m [1m[38;5;4mfa[0m[38;5;8m1697bf[39m
│  add filepond-plugin-file-validate-type + server-side file warnings
○  [1m[38;5;5mstm[0m[38;5;8muuwmv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:19:58[39m [1m[38;5;4mccd[0m[38;5;8mf1c36[39m
│  add server-side video/audio size limits (2 GB) and fix missing annexe queue validation
○  [1m[38;5;5mtq[0m[38;5;8mwpzqtq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:10:51[39m [1m[38;5;4m25[0m[38;5;8m24574a[39m
│  [38;5;3m(no description set)[39m
○  [1m[38;5;5mwv[0m[38;5;8mkvvpmv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:35[39m [1m[38;5;4mdc[0m[38;5;8m099a5f[39m
│  fix annexe validation, FilePond type validation, and styling
○  [1m[38;5;5mrp[0m[38;5;8mtplqsr[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:35[39m [1m[38;5;4m70[0m[38;5;8m3b5dc2[39m
│  Add FilePond pools for couverture, note_intention, video, audio
○  [1m[38;5;5mzmv[0m[38;5;8mkxops[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:35[39m [1m[38;5;4m39[0m[38;5;8mce6dbf[39m
│  [38;5;3m(no description set)[39m
○  [1m[38;5;5myuu[0m[38;5;8mqpnwp[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m55[0m[38;5;8m8d7c06[39m
│  Fix FilePond integration: decouple format extras from main file inputs
○  [1m[38;5;5mztz[0m[38;5;8mtkrsu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m01[0m[38;5;8m7e2657[39m
│  [38;5;3m(no description set)[39m
○  [1m[38;5;5mqw[0m[38;5;8mltvwqq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4mfe[0m[38;5;8m503dcd[39m
│  Replace custom file-upload-queue.js with FilePond
○  [1m[38;5;5mpno[0m[38;5;8mtuyzv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m19[0m[38;5;8m1d2d7a[39m
│  [38;5;3m(no description set)[39m
○  [1m[38;5;5mur[0m[38;5;8mrtosru[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m02[0m[38;5;8m272555[39m
│  fix: stop checkbox click in admin index from navigating to recapitulatif
○  [1m[38;5;5mym[0m[38;5;8mrzpvln[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m2e[0m[38;5;8mc34999[39m
│  fix: spurious HTMX console warnings from checkbox-list default hx-include
○  [1m[38;5;5mmuzs[0m[38;5;8mwpkw[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m40[0m[38;5;8m4696bf[39m
│  fix: repair form submission with queued files + add comprehensive debug logging
○  [1m[38;5;5mow[0m[38;5;8mnwlmpo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m6e[0m[38;5;8m99f3e9[39m
│  Replace HTMX+PHP file upload queues with client-side JS
○  [1m[38;5;5mxl[0m[38;5;8mprulto[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m52[0m[38;5;8mee3530[39m
│  Replace HTMX+PHP file upload queues with client-side JS
○  [1m[38;5;5mqu[0m[38;5;8mkzomwx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4m0e[0m[38;5;8m31760f[39m
│  Replace HTMX+PHP file upload queues with client-side JS
○  [1m[38;5;5mmqn[0m[38;5;8mvolnz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4mdb3[0m[38;5;8m00c32[39m
│  Replace HTMX+PHP file upload queues with client-side JS
○  [1m[38;5;5mut[0m[38;5;8mnzmtom[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 21:06:34[39m [1m[38;5;4me2[0m[38;5;8mcd7804[39m
│  Replace HTMX+PHP file upload queues with client-side JS
○  [1m[38;5;5myr[0m[38;5;8mpmtrsy[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 16:35:04[39m [1m[38;5;4m0b5[0m[38;5;8m9d667[39m
│  fix: scoped HTMX file validation, add validation to TFE/PeerTube inputs
○  [1m[38;5;5mmxv[0m[38;5;8mvqust[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 16:32:34[39m [1m[38;5;4ma6[0m[38;5;8m6ff5c1[39m
│  refactor: session-based incremental TFE upload via HTMX, drop SortableJS
○  [1m[38;5;5muv[0m[38;5;8mnvvyny[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 15:55:35[39m [1m[38;5;4m04[0m[38;5;8mc1c3c6[39m
│  fix: req annexes, add HTMX inline file validation (MIME/size)
○  [1m[38;5;5myz[0m[38;5;8mtqkpzz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 15:31:02[39m [1m[38;5;4mdd6[0m[38;5;8m4d5c9[39m
│  fix: TFE and annexes files not saved, plus keyword validation and file preview CSS
○  [1m[38;5;5mro[0m[38;5;8mqtyzln[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 15:05:24[39m [1m[38;5;4m94[0m[38;5;8mf0df20[39m
│  feat: obfuscate all email addresses and mailto links as HTML entities
○  [1m[38;5;5msv[0m[38;5;8mprwkko[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:51:25[39m [1m[38;5;4ma9[0m[38;5;8m0b8b4d[39m
│  fix: add help email, preserve file names on validation error, license fix
○  [1m[38;5;5mkv[0m[38;5;8myyvksn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:51:25[39m [1m[38;5;4mbb[0m[38;5;8mfd786c[39m
│  fix: add help email, preserve file names on validation error, license fix
○  [1m[38;5;5mmou[0m[38;5;8mmuszm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mab[0m[38;5;8m4601b9[39m
│  Fix language-search fragment
○  [1m[38;5;5mxvq[0m[38;5;8monoyt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m64[0m[38;5;8mb18fdb[39m
│  Add sidebar TOC, simplify Données Secondaires section
○  [1m[38;5;5mty[0m[38;5;8motlpxt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m22[0m[38;5;8m799820[39m
│  Add Mots-clés and Langues management to contenus page
○  [1m[38;5;5msnt[0m[38;5;8mroxlt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m47[0m[38;5;8m670245[39m
│  Move Formulaire settings to contenus, remove delete-all TFE
○  [1m[38;5;5mqxu[0m[38;5;8mprqpt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m1b5[0m[38;5;8md0db6[39m
│  Add language-search component for Autre Langue input + active search in lists
○  [1m[38;5;5mstt[0m[38;5;8mrwkly[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m586[0m[38;5;8m23625[39m
│  CSV importer: boolean and ap variants/typos
○  [1m[38;5;5mpnt[0m[38;5;8mwsqvs[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mb83b[0m[38;5;8m316e[39m
│  Rename author_email→contact_interne, author_show_contact→contact_public across view/controllers/templates
○  [1m[38;5;5mvpw[0m[38;5;8muyvyv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m43[0m[38;5;8mcf6b4b[39m
│  Fix: email clearing in findOrCreateAuthor, htmlspecialchars(null) crash in old(), dead contact_interne field, access_type_id radio clearing
○  [1m[38;5;5msz[0m[38;5;8mktqmnn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m80[0m[38;5;8m9d77b1[39m
│  Error tests, FK violations fix
○  [1m[38;5;5munnn[0m[38;5;8mvyqs[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m6c[0m[38;5;8ma873c8[39m
│  Admin mobile block: fix inline style beating media query
○  [1m[38;5;5mnz[0m[38;5;8mllwsxo[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mba[0m[38;5;8m41cc9e[39m
│  Fix bulk form nesting, remove count bar, stopPropagation on actions
○  [1m[38;5;5mvu[0m[38;5;8mmvtlyz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mef[0m[38;5;8md01b93[39m
│  Rename Liens étudiant·e, add link name + edit dialog
○  [1m[38;5;5mso[0m[38;5;8mmsyvxz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mc8[0m[38;5;8mbe0aae[39m
│  Bulk bar anti-shift, tags icons, AP no-wrap, credits reorder
○  [1m[38;5;5mzl[0m[38;5;8mkousvq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m73[0m[38;5;8mef6301[39m
│  Add back buttons, row click navigation, remove Voir button
○  [1m[38;5;5mzmu[0m[38;5;8myukuk[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mdb0[0m[38;5;8m21566[39m
│  Replace emoji/text buttons with Phosphor SVG icons, add credits
○  [1m[38;5;5mkx[0m[38;5;8mwyyswm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m92[0m[38;5;8mcea357[39m
│  Replace large admin index script with minimal JS
○  [1m[38;5;5mpkr[0m[38;5;8mnmpks[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m30[0m[38;5;8mef10fd[39m
│  Move export DB to Exporter modal, color stats
○  [1m[38;5;5mtu[0m[38;5;8mrvpxsq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mb2[0m[38;5;8mb09243[39m
│  Refactor: Admin index
○  [1m[38;5;5myxp[0m[38;5;8mntrsp[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mdf[0m[38;5;8mf6e2af[39m
│  add explanation hint to is_published checkbox in Backoffice fieldset
○  [1m[38;5;5mnt[0m[38;5;8mmqzyop[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mf6b[0m[38;5;8m4ac09[39m
│  Merge Publication fieldset's is_published checkbox into Backoffice fieldset
○  [1m[38;5;5mrt[0m[38;5;8mqxvoqk[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mcc6[0m[38;5;8m5b385[39m
│  Remove duration_pages/duration_minutes/file_size_info; rename cc4r → cc2r in DB and code
○  [1m[38;5;5mkl[0m[38;5;8mpxpwlm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mad[0m[38;5;8mf080d1[39m
│  fix: resolve partage form submission issues
○  [1m[38;5;5mru[0m[38;5;8mznqknn[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m8e[0m[38;5;8mebf684[39m
│  css: moved + tweaked styles to common.css
○  [1m[38;5;5mmt[0m[38;5;8mtylpmt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mcb[0m[38;5;8mef12b5[39m
│  link creation: fieldset with checkboxes for objet restriction, TFE checked by default
○  [1m[38;5;5mww[0m[38;5;8mrwtomz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mdd1[0m[38;5;8m33522[39m
│  switch thesis-add-header to grid layout: title | badge, subtitle spans full width
○  [1m[38;5;5moo[0m[38;5;8mlsxuow[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4md7[0m[38;5;8mff6b42[39m
│  Update: subtitle below header + top gradient
○  [1m[38;5;5mvn[0m[38;5;8mprsrzm[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m23[0m[38;5;8mec2c7b[39m
│  remove duplicate Image de couverture in edit form — moved cover preview+removal into fichiers-fragment.php, removed duplicate from edit-existing-files-block
○  [1m[38;5;5mztk[0m[38;5;8mmwwkl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mc0[0m[38;5;8m668225[39m
│  .env and todo
○  [1m[38;5;5mtoq[0m[38;5;8mvqlop[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m1f[0m[38;5;8mdd450f[39m
│  overtype editor rounded corners
○  [1m[38;5;5mms[0m[38;5;8mwkvnyl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4md8[0m[38;5;8m7158db[39m
│  Cleanup and normalize headers
○  [1m[38;5;5mux[0m[38;5;8mqyvyvt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4mf1[0m[38;5;8me2651f[39m
│  refactor public search bar
○  [1m[38;5;5mxvt[0m[38;5;8mqzyom[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m585[0m[38;5;8m21915[39m
│  Redesign focus rings
○  [1m[38;5;5mvr[0m[38;5;8mqmwvrx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:26:45[39m [1m[38;5;4m10[0m[38;5;8mcfa469[39m
│  unify form element styles in common.css
○  [1m[38;5;5mrv[0m[38;5;8mvmuxsz[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-10 14:25:53[39m [1m[38;5;4m0be[0m[38;5;8m7f533[39m
│  style: tweaking admin section + some public
○  [1m[38;5;5mtow[0m[38;5;8mstynu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4mb7f[0m[38;5;8mf2776[39m
│  EDIT THIS → refactor: unify edit mode Format+Fichiers with add/partage HTMX fragment
○  [1m[38;5;5mqnt[0m[38;5;8mtznqt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4m3c[0m[38;5;8mdd3893[39m
│  Refactor: Form improvements and cleanup: note contextuel, annexes, fichiers
○  [1m[38;5;5mwq[0m[38;5;8mmrrrwu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4ma8[0m[38;5;8maeb0d6[39m
│  feat: dual upload system — direct file storage + PeerTube API integration
○  [1m[38;5;5mnsn[0m[38;5;8murqzv[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4m5f[0m[38;5;8mbd6243[39m
│  fix: justfile shebang recipes indentation (spaces → tabs)
○  [1m[38;5;5mrqz[0m[38;5;8myxzyt[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4m4c[0m[38;5;8m030bd5[39m
│  Refactor + feat: unify format/fichiers HTMX fragment, reorder format types, add file constraints, fix admin auth
○  [1m[38;5;5mmuzr[0m[38;5;8muvwl[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:44:48[39m [1m[38;5;4m7b[0m[38;5;8medda02[39m
│  Encrypt SMTP password at rest with AES-256-GCM
○  [1m[38;5;5mov[0m[38;5;8mqmwmol[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-09 14:42:07[39m [1m[38;5;4m62[0m[38;5;8m7b0c4e[39m
│  Remove required from all admin add/edit form inputs
○  [1m[38;5;5mvpo[0m[38;5;8mmqrst[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:25[39m [1m[38;5;4mb833[0m[38;5;8m1a08[39m
│  fix: replace .php-suffixed public URLs blocked by nginx catch-all
○  [1m[38;5;5mqnx[0m[38;5;8mltqyq[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:25[39m [1m[38;5;4m189[0m[38;5;8mf4368[39m
│  fix: 403 on /language-autre-fragment.php — add explicit nginx location block
○  [1m[38;5;5mnsl[0m[38;5;8mznwmk[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:25[39m [1m[38;5;4m6b[0m[38;5;8ma13e00[39m
│  test: add ShareLinkTest + PureLogicTest (TDD), fix coverMap undefined in SearchController
○  [1m[38;5;5mnv[0m[38;5;8mntmkyx[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:25[39m [1m[38;5;4m15[0m[38;5;8md54fa1[39m
│  add Néerlandais language option and make language_autre conditionally required
○  [1m[38;5;5mqxq[0m[38;5;8myzmzp[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:25[39m [1m[38;5;4mf3[0m[38;5;8md96155[39m
│  merge banners into covers: remove banner field, migrate files, add covers to search/home/repertoire cards
○  [1m[38;5;5mrxn[0m[38;5;8mnnvpu[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-08 22:58:05[39m [1m[38;5;4me3[0m[38;5;8m896811[39m
│  Fix migrations and deploy issues + errors + linting
[1m[38;5;14m◆[0m  [1m[38;5;5mpqnt[0m[38;5;8mkzml[39m [38;5;3mpontoporeia@happyngreen.fr[39m [38;5;6m2026-05-07 23:39:41[39m [38;5;5mmain[39m [1m[38;5;4mbdd[0m[38;5;8m95341[39m
│  Extract shared TFE form partial — single source of truth for add/edit/partage
~
