-
1.0.8-rc22
Pre-releasereleased this
2026-10-05 14:48:55 +01:00 | 1 commits to main since this releaseFixed
User experience login into PostIt
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
1.0.8-rc21
Pre-releasereleased this
2026-10-04 21:58:50 +01:00 | 3 commits to main since this releaseFixed
User experience editing the blog article.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
1.0.8-rc20
Pre-releasereleased this
2026-10-04 00:43:44 +01:00 | 8 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)
0 downloads
- [PostIt] Interface de chat : page
-
1.0.8-rc19
Pre-releasereleased this
2026-09-27 21:29:58 +01:00 | 21 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 | 27 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 | 40 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 | 61 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)
1 download
- [PostIt] Pad de signature sur la page de validation d'un devis : on valide
-
1.0.8-rc15
Pre-releaseAll checks were successfulForgejo Release / release (push) Successful in 5m35sreleased this
2026-09-19 16:38:26 +01:00 | 96 commits to main since this releaseAdded
- [PostIt] Saisie et envoi de pieces jointes sur un billet de blog: le client monte les fichiers en
multipart/form-datalors duSave, ajoute un lien Markdown par piece jointe a l'article, puis re-PUT le billet. Une collectionDraftAttachmentsporte les fichiers en cours d'edition. - [PostIt] Apercu Markdown dans l'editeur de blogs (integration
MarkdownViewer.Core) avec bascule edition/preview surBlogsPage. - [PostIt] Gestion des devis: page de liste
EstimateListPage(vues client et prestataire), page d'editionEstimateEditionPageavec lignes de devis (EstimateLineItemViewModel), et flux de validation d'un devis. - [PostIt] Flux des requetes en cours cote prestataire (
ProviderOngoingRequestsPage) avec tri persistant. - [Yavsc.Api] Endpoints devis
GET /api/v1/estimate/asclientetGET /api/v1/estimate/asproviderpour lister les devis en cours selon le role. - [Yavsc.Api] Endpoint
GET /api/v1/billing/provider/ongoingetPOST /api/v1/billing/prosign/{billingCode}/{id}pour le flux prestataire. - [Yavsc.Api.Client]
EstimateApiClient+ DTOs (EstimateDto,EstimateLineDto) pour le pipeline devis cote client lourd. - [Yavsc.Api.Client] Reprise de l'upload de fichiers blog dans
BlogApiClient(CreateMultipartContent,BlogUploadFile) — la meme forme filaire que PostIt utilise en production. - [Yavsc.Abstract]
FileServerUrlHelperspour deriver les URLs publiques des fichiers utilisateur depuis l'autorite OIDC (alignement surUserFilesPath). - [Yavsc.Server]
BlogSpotService.AttachFiles: ecrit les pieces jointes sous la racine des fichiers utilisateur ({UserFilesDirName}/{user}/blogs/{postId}/{fileName}). - [Yavsc.Blogs]
BlogApiControlleracceptemultipart/form-data(champblog+ partsfile) surPOSTetPUT /api/v1/blogspot, en plus du payload JSON existant. - [PostIt] Variable d'environnement
POSTIT_SETTINGS_JSONpour surcharger les parametres au lancement (utile en CI/test). - [Yavsc.Server] Migration EF
fileACL:CircleAuthorizationToFilegagneOwnerId+Accesset un graphe proprieetaire, base du controle d'acces fichier par cercle. - [Yavsc.Server] Migration EF
genericEstimate:Estimate.Querypasse deRdvQueryaNominativeServiceCommand?pour supporter des devis non lies a un RDV. - [Yavsc.Server] Migrations EF
NominativeServiceCommandetAddHairCutQueryLocationId(localisation de la coupe). - [CI] Integration du scan de secrets Gitleaks dans le pipeline Forgejo +
.gitleaksignore. - [Tests] Non-regressions: round-trip multipart blog (
BlogApiTests,CreateMultipartContentTestsforme + serveur),BlogAttachmentLinkTests,FileServerUrlHelpersTests,EstimateApiControllerTests, VMsEstimateList/EstimateEdition/ProviderOngoingRequests,BillingControllerTests(filtrage par utilisateur),GetOpenIdConfigurationcontre l'hote de test.
Changed
- [PostIt] Renommage
MainPage->BlogsPage(etPushMainPageAsync->PushBlogsPageAsync) pour refletter le role de la page. - [PostIt] Refacto des
SiteSettings: reorganisation des parametres, nouvelles valeurs par defaut, et indications plus claires dans lesappsettings. - [Yavsc.Api]
BillingControllerne liste plus que les codes billing de l'utilisateur authentifie (filtre parUserId), au lieu de l'ensemble des requetes prestataire. - [Yavsc.Api] Mutualisation d'un
YavscMessageSenderpartage dans l'hote API (au lieu d'une instance par controller). - [Yavsc.Org] La detection du doublon d'email a l'inscription utilise desormais le code erreur generic
DbException23505 (fournisseur-agnostique) au lieu dePostgresException, pour rester correct en test SQLite. - [PostIt]
YavscApiClienttolere les corps vides (204 No ContentsurPUT /blogspot/{id}) au lieu de lever unJsonException. - [CI] Le pipeline compile avant les tests, installe les dependances natives, et retire le
ItemGroup.Using Include=Xunitsuperflu.
Fixed
- [PostIt] Suppression d'un faux message d'erreur affiche apres un
PUT /blogspot/{id}reussi (204 traite comme succes, plus comme une reponse vide invalide). - [PostIt] Correction de la creation des liens de pieces jointes (
TryAppendAttachmentLinks) : segment proprietaire et cheminblogs/{id}/{fileName}alignes sur ce queAttachFilesecrit reellement. - [Yavsc.Blogs] Correction de l'upload / de la persistance des pieces jointes (
FileSystemHelpers+BlogApiControllermultipart). - [Tests] Stabilisation des suites: seeds billing avec metadonnees d'audit,
GetOpenIdConfiguration_returns_okcontre l'hote de test, retraits d'assertions abusives, tests SQLite verts. - [PostIt] Nettoyage de fichiers temporaires accidentels et ignore des repertoires
tmpdans le depot.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
4 downloads
- [PostIt] Saisie et envoi de pieces jointes sur un billet de blog: le client monte les fichiers en
-
1.0.8-rc14
Pre-releaseAll checks were successfulForgejo Release / release (push) Successful in 4m39sreleased this
2026-09-06 20:34:34 +01:00 | 159 commits to main since this releaseAdded
- [PostIt] Ajout d'un
BillingQueryDetailsPageViewModelet de sa page associee pour afficher le detail d'une commande billing depuis l'historique. - [PostIt] Ajout d'un mode detail avec section metier (statut, date, description, motif, infos) et section technique repliable (code, client, provision, lieu, prestations).
- [PostIt] Ajout d'un badge de statut enrichi (couleur + pictogramme) sur le detail d'une commande pour visualiser l'etat en un coup d'oeil.
- [PostIt] Ajout d'un bloc d'actions rapide en tete du detail (
Retour,Ouvrir en edition) pour eviter le scroll jusqu'au bas de page. - [PostIt] Ajout d'un style monospace sur les metadonnees techniques (code billing, client, provision, lieu, prestations) pour faciliter la lecture des identifiants et valeurs brutes.
Changed
- [PostIt] Le bouton d'ouverture depuis la liste billing ouvre maintenant une page de detail dediee avant l'eventuelle edition.
- [PostIt] Amelioration UX des pages billing: badges de statut colores, actions remontees en haut de page, et typographie monospace sur les metadonnees techniques.
Fixed
- [Yavsc.Api] Correction d'un 500 sur le refresh du catalogue d'activites lorsque
Activity.DescriptionestNULLen base (nullabilite explicite + projection null-safe + gardes sur codes vides). - [Yavsc.Api] Correction des erreurs 400/500 sur les routes billing (
Rdv,Brush,MBrush) en imposantClientIddepuis l'utilisateur authentifie et en ignorant les champs server-owned lors de la validation modele. - [Yavsc.Api] Correction du
PUT /api/v1/billing/Rdv/{id}: mise a jour controlee de l'entite existante (et non remplacement brut du graphe JSON), ce qui supprime lesBadRequestparasites. - [Yavsc.Api] Correction PostgreSQL
timestamptzsur RDV: normalisation UTC deEventDatesurPOST/PUT /api/v1/billing/Rdvpour eviter l'erreurCannot write DateTime with Kind=Local. - [Yavsc.Api] Correction du flux FrontOffice accept/reject de query: sauvegarde avec contexte utilisateur et fallback d'injection pour
IBillingServiceafin d'eviter les erreurs serveur en environnement de test. - [Yavsc.Blogs] Correction des
BadRequestsurPOST/PUT /api/v1/blogspotavec payload JSON (PostIt): les proprietes de navigation/serveur (Author,Tags,Comments, audit) ne bloquent plus la validation. - [Yavsc.Org] Correction du flux MVC de creation de commentaire:
SaveChangesAsync(userId)est utilise pour renseigner les champs d'audit requis (UserCreated/UserModified). - [Yavsc.Api.Test] Stabilisation des fixtures de seed billing: remplissage des metadonnees d'audit (
UserCreated,UserModified, dates) pour eviter les echecs SQLiteNOT NULL.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- [PostIt] Ajout d'un
-
1.0.8-rc13
Pre-releaseAll checks were successfulForgejo Release / release (push) Successful in 6m21sreleased this
2026-09-06 18:03:34 +01:00 | 163 commits to main since this releaseAdded
- [PostIt] Integration d'un selecteur de lieu RDV base sur Mapsui (carte interactive dans le formulaire
Rdv). - [PostIt] Ajout d'un marqueur de position et d'une action de recentrage sur la carte RDV.
- [PostIt] Ajout d'un service de reverse geocoding pour suggerer une adresse a partir des coordonnees carte.
- [PostIt] Cache et debounce des resolutions d'adresse RDV pour limiter les appels reseau et lisser l'UX.
- [PostIt.Tests] Nouvelles non-regressions sur le panneau d'adresse suggeree RDV et le comportement de la carte.
- [Yavsc.Abstract] Activation de
#nullable enable annotationssur les fichiers legacy avec annotations nullable. - [Yavsc.Server] Activation de
#nullable enable annotationssur les fichiers legacy avec annotations nullable.
Changed
- [PostIt] Generalisation de la barre de statut d'action (severite explicite) sur pages principales, dialogues et formulaires billing.
- [PostIt] Harmonisation des messages de statut utilisateur en francais.
- [PostIt] Renforcement des gardes de navigation dans les flux de gestion des membres de cercle.
- [PostIt] Le flux RDV conserve l'adresse saisie manuellement et propose l'adresse resolue comme suggestion explicite.
- [PostIt] Le flux de geolocalisation RDV tolere les positions proches dans le cache de suggestion d'adresse.
Fixed
- [PostIt.Desktop] Correction d'un crash au demarrage OIDC (
No authority specified) via durcissement des valeurs par defaut de configuration d'authentification. - [PostIt] Correction de la persistance des settings: l'etat runtime de statut n'est plus serialize dans le JSON utilisateur.
- [PostIt.Tests] Ajout d'un verrou de non-regression sur le premier chargement des settings.
- [PostIt] Correction du binding de la date RDV:
DatePicker.SelectedDateest aligne sur un proxyDateTimeOffset?(EventDateSelection).
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
3 downloads
- [PostIt] Integration d'un selecteur de lieu RDV base sur Mapsui (carte interactive dans le formulaire