diff --git a/TODO.md b/TODO.md index fe92a64..aba20b2 100644 --- a/TODO.md +++ b/TODO.md @@ -22,6 +22,7 @@ - [x] Decorelate formats from fichiers: no HTMX toggling; Site web/Vidéo/Audio always visible - [x] Sticky formats fieldset inside parent container - [x] Server-side progress: PeerTubeService writes to temp file, client polls progress endpoint +- [x] Refactor licence fieldset: Libre→CC2r+licence, Interne→opt-in licence, Interdit→none ## HTMX Toast Feedback for Settings Checkboxes (contenus.php) diff --git a/app/public/admin/licence-fragment.php b/app/public/admin/licence-fragment.php index 3ae2221..0287676 100644 --- a/app/public/admin/licence-fragment.php +++ b/app/public/admin/licence-fragment.php @@ -1,20 +1,22 @@ getAllLicenseTypes(); ?>
+ +
+ Options de licence +

J'autorise que mon TFE soit disponible en libre accès. Je suis conscient·e des responsabilités légales.

+ +
+ + En savoir plus sur la CC2r ↗ +
+ +
et / ou
+ getAllLicenseTypes(); +
+ +
+ Options de licence +

Mon TFE est accessible sur place et sur la plateforme xamxam par la communauté erg. J'autorise une (ré-)utilisation dans un contexte académique au sein de l'erg.

+ +
+ + Par défaut, aucune licence spécifique n'est appliquée. Cochez pour en choisir une. +
+ +
En savoir plus sur la CC2r ↗
+ + + + + +

Je suis conscient·e des obligations légales venant avec la licence choisie et acquiesce avoir lu la documentation prévue à cet effet par l'erg, ainsi qu'avoir discuté des enjeux des licences avec l'équipe pédagogique.

+ +
+ + +
+ Options de licence +

Mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est visible publiquement.

+

Aucune licence n'est applicable.

