Files
SocialPub/PrivaPub.ClientModels/Resources/FieldsNameResource.it.resx
T
thepraandClaude Opus 5.5 075c22228a
Build / Build (push) Successful in 28s
Deploy / privapub.thepra.dev (push) Successful in 19s
net10, the refactor finished, and federation that works
The tree had not compiled since its first commit: Group, DmGroup and
IGroupUsersService were referenced and never written, an IDE rename had
turned the user-settings DTO into the ViewAvatarServer enum, and the settings
were saved as an entity they no longer were.

Built now:
- Group (an ActivityPub Group actor with its own keys, members, invitation
  code and optional password) and DmGroup (a conversation), with
  /clientapi/group/{list,insert,update,join,leave,approve}.
- Posts and DMs: /clientapi/post/{list,insert,delete}, /clientapi/dm/{list,insert};
  DM recipients are local usernames or user@host handles resolved by WebFinger.
- Invitation sign-up and login against the group's invitation code, checking
  the password before any account is created.
- Federation: WebFinger, NodeInfo 2.0, actors at /peasants/{name} (Person,
  Group, and an Application instance actor) with SPKI keys, draft-cavage
  RSA-SHA256 HTTP signatures both ways, an inbox handling Follow (+Accept),
  Undo, Create, Delete and Update, an outbox, notes at /posts/{id}, and a
  persisted, retried, signed delivery queue. A post to a group is announced
  by the group to its followers (FEP-1b12).
- The unused, broken typed ActivityPub models are replaced by a renderer;
  NSign's HMAC setup, which could not federate, is gone.

Upgrade: net10.0, MongoDB.Entities 25.1 (instance DB API, Standard GUIDs),
Swashbuckle 10 / OpenApi 2, Serilog.AspNetCore 10, MailKit 4.18,
PasswordGenerator 3. The JWT keys are 64 bytes (IdentityModel 8 refuses
shorter for HS512). Production runs its own mongod on 127.0.0.1:27022, as
Sintopia's apps do, and deploys to privapub.thepra.dev from the build runner.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
2026-10-01 08:05:56 +02:00

