-
1.0.8-rc25
Pre-releasereleased this
2026-10-11 02:05:29 +01:00 | 11 commits to main since this releaseAdded
- [Yavsc.Api] Notification du performer à la création d'un rendez-vous
depuis PostIt, selon ses préférences de contact, sans supprimer l'envoi Org. - [Yavsc.Api][Yavsc.Server] Notification du performer à la signature
client d'un devis (JSON ou image), enregistrée pour l'accueil PostIt
et transmise par e-mail et SignalR. - [Yavsc.Api] Nouveau point d'entrée
GET /api/v1/notifications/me
pour exposer les notifications publiques et ciblées à PostIt sur la
Home page ; les notifications d'administration restent filtrées. - [PostIt] Affichage des notifications sur la page d'accueil, avec
actualisation, indicateur de chargement et message d'erreur. Les
notifications publiques sont accessibles sans connexion et la liste
est rechargée lors d'un changement de session.
Changed
-
[PostIt] Insertion des liens de fichiers dès leur ajout au brouillon ;
les liens provisoires des nouveaux billets sont résolus au premier
enregistrement. Save conserve l'édition ouverte et est mis en valeur
lorsque le titre, le corps ou les pièces jointes sont modifiés. -
[Projet] Instructions Copilot persistantes : mise à jour du changelog
par défaut à chaque commit, avec justification explicite des exceptions.
Fixed
-
[PostIt] Les liens Markdown des pièces jointes utilisent désormais
le même filtre de nom que l'upload serveur, avant l'encodage URL.
Le libellé conserve le nom original, notamment ses accents. -
[Yavsc.Abstract][Yavsc.Blogs] Encodage des caractères non supportés
dans les noms de fichiers téléversés avec_au lieu de#, pour
éviter les fragments d'URL et permettre le téléchargement via les
fichiers statiques, notamment pour les noms accentués. -
[Yavsc.Api][Yavsc.Blogs] Les appels API et la bande passante sont
désormais enregistrés côté serveur pour les requêtes authentifiées :
le middleware de télémétrie est maintenant branché après
l'authentification, ce qui permet de comptabiliserApiCallset
BandwidthMbau lieu d'enregistrer des zéros.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
1 download
- [Yavsc.Api] Notification du performer à la création d'un rendez-vous
-
1.0.8-rc24
Pre-releasereleased this
2026-10-09 18:32:47 +01:00 | 21 commits to main since this releaseAdded
- [PostIt] Reconnection automatique aux salons de discussion au reconnect
Changed
- [PostIt] La liste des billets et l'éditeur Markdown se partagent
l'espace disponible et défilent séparément ; un séparateur permet
de redimensionner les deux zones.
Fixed
- [PostIt] Défilement des articles longs en édition et en aperçu :
suppression de la limite de hauteur qui masquait le contenu Markdown
et du défilement imbriqué autour d'AvaloniaEdit. Six tests headless
couvrent les barres automatiques, le redimensionnement et le
défilement indépendant de la liste.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
-
1.0.8-rc23
Pre-releasereleased this
2026-10-09 16:02:01 +01:00 | 26 commits to main since this releaseAdded
- [PostIt] Gestion native du compte inspirée de
/Manage: modification
du nom d'utilisateur, du nom complet et de l'adresse, téléversement
d'avatar, confirmation e-mail, préférence de courriel mensuel,
création ou changement de mot de passe et activation/désactivation
de l'authentification à deux facteurs. - [PostIt][Yavsc.Api] Sélection d'un agenda Google, gestion séparée des
comptes bancaires, dissociation des connexions externes et suppression
du compte avec confirmation du nom d'utilisateur. - [PostIt] Configuration du profil professionnel et des activités,
navigation vers les cercles et les publications depuis le compte. - [PostIt][Yavsc.Api] Administration des utilisateurs avec recherche
dans les métadonnées du profil et consultation de la consommation
de ressources. - [Yavsc.Server][Yavsc.Api][Yavsc.Blogs] Suivi de la consommation de
ressources, API de synthèse et migrationResourceUsageRecords. - [Tests] Couverture des parcours profil et professionnel, de l'API de
consommation de ressources et du renouvellement des jetons :
rotation à usage unique, appels simultanés, réponses 401 concurrentes
et rejet d'un jeton de renouvellement révoqué.
Changed
- [PostIt] Réorganisation de la page de compte en sections de profil,
sécurité et préférences ; actions de modification désactivées tant
que le profil n'est pas chargé ou qu'une opération est en cours. - [PostIt] Utilisation de
PlaceholderTextà la place deWatermark
dans les pages de profil et de configuration professionnelle. - [Yavsc.Api]
GET account/merenvoie le DTO partagé attendu par
PostIt, avec l'état de sécurité, les connexions externes, les comptes
bancaires et les compteurs du compte.
Fixed
- [Yavsc.Api] Enregistrement des services ASP.NET Identity et des stores
EF nécessaires àUserManager<ApplicationUser>: leur absence
empêchait l'activation du contrôleur de compte et provoquait une 500. - [Yavsc.Api] Chargement du profil : réponse adaptée lorsqu'un jeton
ne contient pas d'identifiant utilisateur ou que le compte n'existe
plus, au lieu d'une exception serveur. - [PostIt] Synchronisation de tous les chemins de renouvellement des
jetons, y compris après une 401 et au démarrage : les appels
concurrents ne réutilisent plus le mêmerefresh_token. Un rejet
invalid_grantefface la session et invite à se reconnecter. - [PostIt] Effacement des informations obsolètes après un échec de
rechargement du profil et normalisation des valeurs de calendrier
lors de la sauvegarde. - [PostIt][Yavsc.Api] Préservation de l'identité du profil professionnel
lors de son enregistrement. - [Yavsc.Api] Les coordonnées bancaires ne sont plus modifiées à partir
d'un résumé agrégé : opérations dédiées avec contrôle de propriété
et validation de longueur des champs.
Known limitations
- [PostIt] L'ajout d'un nouveau fournisseur OAuth et la gestion des
crédits ne sont pas encore disponibles dans l'interface native.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- [PostIt] Gestion native du compte inspirée de
-
1.0.8-rc22
Pre-releasereleased this
2026-10-05 14:48:55 +01:00 | 39 commits to main since this releaseFixed
User experience login into PostIt
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
3 downloads
-
Source code (ZIP)
-
1.0.8-rc21
Pre-releasereleased this
2026-10-04 21:58:50 +01:00 | 41 commits to main since this releaseFixed
User experience editing the blog article.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
4 downloads
-
Source code (ZIP)
-
1.0.8-rc20
Pre-releasereleased this
2026-10-04 00:43:44 +01:00 | 46 commits to main since this releaseChat SignalR fonctionnel de bout en bout (connexion, salons multiples,
envoi/réception de messages), enregistreur audio et localisation dans
PostIt, intégration Live.Avalonia démarrée, et reverse-proxy nginx
apprêté pour WebSocket.Added
- [PostIt] Interface de chat : page
ChatPage(connexion au hub,
saisie du nom de salon, liste des messages et des membres présents),
entrée depuis la page d'accueil. - [PostIt] Envoi de messages dans un salon joint : DTO
ChatMessage
(Name/Room/Message) pour l'événementReceiveMessage, saisie avec
envoi surEnter, commande inactive tant qu'aucune salle n'est en
focus (le hub refuse l'envoi hors salon,LabNoJoinNoSend). - [PostIt] Modèle multi-salles côté client :
JoinedRooms,
SelectedRoom(salle en focus), messages et utilisateurs indexés par
salle (FocusedMessages/FocusedUsers), ComboBox de choix de la
salle active ; unJoinsur une salle déjà jointe ne fait que
changer le focus. - [PostIt] Enregistreur audio (
AudioRecorder, interface
IPCMProcessor) et ressources de localisation
(Resources.{resx,en-EN,pt-PT}). - [PostIt][WIP] Début d'intégration Live.Avalonia (preview XAML à
chaud ; encore KO). - [contrib] Bloc
location /chathubdanstemplate.vhost: upgrade
WebSocket (Upgrade/Connection),proxy_read_timeout 3600set
proxy_buffering off— sans quoi la connexion SignalR tombait au
premier silence ou l'upgrade échouait derrière nginx.
Changed
- [PostIt]
StatusNoticedéplacé deModelsversViewModelset
enrichi d'une commande d'action optionnelle (CheckCommand+
CheckCommandLabel, interfaceIWithLabel) : le bandeau de statut
propose désormais l'action contextuelle (Connecter / Déconnecter /
Reconnecter / Vérifier la connexion). - [PostIt]
ChatViewModelsuit le cycle de vie complet de la
connexion : handlersReconnecting/Reconnected/Closedde
WithAutomaticReconnect, pour refléter l'état réel au lieu d'un
IsConnectedoptimiste. - [Yavsc.Api]
AddSignalR().AddJsonProtocol(IncludeFields = true):
ChatRoomInfon'expose que des champs publics, que System.Text.Json
ne sérialise pas par défaut — le client recevait des objets vides
(Namenull,Usersvide) et la liste des salons joints n'était
jamais alimentée. - [Yavsc.Server]
IConnexionManager.OnConnectedprend leuserName
en paramètre (résolu depuis les claims dansChatHub) au lieu de le
relire depuis un dictionnaire jamais alimenté. - [PostIt.Android]
network_security_config.xmldéplacé sous
Resources/xml/(chemin canonique Android).
Fixed
- [Yavsc.Server]
KeyNotFoundExceptiondans
HubConnectionManager.OnConnectedà chaque connexion SignalR :
ChatUserNames(etChatCxIds) n'étaient jamais alimentés — relique
d'unSetUserNamedisparu lors d'une refactorisation. L'exception
dansOnConnectedAsyncfaisait fermer la connexion par le hub, et
PostIt affichait « Déconnecté (The server closed the connection…) »
immédiatement après la connexion. - [PostIt] URL du hub SignalR : retrait du préfixe
/api/v1de
ApiUrlavant d'apposerConstants.ChatHubPath(le hub est mappé à
la racine du service, pas sous le préfixe versionné). - [PostIt] La
StatusBarde la page chat référençaitGrid.Row="4"
sur une grille à 3 rangées (rangée hors limites, bandeau invisible).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- [PostIt] Interface de chat : page
-
1.0.8-rc19
Pre-releasereleased this
2026-09-27 21:29:58 +01:00 | 59 commits to main since this release[PostIt] Blogs UX
Fixed
La saisie du billet est maintenant plutôt possible,
en petit écran.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
-
Source code (ZIP)
-
1.0.8-rc18
Pre-releasereleased this
2026-09-26 01:51:28 +01:00 | 65 commits to main since this releaseAccès aux fichiers personnels PostIt rendu fonctionnel de bout en bout
(arbre de stockage indexé par le login, pas par lesub), boutons
d'action des listes réparés (binding$parent), revendicationname
enfin présente dans les access tokens (branchement duProfileService),
et négociation HTTP/3 côté client PostIt.Added
- [PostIt] Négociation HTTP/3 (QUIC) pour les appels API Yavsc :
DefaultRequestVersion = 3.0,DefaultVersionPolicy = RequestVersionOrLowersur leHttpClientpartagé deYavscApiClient,
avec repli h2/h1.1 où QUIC n'est pas disponible (WASM fetch, Android/
desktop sans libmsquic). - [Tests]
MyFilesPageHeadlessTests: monteMyFilesPagevia
NavigationPage+Window.Show()et vérifie que chaque bouton de
ligne (Télécharger / Supprimer) a saCommandliée, est armé
(CanExecute) et déclenche l'appel API au clic. - [Tests]
Remoting.PasswordToken_carries_name_claim_equal_to_login:
mint un vrai JWT via le token endpoint IdentityServer (password grant,
openid profile) et asserte que l'access token portename=login et
queGetUserName()résout vers ce login. - [Tests]
FileSystemApiTests.Get_fs_lists_files_stored_under_the_user_login:
découplesubet login, téléverse sous le login, et asserte que
GET /api/v1/fsretourne le fichier (et que le répertoire nommé d'après
lesubn'existe pas).
Changed
- [Yavsc.Org] Branchement du
ProfileServicecustom
(AddProfileService<ProfileService>()après
AddAspNetIdentity<ApplicationUser>()). La classe était du code mort :
IdentityServer8 retombait sur son profile service par défaut, qui
n'émet que les claims listés dans lesUserClaimsdes API resources.
namen'en faisait jamais partie, donc tout access token était sans
nameetGetUserName()résolvait ànullsur les hosts ressources
(Blogs/Api) — cause du 500 sur l'upload MyFiles et du
User.Identity.Nameinjoignable. Le service émet désormais
name=user.UserName,emailet les rôles pour tout client dont
lesAllowedScopescontiennentprofile, indépendamment du caller. - [Yavsc.Server]
ServiceExtensions:NameClaimType = JwtClaimTypes.Name,MapInboundClaims = false(conserver les noms
courts de claims tels qu'émis). - [Yavsc.Blogs]
FileSystemHelpers.EnsureDestinationDirectoryutilise
GetUserName()(claimname) au lieu deUser.Identity.Namepour
la racine de stockage par utilisateur. - [Tests]
WebServerFixture:AccessTokenType = 0(Jwt dans IS8 ;
1 = Reference, l'inverse de Duende) ;openid+profilesur le client
de test ; réensemencement des identity resources openid/profile dans
ReseedAuthTestData(unResetAndMigrateDatabasevide le store
in-memory partagé et les laissait absentes →invalid_scope). - [Tests]
TestTokenIssuer.Issuegagne un paramètrenameoptionnel
(défaut = subject) pour refléter la forme production où
sub(GUID) ≠name(login). - [Tests]
BillingServiceTests:[Collection("Yavsc Server")]pour
sérialiser avec le build d'hôte qui mute les registres statiques
BillingService/Config(race parallèle pré-existante).
Fixed
- [Yavsc.Blogs] La liste
GET /api/v1/fscherchait sous
{Blog}/{sub-GUID}(User.GetUserId()), alors que l'arbre de
stockage perso est indexé par le login partout ailleurs
(EnsureDestinationDirectoryécrit sous{Blog}/{name-claim},
le endpoint de téléchargement et les avatars utilisent
user.UserName). Une fois l'upload corrigé, les fichiers
atterrissaient sous{Blog}/{login}tandis que la liste cherchait
sous{Blog}/{GUID}— un arbre vide — d'où la page PostIt
« Mes fichiers » qui ne listait rien.GetDirrésout désormais
l'utilisateur en base et liste soususer.UserName.
UploadedFile.OwnerIdrestesub, doncEnrichWithFileIds
interpole toujours paruid. - [PostIt] Boutons d'action des lignes de liste grisés et inactifs au
clic (Télécharger / Supprimer / Joindre sur MyFiles ; download/detach
sur les listes de pièces jointes deBillingQueryDetailsPageet
EstimateEditionPage). Le binding$parent[vm:XxxViewModel].Cmd
cherchait un ancêtre CONTRÔLE de typeXxxViewModel— un viewmodel,
pas un contrôle — donc résolvait ànullet leButtonrestait
désactivé (grisé) et inerte au clic. Corrigé en
$parent[ContentPage].((vm:XxxViewModel)DataContext).Cmd(syntaxe
déjà en vigueur dansCirclesPage/EstimateListPage). - [PostIt] Les messages de la barre de statut (
StatusBar) n'étaient
pas sélectionnables/copiables : le texte était unTextBlock(non
sélectionnable dans Avalonia). Remplacé parSelectableTextBlock. - [Yavsc.Blogs] La suppression d'un fichier (
DELETE api/v1/fs/{name})
renvoyait un 40x alors que le fichier était bien supprimé du disque.
DeleteUserDirOrFile(etDeleteUserFile) lisaient
FileInfo.Lengthaprèsfi.Delete(); orFileInfo.Length
lèveFileNotFoundExceptionune fois le fichier disparu — lecatch
du contrôleur transformait cette exception en 400, d'où le message
perçu « le fichier n'existe pas sur le serveur » tandis que la
suppression avait réussi. La taille est désormais capturée avant la
suppression. - PostIt default settings
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
2 downloads
- [PostIt] Négociation HTTP/3 (QUIC) pour les appels API Yavsc :
-
1.0.8-rc17
Pre-releasereleased this
2026-09-25 18:42:40 +01:00 | 78 commits to main since this releaseFichiers utilisateur et pièces jointes sur les devis/demandes (PostIt +
API), système de générationcontrib(vhosts nginx HTTP/3 edge +
appsettings jq + QUIC logiciel Kestrel), et correction du bug de
production oùIsPublisheddisparaissait du payload de liste du blog API.Added
- [PostIt] Espace de stockage personnel (« MyFiles ») : page de gestion
des fichiers de l'utilisateur, entrée depuis la page d'accueil. - [PostIt] Pièces jointes aux devis et aux demandes : attachement depuis
le détail de demande et la page d'édition de devis. - [Yavsc.Api] Endpoints d'attachement de fichiers sur les devis
(EstimateApiController) et les demandes front-office
(FrontOfficeApiController). - [Yavsc.Api.Client]
UserFilesApiClient+ DTOs associés ; méthodes
d'attachement surEstimateApiClientetFrontOfficeApiClient. - [Yavsc.Server] Modèles
EstimateAttachedFile,QueryAttachedFile,
BlogAttachedFile,AttachFileRequest; migration EF Core
UserFileAttachments. - [contrib] Système de génération
Makefile: vhosts nginx HTTP/3 edge
(template.vhost,QUIC_OPTS), appsettings générés via jq
(template.appsettings-{org,api,blogs}.json, échappement JSON-safe des
secrets), QUIC logiciel Kestrel (Http1AndHttp2AndHttp3), et
README.nginx.md. - [Tests] Projet
Yavsc.Server.Tests: tests du service
BlogSpotService.Details+ServerServicesFixture(SQLite:memory:
par défaut, Npgsql opt-in viaYAVSC_SERVER_TEST_DB_PROVIDER). - [Tests]
IBlogPostWireShapeTests(forme du wire blog),
EstimateAttachmentsApiTests,FrontOfficeQueryAttachmentsApiTests,
FileSystemApiTests(pièces jointes et stockage perso). - [CI] Intégration Gitleaks / analyse de secrets (
.pre-commit-config.yaml).
Changed
- [contrib]
QUIC_OPTS(reuseport) désormais activé uniquement en
production sur le vhost Org. La preprod et la prod partageant la même
IP,reuseport— légal une seule fois paraddr:port(443/udp) —
serait sinon en conflit entre preprod-Org et prod-Org et ferait refuser
la config par nginx. - [Yavsc.Api.Test]
ApiWebServerFixture: la connexion admin PostgreSQL
provient de la variable d'environnement
YAVSC_API_TEST_NPGSQL_ADMIN_CONNECTION; plus de mot de passe en
source.
Fixed
- [Yavsc.Blogs] Bug de production :
IsPublishedétait absent du payload
de la liste du blog API. Le endpointGetBlogspotretourne
IEnumerable<IBlogPost>sérialisé par System.Text.Json d'après le type
déclaré (l'interface), qui omet les propriétés du type concret —
IsPublishedvivait surBlogPost/BlogPostDtomais pas sur
IBlogPost. PostIt lisait doncIsPublished == falsepour tout billet,
y compris publiés (https://yavsc.pschneider.fr/BlogSpot/Details/13).
Corrigé en déclarantIsPublishedsurIBlogPost. - [Yavsc.Org] Accès au Swagger UI : les actions MVC scaffoldées de
CommentsController(Index/Details/…) atterrissaient sur la même route
POST api/v1/blogcommentsque l'action d'APIPost, provoquant une
SwaggerGeneratorException(conflit method/path) au chargement de
/swagger. Corrigé par[ApiExplorerSettings(IgnoreApi = true)]sur
les actions scaffoldées.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- [PostIt] Espace de stockage personnel (« MyFiles ») : page de gestion
-
1.0.8-rc16
Pre-releaseAll checks were successfulForgejo Release / release (push) Successful in 14m46sreleased this
2026-09-22 18:39:53 +01:00 | 99 commits to main since this releaseFlux de signature et de génération de devis : un devis peut désormais être
signé par les deux parties (fournisseur et client) puis téléchargé en PDF
ou TeX depuis PostIt, avec les signatures dessinées en vecteur.Added
- [PostIt] Pad de signature sur la page de validation d'un devis : on valide
ou on refuse en joignant une signature (côté fournisseur ou client), capturée
au format filaire PostIt (strokes) et envoyée sur l'acceptation. - [Yavsc.Api] Finalisation de
POST /api/v1/front/query/acceptet.../reject:
autorisation selon le rôle (fournisseur/client/admin), signature optionnelle
persistée sur l'estimate avec horodatageProviderValidationDate/
ClientValidationDateselon le côté signataire. - [Yavsc.Api]
QueryStatus.Acceptedéclaté enProAccepted/ClientAccepted
pour distinguer l'acceptation de chaque partie. - [Yavsc.Api] Endpoints de devis
GET /api/v1/front/query/{id}/estimate.texet
estimate.pdf(clé par id de query). Le flux de génération TeX/PDF est
rapatrié de Yavsc.Org vers Yavsc.Api (TeXHelpers,PdfGenerationViewModel,
BillViewComponent, modèles Bill/Estimate,_ViewImports;Program.cs
câbleAddControllersWithViews+SiteSettings). - [Yavsc.Api] Signatures du devis dessinées en TikZ vectoriel
(TeXHelpers.SignatureToTikz) en bas du document, fournisseur et client
côte à côte dans deux minipages ; plus de dépendance à un PNG de signature. - [Yavsc.Api.Client]
DownloadAsyncsur le client +GetEstimateTexAsync/
GetEstimatePdfAsync; boutons « Télécharger PDF » / « Télécharger TeX »
dans PostIt sur la page de validation du devis et le détail de commande,
avec un helperStorageProviderd'enregistrement de fichier. - [PostIt] La liste des devis se rafraîchit au retour de navigation (pop-back),
de sorte qu'un devis validé quitte immédiatement la liste du signataire. - [PostIt] Renommage des titres de liste : « Devis en attente de signature
fournisseur » / « Devis en attente de signature client ». - [Yavsc.Abstract]
SignatureTypedéplacé dansYavsc.Abstract.Billing. - [CLI] Option
-c configuration-file.jsonau lancement. - [Tests]
EstimatePdfGenerationTests: tests unitaires du pipeline
signature → TikZ → PDF (devis signé des deux côtés), assertant que le PDF
existe au chemin de sortie attendu et que seul le PDF persiste (aux/log
nettoyés) ; skip propre silualatexest absent. - [README] Dépendances système au runtime pour la génération PDF :
texlive-binaries(lualatex),texlive-luatex(luaotfload),
texlive-pictures(tikz),texlive-fonts-extra(bera).
Changed
- [Yavsc.Api]
GetOngoingEstimatesAsProviderfiltre désormais sur
ProviderValidationDate: un devis signé par le fournisseur quitte sa liste
« en attente ». - [Yavsc.Api] La génération PDF compile via le
lualatexsystème, le TeX fourni
sur l'entrée standard (/dev/stdin), le PDF écrit directement dans le
répertoire des factures (Site.Bills), les artefacts.aux/.lognettoyés
afin que seul le.pdfpersiste.
Fixed
- [Yavsc.Api]
Emergency stopà la génération PDF :lualatexsans argument
fichier lit stdin en mode terminal et s'arrête après la première ligne d'un
document multi-lignes. Corrigé en passant/dev/stdincomme nom de fichier
d'entrée — stdin est alors traité comme un fichier régulier et le document
multi-lignes compile. C'était la cause racine de l'échec en production, pas
beraniluaotfload(problèmes réels mais séparés, comblés côté paquets). - [Yavsc.Api]
I can't write on file 'estimate-1.log': le chemin relatif
Site.Bills("bills") était imbriqué quand il servait à la fois de
-output-directoryet de répertoire de travail ; résolu en chemin absolu. - [Yavsc.Api] NRE dans
RenderViewToString(RouteData /ViewData.Model
nuls) : reconstruit sur leControllerContextdu contrôleur ;IViewEngine
résolu viaIRazorViewEngine(.NET 10 n'enregistre pas deIViewEngine
unique). - [Yavsc.Api]
Layout = "null"(chaîne) dans les modèles TeX cherchait
null.cshtml; corrigé enLayout = null(null C#). - [Yavsc.Api]
texi2pdf(outil Texinfo, inadapté au LaTeX) remplacé par
lualatex. - [Yavsc.Api] Les diagnostics lualatex étaient perdus (écrits dans le
.log
qu'on supprimait) ; stdout/stderr sont désormais capturés dans le message
d'erreur, et le.logest conservé en cas d'échec.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
4 downloads
- [PostIt] Pad de signature sur la page de validation d'un devis : on valide