Files
xamxam/TODO.md
Pontoporeia 928e074d24 fix: update dev server PHP limits in justfile to match large video uploads
The just dev command hardcodes upload_max_filesize=512M and
post_max_size=520M via -d flags, which override .user.ini.
Raised to 8192M/8704M to match the JS-side 8GB video size
caps.  Also raised max_execution_time and max_input_time to
600s to accommodate large file transfers and PeerTube uploads.
2026-06-15 16:35:13 +02:00

4.4 KiB
Raw Blame History

TODO

Last updated: 2026-06-15 Context: Multiple fixes for upload flow: CSRF staleness, adminOld return type, PHP upload limits, FormData crash, soft-deleted languages

Pending

  • #apropos-toc-confirm Visually confirm charte + licence TOC layout renders correctly in browser
  • #aria-test-manual Test WCAG changes with VoiceOver and NVDA on full add/edit/partage form flows
  • #nojs-upload-test Test end-to-end: submit partage form with JS disabled, verify files arrive via $_FILES
  • #csp-media-iframe-deploy Deploy nginx config fix to server, test PDF iframe on /tfe?id=221

Completed

  • #filepond-csrf-stale Fix FilePond CSRF token going stale when autosave rotates it (file-upload-filepond.js)

  • #adminold-return-type Fix adminOld closure return type from :string to :string|array (FormBootstrap.php)

  • #restore-languages Un-soft-delete anglais (id=2) and néerlandais (id=71) in dev DB ✓

  • #php-upload-limits Increase PHP upload_max_filesize to 8G, post_max_size to 8.5G (.user.ini)

  • #formdata-fieldset-crash Remove leftover debug console.log that called new FormData(fieldset) (admin/footer.php)

  • #csp-media-iframe-fix Fix CSP frame-ancestors 'none' blocking PDF iframes — replaced try_files redirect with direct fastcgi_pass in location = /media so add_header CSP override survives internal nginx redirect (nginx/xamxam.conf)

  • #duration-migration Add migration to reintroduce duration_value and duration_unit columns + update views (migrations/applied/040_duration_fields.sql)

  • #duration-database Update createThesis, updateThesis, getThesisRawFields in Database (Database.php)

  • #duration-controllers Handle duration in ThesisCreateController and ThesisEditController (ThesisCreateController.php, ThesisEditController.php)

  • #duration-form Add duration fieldset (value + unit dropdown) to form template (templates/partials/form/form.php)

  • #duration-display Show duration on public TFE detail page (templates/public/tfe.php)

  • #duration-view Include duration in v_theses_full and v_theses_public (migrations/applied/040_duration_fields.sql, schema.sql, schema.sql.new)

  • #duration-bootstrapWire Wire duration variables through FormBootstrap adminFormVariables (FormBootstrap.php)

  • #cleanup-drafts Add periodic cleanup job for orphaned drafts (Database.php, justfile, deploy/xamxam-cleanup.cron, scripts/cleanup-drafts.php) ✓

  • #form-setup-helper Add FormBootstrap helper class to reduce bootstrap duplication across add/edit/partage (admin/add.php) (admin/edit.php)

  • #two-phase-commit Add two-phase commit: INSERT thesis status='draft', COMMIT, move files, UPDATE to active (ThesisCreateController.php)

  • #filepond-preserve Preserve FilePond temp file IDs on partage validation redirect (partage/index.php) (FilepondHandler.php)

  • #refactor-partage Extract partage form page chrome to templates/partage/form-page.php (partage/index.php)

  • #htmx-migration HTMX v2 migration: OverType editors, autosave handler, backend HX-Request detection ✓

  • #filepond-crash FilePond crash on TFE upload forms: root cause fixed (.filename.name), all crashes resolved ✓

  • #aria-errormessage WCAG AA: field-level aria-errormessage, aria-invalid, aria-describedby on all form fields ✓

  • #nojs-upload-fix No-JS file uploads: filepond_mode default to 0 disabled, server-side $_FILES fallback ✓

  • #autosave-partage Autosave text fields on partage form: session draft endpoint (fragments/draft.php), HTMX autosave on change/input, page-load hydration, "Brouillon enregistré" indicator, draft cleared on submit ✓

  • #autosave-partage-wire Wire formExtraAttrs, showAutosaveStatus, draft hydration, autosave-handler.js, draft cleanup into partage form (partage/index.php, partage/form-page.php) ✓

  • #mobile-responsive Mobile-responsive form layout: @media (max-width: 600px) breakpoint, 44×44px touch targets ✓

  • #aria-fieldset-fix Remove invalid required attribute from <fieldset>, keep aria-required="true", add role="group"

  • #split-form-css Split form.css into form-base.css and form-admin.css

  • #extra-css-admin Update head.php to support $extraCssAdmin for admin-only stylesheets (head.php)

Deferred / Blocked