Files
Sharepoint-Toolbox/.planning/milestones/v1.0-phases/05-distribution-and-hardening/05-02-PLAN.md
Dev 655bb79a99
All checks were successful
Release zip package / release (push) Successful in 10s
chore: complete v1.0 milestone
Archive 5 phases (36 plans) to milestones/v1.0-phases/.
Archive roadmap, requirements, and audit to milestones/.
Evolve PROJECT.md with shipped state and validated requirements.
Collapse ROADMAP.md to one-line milestone summary.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 09:15:14 +02:00

7.5 KiB

phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
phase plan type wave depends_on files_modified autonomous requirements must_haves
05-distribution-and-hardening 02 execute 1
SharepointToolbox/Localization/Strings.fr.resx
SharepointToolbox/SharepointToolbox.csproj
true
FOUND-11
truths artifacts key_links
All French strings display with correct diacritics when language is set to French
dotnet publish produces a single self-contained EXE with no loose DLLs
path provides contains
SharepointToolbox/Localization/Strings.fr.resx Corrected French translations with proper diacritics Bibliothèque
path provides contains
SharepointToolbox/SharepointToolbox.csproj Self-contained single-file publish configuration PublishSingleFile
from to via pattern
SharepointToolbox/SharepointToolbox.csproj dotnet publish PublishSingleFile + SelfContained + IncludeNativeLibrariesForSelfExtract properties PublishSingleFile.*true
Fix all French diacritic-missing strings in Strings.fr.resx and add self-contained single-file publish configuration to the csproj.

Purpose: Addresses two of the four Phase 5 success criteria — complete French locale and single EXE distribution. These are independent file changes that can run parallel with Plan 01's test creation. Output: Corrected FR strings, publish-ready csproj.

<execution_context> @C:/Users/dev/.claude/get-shit-done/workflows/execute-plan.md @C:/Users/dev/.claude/get-shit-done/templates/summary.md </execution_context>

@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/05-distribution-and-hardening/05-RESEARCH.md

@SharepointToolbox/Localization/Strings.fr.resx @SharepointToolbox/SharepointToolbox.csproj

Task 1: Fix French diacritic-missing strings in Strings.fr.resx SharepointToolbox/Localization/Strings.fr.resx Open `Strings.fr.resx` and fix ALL the following strings. The file is XML — edit the `` elements directly. Be careful to preserve the XML structure and encoding.

Corrections (key -> wrong value -> correct value):

  1. transfer.sourcelibrary: "Bibliotheque source" -> "Bibliothèque source"
  2. transfer.destlibrary: "Bibliotheque destination" -> "Bibliothèque destination"
  3. transfer.mode.move: "Deplacer" -> "Déplacer"
  4. transfer.conflict.overwrite: "Ecraser" -> "Écraser"
  5. transfer.start: "Demarrer le transfert" -> "Démarrer le transfert"
  6. transfer.nofiles: "Aucun fichier a transferer" -> "Aucun fichier à transférer."
  7. bulkmembers.preview: "Apercu" (in the value) -> "Aperçu" (preserve the rest of the value including any format placeholders)
  8. bulksites.execute: "Creer les sites" -> "Créer les sites"
  9. bulksites.preview: "Apercu" -> "Aperçu" (preserve format placeholders)
  10. bulksites.owners: "Proprietaires" -> "Propriétaires"
  11. folderstruct.execute: "Creer les dossiers" -> "Créer les dossiers"
  12. folderstruct.preview: "Apercu ({0} dossiers a creer)" -> "Aperçu ({0} dossiers à créer)"
  13. folderstruct.library: "Bibliotheque cible" -> "Bibliothèque cible"
  14. templates.list: "Modeles enregistres" -> "Modèles enregistrés"
  15. templates.opt.libraries: "Bibliotheques" -> "Bibliothèques"
  16. bulk.result.success: "Termine : {0} reussis, {1} echoues" -> "Terminé : {0} réussis, {1} échoués"
  17. bulk.result.allfailed: "Les {0} elements ont echoue." -> "Les {0} éléments ont échoué."
  18. bulk.result.allsuccess: "Les {0} elements ont ete traites avec succes." -> "Les {0} éléments ont été traités avec succès."
  19. bulk.exportfailed: "Exporter les elements echoues" -> "Exporter les éléments échoués"
  20. bulk.retryfailed: "Reessayer les echecs" -> "Réessayer les échecs"
  21. bulk.validation.invalid: fix "reimportez" -> "réimportez" (preserve rest of string)
  22. bulk.csvimport.title: "Selectionner un fichier CSV" -> "Sélectionner un fichier CSV"
  23. folderbrowser.title: "Selectionner un dossier" -> "Sélectionner un dossier"
  24. folderbrowser.select: "Selectionner" -> "Sélectionner"