331 lines
13 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="(necessary in case of password recovery)" xml:space="preserve">
<value>(necessaria in caso di recupero password)</value>
</data>
<data name="(password manager suggested)" xml:space="preserve">
<value>(è suggerito l'uso del &lt;a class="is-underlined has-text-info" tabindex="-1" target="_blank" href="https://keepassxc.org/"&gt;gestore password&lt;/a&gt;)</value>
</data>
<data name="Amount" xml:space="preserve">
<value>Importo</value>
</data>
<data name="AnswerId" xml:space="preserve">
<value>ID risposta</value>
</data>
<data name="AnswerText" xml:space="preserve">
<value>Testo risposta</value>
</data>
<data name="Character" xml:space="preserve">
<value>Carattere personalizzato (emoji)</value>
</data>
<data name="ColourIndex" xml:space="preserve">
<value>Colore</value>
</data>
<data name="CommentId" xml:space="preserve">
<value>ID commento</value>
</data>
<data name="CommentText" xml:space="preserve">
<value>Testo commento</value>
</data>
<data name="Confrontation" xml:space="preserve">
<value>Confronto</value>
</data>
<data name="ConfrontationId" xml:space="preserve">
<value>Id confronto</value>
</data>
<data name="Context" xml:space="preserve">
<value>Contesto</value>
</data>
<data name="DateEnd" xml:space="preserve">
<value>Data di fine</value>
</data>
<data name="DateStart" xml:space="preserve">
<value>Data di inizio</value>
</data>
<data name="Description" xml:space="preserve">
<value>Descrizione</value>
</data>
<data name="Discussion" xml:space="preserve">
<value>Discussione</value>
</data>
<data name="DiscussionEndDate" xml:space="preserve">
<value>Data di fine</value>
</data>
<data name="DiscussionEndTime" xml:space="preserve">
<value>Tempo di fine</value>
</data>
<data name="DiscussionId" xml:space="preserve">
<value>ID discussione</value>
</data>
<data name="DiscussionText" xml:space="preserve">
<value>Testo discussione</value>
</data>
<data name="DiscussionTitle" xml:space="preserve">
<value>Titolo discussione</value>
</data>
<data name="Email" xml:space="preserve">
<value>Email</value>
</data>
<data name="Emoji" xml:space="preserve">
<value>Emoji</value>
</data>
<data name="ExpectedMaxConfrontationsBeforeClosingAndShowing" xml:space="preserve">
<value>Quantità massima di scontri</value>
</data>
<data name="Fact" xml:space="preserve">
<value>Fatto</value>
</data>
<data name="Facts" xml:space="preserve">
<value>I fatti</value>
</data>
<data name="FileId" xml:space="preserve">
<value>ID file</value>
</data>
<data name="Groups" xml:space="preserve">
<value>Gruppi</value>
</data>
<data name="IncludeFirstAnswerInInvitation" xml:space="preserve">
<value>Includere la prima risposta nell'anteprima dell'invito? (rendendo più coinvolgente l'adesione alla discussione)</value>
</data>
<data name="InvitationCode" xml:space="preserve">
<value>Codice d'invito</value>
</data>
<data name="InvitationCodeLink" xml:space="preserve">
<value>Collegamento o codice di invito</value>
</data>
<data name="InvitationPassword" xml:space="preserve">
<value>Password dell'invito</value>
</data>
<data name="IsPasswordProtectedForPreview" xml:space="preserve">
<value>Richiedi la password per l'anteprima</value>
</data>
<data name="IsPasswordProtectedForPreviewText" xml:space="preserve">
<value>Richiedi la password per l'anteprima della discussione</value>
</data>
<data name="IsPasswordProtectedText" xml:space="preserve">
<value>Aggiungere la protezione con password</value>
</data>
<data name="IsStructured" xml:space="preserve">
<value>È strutturato</value>
</data>
<data name="LanguageId" xml:space="preserve">
<value>ID lingua</value>
</data>
<data name="Name" xml:space="preserve">
<value>Nome</value>
</data>
<data name="NativeNotificationsEnabled" xml:space="preserve">
<value>Abilitare le notifiche?(utili per percepire aggiornamenti)</value>
</data>
<data name="NewPassword" xml:space="preserve">
<value>Nuova password</value>
</data>
<data name="NewPasswordConfirmation" xml:space="preserve">
<value>Conferma nuova password</value>
</data>
<data name="OldPassword" xml:space="preserve">
<value>Attuale password</value>
</data>
<data name="OneTime" xml:space="preserve">
<value>Paga una volta</value>
</data>
<data name="Password" xml:space="preserve">
<value>Password</value>
</data>
<data name="Perception" xml:space="preserve">
<value>La percezione</value>
</data>
<data name="Perceptions" xml:space="preserve">
<value>Percezioni</value>
</data>
<data name="PreferSystemTheming" xml:space="preserve">
<value>Preferire il tema di sistema</value>
</data>
<data name="RecoveryCode" xml:space="preserve">
<value>Codice di recupero</value>
</data>
<data name="Recurring" xml:space="preserve">
<value>Ricorrente</value>
</data>
<data name="Scan for:" xml:space="preserve">
<value>Scansione per:</value>
</data>
<data name="SearchText" xml:space="preserve">
<value>Ricerca</value>
</data>
<data name="ShareCode" xml:space="preserve">
<value>Condivisione del codice segreto</value>
</data>
<data name="ShowDonatorBadge" xml:space="preserve">
<value>Mostra il badge del donatore</value>
</data>
<data name="ShowLogs" xml:space="preserve">
<value>Mostra il tab dei log a supporto della risoluzione dei problemi.</value>
</data>
<data name="TakeType" xml:space="preserve">
<value>Prendi il tipo</value>
</data>
<data name="TakeTypeSimple" xml:space="preserve">
<value>Semplice</value>
</data>
<data name="TakeTypeStructured" xml:space="preserve">
<value>Strutturato</value>
</data>
<data name="Theme image" xml:space="preserve">
<value>Immagine a tema</value>
</data>
<data name="ThemeIsDarkMode" xml:space="preserve">
<value>Modalità scura</value>
</data>
<data name="Ticks" xml:space="preserve">
<value>Zecche</value>
</data>
<data name="Title" xml:space="preserve">
<value>Titolo</value>
</data>
<data name="UpdateReason" xml:space="preserve">
<value>Motivo dell'aggiornamento</value>
</data>
<data name="UpsertUserTakeIsAnonymous" xml:space="preserve">
<value>Invia in forma anonima</value>
</data>
<data name="Username" xml:space="preserve">
<value>Soprannome</value>
</data>
<data name="Username to search and add" xml:space="preserve">
<value>Soprannome da ricercare e aggiungere</value>
</data>
<data name="Usernames to search and add" xml:space="preserve">
<value>Soprannomi da ricercare e aggiungere</value>
</data>
<data name="AvatarId" xml:space="preserve">
<value>Avatar</value>
</data>
<data name="Biography" xml:space="preserve">
<value>Biografia</value>
</data>
<data name="LanguageCode" xml:space="preserve">
<value>Lingua</value>
</data>
<data name="UserName" xml:space="preserve">
<value>Nome utente</value>
</data>
</root>