+
+
diff --git a/app/public/assets/css/common.css b/app/public/assets/css/common.css index fe4f101..601aa8d 100644 --- a/app/public/assets/css/common.css +++ b/app/public/assets/css/common.css @@ -743,3 +743,18 @@ details > summary::-webkit-details-marker { audio::-webkit-media-controls-enclosure { border-radius: var(--radius); } + +details { + padding: var(--space-s); +} +summary { + font-family: var(--font-display); + font-weight: 600; + text-decoration: 1px wavy; + color: var(--accent-secondary); + svg { + fill: var(--accent-secondary); + vertical-align: text-bottom; + height: 1.4em; + } +} diff --git a/app/public/assets/css/form.css b/app/public/assets/css/form.css index a154ae0..e5cf911 100644 --- a/app/public/assets/css/form.css +++ b/app/public/assets/css/form.css @@ -1362,3 +1362,135 @@ legend { #format-fichiers-block { container-type: inline-size; } + +/* ── Licence choice or-separator ─────────────────────────── */ + +.licence-or-separator { + display: flex; + align-items: center; + gap: var(--space-xs); + margin: var(--space-xs) 0; + color: var(--text-tertiary); + font-size: var(--step--1); +} + +.licence-or-separator::before, +.licence-or-separator::after { + content: ''; + flex: 1; + height: 1px; + background: var(--accent-muted); +} + +/* ── Nested licence fieldset ─────────────────────────────── */ + +.licence-options-fieldset { + border: 1px solid var(--accent-muted); + border-radius: var(--radius); + padding: var(--space-s); + margin-top: var(--space-xs); +} + +.licence-options-fieldset legend { + font-weight: 600; + font-size: var(--step--1); + color: var(--text-secondary); + padding: 0 var(--space-2xs); +} + +/* ── File figures (recap + edit existing files) ──────────── */ + +.admin-file-list, +.recap-files-list { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: var(--space-s); +} + +.admin-file-list-item, +.recap-files-list-item { + list-style: none; +} + +.admin-file-figure, +.recap-file-figure { + display: flex; + align-items: flex-start; + gap: var(--space-s); + background: var(--bg-secondary, rgba(149, 87, 181, 0.05)); + border-radius: var(--radius); + padding: var(--space-s); + margin: 0; +} + +.admin-file-icon, +.recap-file-icon { + font-size: 1.5rem; + flex-shrink: 0; + width: 2.5rem; + height: 2.5rem; + display: flex; + align-items: center; + justify-content: center; + background: var(--accent-muted); + border-radius: var(--radius); +} + +.admin-file-thumb, +.recap-file-thumb { + max-width: 160px; + max-height: 120px; + object-fit: cover; + border-radius: var(--radius); + flex-shrink: 0; +} + +.admin-file-caption, +.recap-file-caption { + flex: 1; + display: flex; + flex-direction: column; + gap: var(--space-3xs); +} + +.admin-file-name, +.recap-file-name { + font-weight: 600; + font-size: var(--step--1); + color: var(--text-primary); +} + +.admin-file-peertube-id, +.recap-file-peertube-id { + font-size: var(--step--2); + color: var(--text-tertiary); + font-family: monospace; +} + +.admin-file-meta-row, +.recap-file-meta-row { + display: flex; + gap: var(--space-xs); + align-items: center; + font-size: var(--step--2); + color: var(--text-tertiary); +} + +.recap-file-label { + font-size: var(--step--1); + color: var(--text-secondary); + font-style: italic; +} + +.admin-file-label-input { + font-size: var(--step--2); + padding: var(--space-3xs) var(--space-2xs); + border: 1px solid var(--accent-muted); + border-radius: var(--radius); + background: var(--bg-primary); + color: var(--text-primary); + margin-top: var(--space-3xs); +} diff --git a/app/public/partage/fichiers-fragment.php b/app/public/partage/fichiers-fragment.php index 3225c2b..f55ccbf 100644 --- a/app/public/partage/fichiers-fragment.php +++ b/app/public/partage/fichiers-fragment.php @@ -79,20 +79,19 @@ $websiteLabel = htmlspecialchars($_POST['website_label'] ?? ''); if ($editMode && (!empty($_efiles) || $_cover)): ?>
-
@@ -75,8 +82,16 @@ $adminMode = $adminMode ?? false; hx-swap="outerHTML" hx-include="closest fieldset" > - 🔒 Interne — Mon TFE n'est accessible que sur place en physique. Une note descriptive est disponible sur le site. + 🔒 Interne +
+
+ Info +

+ Mon TFE et ma note d'intention ne sont accessibles que sur place en physique ainsi que sur la plateforme xamxam par la communauté erg. Une note descriptive est disponible sur le site à toustes. J’autorise une (ré-)utilisation et diffusion dans un contexte académique et didactique au sein de l'erg. +

+
+ @@ -89,8 +104,16 @@ $adminMode = $adminMode ?? false; hx-swap="outerHTML" hx-include="closest fieldset" > - 🚫 Interdit — Mon TFE n'est pas disponible en physique ni sur le site. Une note descriptive est disponible sur le site. + 🚫 Interdit + +
+
+ Info +

+ Mon TFE est en libre accès à tout le monde sur la plateforme des TFE ainsi que dans la bibliothèque de l’erg. Je suis conscient des responsabilités et obligations légales qui viennent avec une diffusion externe – et acquiesce avoir lu la documentation prévue à cet effet par l'erg, ainsi qu'avoir discuté des enjeux d'une publication avec l'équipe pédagogique. J'accepte de partager mes droits de diffusion avec l'erg, ce uniquement dans le cadre d'une diffusion sur la plateforme xamxam. +

+

L'auteur·ice peut, à tout moment, décider de restreindre son propre choix. Iel ne peut par contre pas l'ouvrir.

diff --git a/qq b/qq new file mode 100644 index 0000000..fba29dc --- /dev/null +++ b/qq @@ -0,0 +1,255 @@ +@ pknwmmky pontoporeia@happyngreen.fr 2026-05-11 14:44:19 7e8166d7 +│ (no description set) +○ kmxvkmqm pontoporeia@happyngreen.fr 2026-05-11 14:36:01 3f7b2961 +│ (empty) wrap licence fragment content in nested fieldset with legend +○ yupunuzo pontoporeia@happyngreen.fr 2026-05-11 14:36:01 678f1d3c +│ refactor licence fragment: Libre→CC2r+licence, Interne→opt-in want_license, Interdit→none +○ pnyrukop pontoporeia@happyngreen.fr 2026-05-11 14:24:27 8cc0bc34 +│ Added details and summary to the license choosing element. +○ llmtqprz pontoporeia@happyngreen.fr 2026-05-11 13:55:19 f0bf86cb +│ (empty) guard syncOrderInput against undefined pond instance during FilePond init +○ mrtoqozz pontoporeia@happyngreen.fr 2026-05-11 13:55:19 b531602f +│ server-side upload progress: poll /admin/actions/upload-progress.php via token; progress file written during PeerTube uploads +○ nwozruss pontoporeia@happyngreen.fr 2026-05-11 13:38:35 415a03cb +│ decorelate formats from fichiers: no HTMX toggles, all slots always visible; progress bar 25/75 split; sticky formats fieldset +○ qvnunynl pontoporeia@happyngreen.fr 2026-05-11 13:33:20 1209931c +│ upload progress bar: fieldset layout, accent colors, file name display, completion animation, 800ms delay before redirect +○ qlvmyvuo pontoporeia@happyngreen.fr 2026-05-11 13:24:09 24e1048a +│ Bump peertube embed audio player height + remove figure for iframes in tfe.php +○ txzqmwnx pontoporeia@happyngreen.fr 2026-05-11 13:10:01 b754732c +│ fix PeerTube upload: switch to simple multipart POST /api/v1/videos/upload with CURLFile; remove resumable protocol +○ surwmkqz pontoporeia@happyngreen.fr 2026-05-11 13:00:07 1b34dd14 +│ fix PeerTube upload: pass original filename in init body; chunk Content-Type → application/octet-stream +○ usskovxu pontoporeia@happyngreen.fr 2026-05-11 12:53:57 8c0f90fe +│ fix PeerTube init: remove waitTranscoding, add category+commentsEnabled; switch PATCH back to POSTFIELDS; remove verbose logging; clean curl_close +○ nllmqxnz pontoporeia@happyngreen.fr 2026-05-11 12:50:44 686be3c3 +│ fix PeerTube PATCH: use CURLOPT_INFILE stream for binary body; global CURL_HTTP_VERSION_2_0; fix chunkNum off-by-one +○ mxqulkkl pontoporeia@happyngreen.fr 2026-05-11 12:46:02 3f28ed35 +│ fix PeerTube PATCH: force HTTP/2 (CURL_HTTP_VERSION_2_0) to match init connection +○ ollozskx pontoporeia@happyngreen.fr 2026-05-11 12:43:41 ff9070c4 +│ debug PeerTube PATCH 400: let curl negotiate HTTP version, log raw hex body +○ luxqovts pontoporeia@happyngreen.fr 2026-05-11 12:42:45 837f6ef9 +│ debug PeerTube PATCH 400: force HTTP/1.1, set CURLOPT_INFILESIZE, log verbose tail +○ mosupsso pontoporeia@happyngreen.fr 2026-05-11 12:40:24 5989baac +│ fix PeerTube upload: force HTTP/1.1 for PATCH chunks; remove deprecated CURLOPT_BINARYTRANSFER +○ nnoxlkll pontoporeia@happyngreen.fr 2026-05-11 12:38:56 d9357537 +│ fix PeerTube upload: add CURLOPT_VERBOSE debug; use BINARYTRANSFER for chunk body +○ yxkvwkqy pontoporeia@happyngreen.fr 2026-05-11 12:35:54 7ea832f1 +│ fix PeerTube upload: Google-resumable (Location header, PATCH), +debug logging +○ kkxkwlvw pontoporeia@happyngreen.fr 2026-05-11 12:21:45 d1213cf9 +│ fix PeerTube upload: use Google-resumable protocol (Location header + PATCH) instead of PUT; capture response headers; ensure chunk size multiple of 256KB +○ usxlqwxk pontoporeia@happyngreen.fr 2026-05-11 12:09:14 7e028d3f +│ Cleanup acces fichier section +○ omwsuqoy pontoporeia@happyngreen.fr 2026-05-11 11:40:50 56ab779e +│ move Restrictions d'accès aux fichiers from contenus.php to acces.php +○ usmyqlwr pontoporeia@happyngreen.fr 2026-05-11 11:35:11 03c9d317 +│ cleanup: merge SMTP fields into single fieldset, rename to Emails +○ rxwmppwn pontoporeia@happyngreen.fr 2026-05-11 11:28:58 5a45cb02 +│ fix: remove alt labels, fix curl_close deprecation, fix PeerTube description param +○ mqoyqups pontoporeia@happyngreen.fr 2026-05-11 11:24:57 42722c21 +│ feat: PeerTube channel by name, test button, always-visible FilePond pools +○ qmoswsvt pontoporeia@happyngreen.fr 2026-05-11 11:15:06 679120b6 +│ feat: shared SMTP credentials + resumable PeerTube upload + embed improvements +○ sxpsrqsl pontoporeia@happyngreen.fr 2026-05-11 11:01:25 fd3ad3d3 +│ feat: add PeerTube alternate audio/video labels and FilePond pools +○ qrtmmwro pontoporeia@happyngreen.fr 2026-05-11 10:31:19 2fb392f6 +│ fix: make schema.sql fully idempotent — add IF NOT EXISTS to all CREATE INDEX, CREATE TRIGGER, and CREATE VIEW statements +○ pylyqurz pontoporeia@happyngreen.fr 2026-05-11 04:45:23 6745734d +│ feat(backup): deploy cron-based SQLite backups to production +○ pqnovwxx pontoporeia@happyngreen.fr 2026-05-11 03:43:09 164df763 +│ fix(production): fix multiple remote server errors from nginx logs +○ rxpvwzkt pontoporeia@happyngreen.fr 2026-05-11 03:43:09 cfc55073 +│ feat(admin): add htmx toast feedback for settings checkboxes in contenus.php +○ sstzwlpk pontoporeia@happyngreen.fr 2026-05-11 03:35:43 677f5050 +│ feat(deploy): upload deploy-server.sh, run migrations, fix migrate.sh server layout +○ mysnnsru pontoporeia@happyngreen.fr 2026-05-11 03:35:43 d6548157 +│ feat(deploy): upload and run deploy-server.sh before permission verification, run migrations +○ unnmorqw pontoporeia@happyngreen.fr 2026-05-11 03:35:43 0ff5abbe +│ feat(deploy): upload and run deploy-server.sh before permission verification +○ rqrkkkuo pontoporeia@happyngreen.fr 2026-05-11 03:35:43 178a8577 +│ feat(deploy): add deploy-verify-permissions recipe to check ownership/permissions after rsync +○ kpvxplms pontoporeia@happyngreen.fr 2026-05-11 03:35:43 ac53d0da +│ fix: settings handler was treating hidden value="0" as truthy +○ kuslmqps pontoporeia@happyngreen.fr 2026-05-11 03:35:43 97abb41b +│ fix: use HTMX auto-save with hidden value=0 inputs in separate fieldsets +○ qqssmzsl pontoporeia@happyngreen.fr 2026-05-11 03:35:43 bd4d5bff +│ fix: split formulaire section into separate forms to avoid cross-resets +○ tmklpprq pontoporeia@happyngreen.fr 2026-05-11 03:35:43 7a2525e0 +│ fix: replace HTMX auto-save checkboxes with regular form + Enregistrer button +○ rswkvuzm pontoporeia@happyngreen.fr 2026-05-11 03:35:43 618356af +│ fix: settings checkboxes could not be unchecked + could not be checked independently +○ wstuyzym pontoporeia@happyngreen.fr 2026-05-11 03:35:43 18d9bd1a +│ feat: implement SQLite backup & data integrity plan (Phases 2-4) +○ ouqzmwvn pontoporeia@happyngreen.fr 2026-05-11 03:35:42 28608d2c +│ feat: implement SQLite backup & data integrity plan (Phases 2-4) +○ psvklxsu pontoporeia@happyngreen.fr 2026-05-11 03:35:42 c7012c91 +│ fix: exclude entire var/ from rsync --delete to preserve logs +○ nlvsnzkz pontoporeia@happyngreen.fr 2026-05-11 03:35:42 9c4138fa +│ fix: add hx-swap="none" to admin auto-save checkboxes to prevent page swap +○ olzzwmwr pontoporeia@happyngreen.fr 2026-05-11 03:35:42 ae12c463 +│ feat: require 3 mots-clés in partage, language asterisk toggle, admin auto-save checkboxes +○ nqmqrqmo pontoporeia@happyngreen.fr 2026-05-11 03:35:42 f6544c5d +│ fix: obfuscate email in contact links, raise rate limits, make Libre toggleable +○ ryqustol pontoporeia@happyngreen.fr 2026-05-11 03:35:42 edfc1fd0 +│ import dialog: add Terminé button, fix padding, make success permanent, avoid POST resend +○ snsxswsz pontoporeia@happyngreen.fr 2026-05-11 03:35:42 4be7b931 +│ fix: jury-fieldset.php calling old() with wrong signature for partage +○ wpspurnq pontoporeia@happyngreen.fr 2026-05-11 03:35:42 c361702d +│ Make Auteur(s) and Accès columns sortable alphabetically in admin list +○ zxryvzkv pontoporeia@happyngreen.fr 2026-05-11 03:35:42 d2570bc3 +│ Improve recap page + fix CSV import for jury roles +○ vqxpnkox pontoporeia@happyngreen.fr 2026-05-10 22:20:29 9dd791cd +│ fix migration 028, promoteurice repopulation, DB bootstrap +○ xznsyswm pontoporeia@happyngreen.fr 2026-05-10 22:18:05 b952709e +│ FilePond production hardening +○ vqnonzxp pontoporeia@happyngreen.fr 2026-05-10 21:31:56 99c51201 +│ remove accept attributes from FilePond inputs, rely on beforeAddFile validation +○ rlqsxozn pontoporeia@happyngreen.fr 2026-05-10 21:29:40 9b9445fe +│ fix file validation: use extension-based check in beforeAddFile, drop plugin +○ wmzntpxp pontoporeia@happyngreen.fr 2026-05-10 21:25:45 fa1697bf +│ add filepond-plugin-file-validate-type + server-side file warnings +○ stmuuwmv pontoporeia@happyngreen.fr 2026-05-10 21:19:58 ccdf1c36 +│ add server-side video/audio size limits (2 GB) and fix missing annexe queue validation +○ tqwpzqtq pontoporeia@happyngreen.fr 2026-05-10 21:10:51 2524574a +│ (no description set) +○ wvkvvpmv pontoporeia@happyngreen.fr 2026-05-10 21:06:35 dc099a5f +│ fix annexe validation, FilePond type validation, and styling +○ rptplqsr pontoporeia@happyngreen.fr 2026-05-10 21:06:35 703b5dc2 +│ Add FilePond pools for couverture, note_intention, video, audio +○ zmvkxops pontoporeia@happyngreen.fr 2026-05-10 21:06:35 39ce6dbf +│ (no description set) +○ yuuqpnwp pontoporeia@happyngreen.fr 2026-05-10 21:06:34 558d7c06 +│ Fix FilePond integration: decouple format extras from main file inputs +○ ztztkrsu pontoporeia@happyngreen.fr 2026-05-10 21:06:34 017e2657 +│ (no description set) +○ qwltvwqq pontoporeia@happyngreen.fr 2026-05-10 21:06:34 fe503dcd +│ Replace custom file-upload-queue.js with FilePond +○ pnotuyzv pontoporeia@happyngreen.fr 2026-05-10 21:06:34 191d2d7a +│ (no description set) +○ urrtosru pontoporeia@happyngreen.fr 2026-05-10 21:06:34 02272555 +│ fix: stop checkbox click in admin index from navigating to recapitulatif +○ ymrzpvln pontoporeia@happyngreen.fr 2026-05-10 21:06:34 2ec34999 +│ fix: spurious HTMX console warnings from checkbox-list default hx-include +○ muzswpkw pontoporeia@happyngreen.fr 2026-05-10 21:06:34 404696bf +│ fix: repair form submission with queued files + add comprehensive debug logging +○ ownwlmpo pontoporeia@happyngreen.fr 2026-05-10 21:06:34 6e99f3e9 +│ Replace HTMX+PHP file upload queues with client-side JS +○ xlprulto pontoporeia@happyngreen.fr 2026-05-10 21:06:34 52ee3530 +│ Replace HTMX+PHP file upload queues with client-side JS +○ qukzomwx pontoporeia@happyngreen.fr 2026-05-10 21:06:34 0e31760f +│ Replace HTMX+PHP file upload queues with client-side JS +○ mqnvolnz pontoporeia@happyngreen.fr 2026-05-10 21:06:34 db300c32 +│ Replace HTMX+PHP file upload queues with client-side JS +○ utnzmtom pontoporeia@happyngreen.fr 2026-05-10 21:06:34 e2cd7804 +│ Replace HTMX+PHP file upload queues with client-side JS +○ yrpmtrsy pontoporeia@happyngreen.fr 2026-05-10 16:35:04 0b59d667 +│ fix: scoped HTMX file validation, add validation to TFE/PeerTube inputs +○ mxvvqust pontoporeia@happyngreen.fr 2026-05-10 16:32:34 a66ff5c1 +│ refactor: session-based incremental TFE upload via HTMX, drop SortableJS +○ uvnvvyny pontoporeia@happyngreen.fr 2026-05-10 15:55:35 04c1c3c6 +│ fix: req annexes, add HTMX inline file validation (MIME/size) +○ yztqkpzz pontoporeia@happyngreen.fr 2026-05-10 15:31:02 dd64d5c9 +│ fix: TFE and annexes files not saved, plus keyword validation and file preview CSS +○ roqtyzln pontoporeia@happyngreen.fr 2026-05-10 15:05:24 94f0df20 +│ feat: obfuscate all email addresses and mailto links as HTML entities +○ svprwkko pontoporeia@happyngreen.fr 2026-05-10 14:51:25 a90b8b4d +│ fix: add help email, preserve file names on validation error, license fix +○ kvyyvksn pontoporeia@happyngreen.fr 2026-05-10 14:51:25 bbfd786c +│ fix: add help email, preserve file names on validation error, license fix +○ moumuszm pontoporeia@happyngreen.fr 2026-05-10 14:26:45 ab4601b9 +│ Fix language-search fragment +○ xvqonoyt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 64b18fdb +│ Add sidebar TOC, simplify Données Secondaires section +○ tyotlpxt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 22799820 +│ Add Mots-clés and Langues management to contenus page +○ sntroxlt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 47670245 +│ Move Formulaire settings to contenus, remove delete-all TFE +○ qxuprqpt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 1b5d0db6 +│ Add language-search component for Autre Langue input + active search in lists +○ sttrwkly pontoporeia@happyngreen.fr 2026-05-10 14:26:45 58623625 +│ CSV importer: boolean and ap variants/typos +○ pntwsqvs pontoporeia@happyngreen.fr 2026-05-10 14:26:45 b83b316e +│ Rename author_email→contact_interne, author_show_contact→contact_public across view/controllers/templates +○ vpwuyvyv pontoporeia@happyngreen.fr 2026-05-10 14:26:45 43cf6b4b +│ Fix: email clearing in findOrCreateAuthor, htmlspecialchars(null) crash in old(), dead contact_interne field, access_type_id radio clearing +○ szktqmnn pontoporeia@happyngreen.fr 2026-05-10 14:26:45 809d77b1 +│ Error tests, FK violations fix +○ unnnvyqs pontoporeia@happyngreen.fr 2026-05-10 14:26:45 6ca873c8 +│ Admin mobile block: fix inline style beating media query +○ nzllwsxo pontoporeia@happyngreen.fr 2026-05-10 14:26:45 ba41cc9e +│ Fix bulk form nesting, remove count bar, stopPropagation on actions +○ vumvtlyz pontoporeia@happyngreen.fr 2026-05-10 14:26:45 efd01b93 +│ Rename Liens étudiant·e, add link name + edit dialog +○ somsyvxz pontoporeia@happyngreen.fr 2026-05-10 14:26:45 c8be0aae +│ Bulk bar anti-shift, tags icons, AP no-wrap, credits reorder +○ zlkousvq pontoporeia@happyngreen.fr 2026-05-10 14:26:45 73ef6301 +│ Add back buttons, row click navigation, remove Voir button +○ zmuyukuk pontoporeia@happyngreen.fr 2026-05-10 14:26:45 db021566 +│ Replace emoji/text buttons with Phosphor SVG icons, add credits +○ kxwyyswm pontoporeia@happyngreen.fr 2026-05-10 14:26:45 92cea357 +│ Replace large admin index script with minimal JS +○ pkrnmpks pontoporeia@happyngreen.fr 2026-05-10 14:26:45 30ef10fd +│ Move export DB to Exporter modal, color stats +○ turvpxsq pontoporeia@happyngreen.fr 2026-05-10 14:26:45 b2b09243 +│ Refactor: Admin index +○ yxpntrsp pontoporeia@happyngreen.fr 2026-05-10 14:26:45 dff6e2af +│ add explanation hint to is_published checkbox in Backoffice fieldset +○ ntmqzyop pontoporeia@happyngreen.fr 2026-05-10 14:26:45 f6b4ac09 +│ Merge Publication fieldset's is_published checkbox into Backoffice fieldset +○ rtqxvoqk pontoporeia@happyngreen.fr 2026-05-10 14:26:45 cc65b385 +│ Remove duration_pages/duration_minutes/file_size_info; rename cc4r → cc2r in DB and code +○ klpxpwlm pontoporeia@happyngreen.fr 2026-05-10 14:26:45 adf080d1 +│ fix: resolve partage form submission issues +○ ruznqknn pontoporeia@happyngreen.fr 2026-05-10 14:26:45 8eebf684 +│ css: moved + tweaked styles to common.css +○ mttylpmt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 cbef12b5 +│ link creation: fieldset with checkboxes for objet restriction, TFE checked by default +○ wwrwtomz pontoporeia@happyngreen.fr 2026-05-10 14:26:45 dd133522 +│ switch thesis-add-header to grid layout: title | badge, subtitle spans full width +○ oolsxuow pontoporeia@happyngreen.fr 2026-05-10 14:26:45 d7ff6b42 +│ Update: subtitle below header + top gradient +○ vnprsrzm pontoporeia@happyngreen.fr 2026-05-10 14:26:45 23ec2c7b +│ remove duplicate Image de couverture in edit form — moved cover preview+removal into fichiers-fragment.php, removed duplicate from edit-existing-files-block +○ ztkmwwkl pontoporeia@happyngreen.fr 2026-05-10 14:26:45 c0668225 +│ .env and todo +○ toqvqlop pontoporeia@happyngreen.fr 2026-05-10 14:26:45 1fdd450f +│ overtype editor rounded corners +○ mswkvnyl pontoporeia@happyngreen.fr 2026-05-10 14:26:45 d87158db +│ Cleanup and normalize headers +○ uxqyvyvt pontoporeia@happyngreen.fr 2026-05-10 14:26:45 f1e2651f +│ refactor public search bar +○ xvtqzyom pontoporeia@happyngreen.fr 2026-05-10 14:26:45 58521915 +│ Redesign focus rings +○ vrqmwvrx pontoporeia@happyngreen.fr 2026-05-10 14:26:45 10cfa469 +│ unify form element styles in common.css +○ rvvmuxsz pontoporeia@happyngreen.fr 2026-05-10 14:25:53 0be7f533 +│ style: tweaking admin section + some public +○ towstynu pontoporeia@happyngreen.fr 2026-05-09 14:44:48 b7ff2776 +│ EDIT THIS → refactor: unify edit mode Format+Fichiers with add/partage HTMX fragment +○ qnttznqt pontoporeia@happyngreen.fr 2026-05-09 14:44:48 3cdd3893 +│ Refactor: Form improvements and cleanup: note contextuel, annexes, fichiers +○ wqmrrrwu pontoporeia@happyngreen.fr 2026-05-09 14:44:48 a8aeb0d6 +│ feat: dual upload system — direct file storage + PeerTube API integration +○ nsnurqzv pontoporeia@happyngreen.fr 2026-05-09 14:44:48 5fbd6243 +│ fix: justfile shebang recipes indentation (spaces → tabs) +○ rqzyxzyt pontoporeia@happyngreen.fr 2026-05-09 14:44:48 4c030bd5 +│ Refactor + feat: unify format/fichiers HTMX fragment, reorder format types, add file constraints, fix admin auth +○ muzruvwl pontoporeia@happyngreen.fr 2026-05-09 14:44:48 7bedda02 +│ Encrypt SMTP password at rest with AES-256-GCM +○ ovqmwmol pontoporeia@happyngreen.fr 2026-05-09 14:42:07 627b0c4e +│ Remove required from all admin add/edit form inputs +○ vpomqrst pontoporeia@happyngreen.fr 2026-05-08 22:58:25 b8331a08 +│ fix: replace .php-suffixed public URLs blocked by nginx catch-all +○ qnxltqyq pontoporeia@happyngreen.fr 2026-05-08 22:58:25 189f4368 +│ fix: 403 on /language-autre-fragment.php — add explicit nginx location block +○ nslznwmk pontoporeia@happyngreen.fr 2026-05-08 22:58:25 6ba13e00 +│ test: add ShareLinkTest + PureLogicTest (TDD), fix coverMap undefined in SearchController +○ nvntmkyx pontoporeia@happyngreen.fr 2026-05-08 22:58:25 15d54fa1 +│ add Néerlandais language option and make language_autre conditionally required +○ qxqyzmzp pontoporeia@happyngreen.fr 2026-05-08 22:58:25 f3d96155 +│ merge banners into covers: remove banner field, migrate files, add covers to search/home/repertoire cards +○ rxnnnvpu pontoporeia@happyngreen.fr 2026-05-08 22:58:05 e3896811 +│ Fix migrations and deploy issues + errors + linting +◆ pqntkzml pontoporeia@happyngreen.fr 2026-05-07 23:39:41 main bdd95341 +│ Extract shared TFE form partial — single source of truth for add/edit/partage +~