Also check for these templates.* keys (noted in research): 25. templates.capture: if contains "modele" without accent -> "modèle" 26. templates.apply: if contains "modele" without accent -> "modèle" 27. templates.name: if contains "modele" without accent -> "modèle"

IMPORTANT: Do NOT change any key names. Only change <value> content. Do NOT add or remove keys. Preserve all XML structure and comments. dotnet msbuild SharepointToolbox/SharepointToolbox.csproj -t:Compile -p:DesignTimeBuild=true -v:quiet 2>&1 | tail -5 All 25+ FR strings corrected with proper French diacritics (e, a -> e with accent, a with accent, c with cedilla). Project compiles without errors. No keys added or removed.

Task 2: Add self-contained single-file publish configuration to csproj SharepointToolbox/SharepointToolbox.csproj Add a new `` block to `SharepointToolbox.csproj` specifically for publish configuration. Place it after the existing main `` (the one with `WinExe`).

Add exactly these properties:

  <PropertyGroup Condition="'$(PublishSingleFile)' == 'true'">
    <SelfContained>true</SelfContained>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
  </PropertyGroup>

Using a conditional PropertyGroup so these properties only activate during publish (when PublishSingleFile is passed via CLI or profile). This avoids affecting normal dotnet build and dotnet test behavior.

The existing <PublishTrimmed>false</PublishTrimmed> MUST remain in the main PropertyGroup — do NOT change it.

After editing, verify the publish command works:

dotnet publish SharepointToolbox/SharepointToolbox.csproj -c Release -p:PublishSingleFile=true -o ./publish

Confirm output is a single EXE (no loose .dll files in the publish folder). dotnet publish SharepointToolbox/SharepointToolbox.csproj -c Release -p:PublishSingleFile=true -o ./publish 2>&1 | tail -3 && ls ./publish/*.dll 2>/dev/null | wc -l SharepointToolbox.csproj has PublishSingleFile configuration. dotnet publish -p:PublishSingleFile=true produces a single SharepointToolbox.exe (~200 MB) with zero loose DLL files in the output directory. PublishTrimmed remains false.

1. FR resx compiles: `dotnet msbuild SharepointToolbox/SharepointToolbox.csproj -t:Compile -p:DesignTimeBuild=true -v:quiet` 2. Publish produces single EXE: `dotnet publish SharepointToolbox/SharepointToolbox.csproj -c Release -p:PublishSingleFile=true -o ./publish && ls ./publish/*.dll 2>/dev/null | wc -l` (expect 0) 3. Full test suite still green: `dotnet test SharepointToolbox.Tests/SharepointToolbox.Tests.csproj -v quiet`

<success_criteria>

  • Strings.fr.resx contains proper diacritics for all 25+ corrected keys
  • SharepointToolbox.csproj has PublishSingleFile + SelfContained + IncludeNativeLibrariesForSelfExtract in conditional PropertyGroup
  • PublishTrimmed remains false
  • dotnet publish produces single EXE with 0 loose DLLs
  • Existing test suite unaffected </success_criteria>
After completion, create `.planning/phases/05-distribution-and-hardening/05-02-SUMMARY.md`