Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/components/organisms/DialogPrivacy/DialogPrivacy.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,18 @@ describe('DialogPrivacy', () => {
expect(screen.getByText(/Effective Date: January 29, 2026/)).toBeInTheDocument();
expect(screen.getAllByText(/Synonym Software Ltd/).length).toBeGreaterThan(0);
});

// Pubchi discloses a question and its assembled context to a third-party model provider,
// which is a recipient and may be an international transfer. These assertions fail if
// either disclosure is dropped, including by an upstream merge that overwrites this file.
it('discloses the Pubchi recipient and transfer', () => {
render(<DialogPrivacy />);

expect(screen.getByText(/^PUBCHI$/)).toBeInTheDocument();
expect(screen.getByText(/disclosed to a third-party provider of AI language models/)).toBeInTheDocument();
expect(screen.getByText(/outside the United Kingdom and the European Economic Area/)).toBeInTheDocument();
expect(screen.getByText(/forbid it from using your material to train its models/)).toBeInTheDocument();
});
});

describe('DialogPrivacy - Snapshots', () => {
Expand Down
100 changes: 100 additions & 0 deletions src/components/organisms/DialogPrivacy/DialogPrivacy.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -754,6 +754,106 @@ exports[`DialogPrivacy - Snapshots > matches snapshot for default DialogPrivacy
>
From time to time, we may change our Policy. We will notify you of any material changes to our Policy as required by law. We will also post an updated copy on our Platform. Please check our Platform periodically for updates.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
PUBCHI
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
This section applies only if you enroll a Pubchi. If you do not, none of it happens.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
What we process.
</strong>
When you enroll and use a Pubchi, we process the record binding your Pubchi to your account, including your public key and your Pubchi’s key; the content of each request you make, meaning your question, the conversation so far, the context assembled for it, the feed you are working on and the subject you named; the signed request accompanying it, which carries your public key, your Pubchi’s key, the purpose of the request, a hash of the request, timestamps and a single-use value that prevents replay; the answer returned; and the drafts, suggestions and records your Pubchi writes into your own Pubky storage.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Why.
</strong>
To answer the question you asked, to keep the feature working, to stop abuse of it, and for no other purpose. We do not use your questions to advertise to you, and we do not sell them.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Who receives it.
</strong>
To generate an answer, part of your request is disclosed to a third-party provider of AI language models. That means the substance of your question, and the material assembled to answer it, is seen by a company other than Synonym. We choose that provider on terms that forbid it from using your material to train its models or for any purpose other than returning the answer. You can ask us which provider is in use at any time by writing to

<a
data-testid="link"
href="mailto:privacy@synonym.to"
>
privacy@synonym.to
</a>
.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Where it goes.
</strong>
That provider may process your request outside the country you are in, including outside the United Kingdom and the European Economic Area. Where it does, we rely on appropriate safeguards for the transfer, including the Standard Contractual Clauses approved for that purpose under Articles 44 to 49 GDPR. You can request a copy of the safeguards we rely on by writing to

<a
data-testid="link"
href="mailto:privacy@synonym.to"
>
privacy@synonym.to
</a>
.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
What we do not receive.
</strong>
Your identity secret, your recovery phrase and your device signing key never leave your device, and never reach us or the provider.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
How long.
</strong>
We keep a request and its answer only for as long as needed to return the answer, to diagnose faults, and to detect and investigate abuse, and then delete them or reduce them to statistics that no longer identify a request. In practice this is a short period measured in days, not years. The drafts and records your Pubchi writes into your own Pubky storage are yours and stay until you delete them.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Your choices.
</strong>
Enrolling a Pubchi is your decision and the feature does nothing until you make it. You can stop using it, unenroll your Pubchi, and delete what it wrote into your own storage. The rights set out elsewhere in this Policy apply to everything above. What has already been disclosed to the provider for a past request is held under that provider’s terms, which is why those terms forbid it from keeping your material for its own purposes.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Other people’s information.
</strong>
If you ask your Pubchi about another person, that person’s information is included in what is sent for processing. You are responsible for what you ask. We do not build profiles of people from Pubchi questions, and we do not use one person’s questions to answer another person’s.
</p>
</div>
</div>
</div>
Expand Down
58 changes: 58 additions & 0 deletions src/components/organisms/DialogPrivacy/DialogPrivacy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -511,6 +511,64 @@ export function DialogPrivacy({ trigger }: DialogPrivacyProps) {
required by law. We will also post an updated copy on our Platform. Please check our Platform periodically
for updates.
</Typography>

{/** Section 17 */}
<Typography className={baseCSS}>PUBCHI</Typography>
<Typography className={baseCSS}>
This section applies only if you enroll a Pubchi. If you do not, none of it happens.
</Typography>
<Typography className={baseCSS}>
<strong>What we process.</strong> When you enroll and use a Pubchi, we process the record binding your
Pubchi to your account, including your public key and your Pubchi’s key; the content of each request you
make, meaning your question, the conversation so far, the context assembled for it, the feed you are
working on and the subject you named; the signed request accompanying it, which carries your public key,
your Pubchi’s key, the purpose of the request, a hash of the request, timestamps and a single-use value
that prevents replay; the answer returned; and the drafts, suggestions and records your Pubchi writes into
your own Pubky storage.
</Typography>
<Typography className={baseCSS}>
<strong>Why.</strong> To answer the question you asked, to keep the feature working, to stop abuse of it,
and for no other purpose. We do not use your questions to advertise to you, and we do not sell them.
</Typography>
<Typography className={baseCSS}>
<strong>Who receives it.</strong> To generate an answer, part of your request is disclosed to a
third-party provider of AI language models. That means the substance of your question, and the material
assembled to answer it, is seen by a company other than Synonym. We choose that provider on terms that
forbid it from using your material to train its models or for any purpose other than returning the answer.
You can ask us which provider is in use at any time by writing to{' '}
<Link href={EMAIL_PRIVACY_URL}>privacy@synonym.to</Link>.
</Typography>
<Typography className={baseCSS}>
<strong>Where it goes.</strong> That provider may process your request outside the country you are in,
including outside the United Kingdom and the European Economic Area. Where it does, we rely on appropriate
safeguards for the transfer, including the Standard Contractual Clauses approved for that purpose under
Articles 44 to 49 GDPR. You can request a copy of the safeguards we rely on by writing to{' '}
<Link href={EMAIL_PRIVACY_URL}>privacy@synonym.to</Link>.
</Typography>
<Typography className={baseCSS}>
<strong>What we do not receive.</strong> Your identity secret, your recovery phrase and your device
signing key never leave your device, and never reach us or the provider.
</Typography>
<Typography className={baseCSS}>
<strong>How long.</strong> We keep a request and its answer only for as long as needed to return the
answer, to diagnose faults, and to detect and investigate abuse, and then delete them or reduce them to
statistics that no longer identify a request. In practice this is a short period measured in days, not
years. The drafts and records your Pubchi writes into your own Pubky storage are yours and stay until you
delete them.
</Typography>
<Typography className={baseCSS}>
<strong>Your choices.</strong> Enrolling a Pubchi is your decision and the feature does nothing until you
make it. You can stop using it, unenroll your Pubchi, and delete what it wrote into your own storage. The
rights set out elsewhere in this Policy apply to everything above. What has already been disclosed to the
provider for a past request is held under that provider’s terms, which is why those terms forbid it from
keeping your material for its own purposes.
</Typography>
<Typography className={baseCSS}>
<strong>Other people’s information.</strong> If you ask your Pubchi about another person, that person’s
information is included in what is sent for processing. You are responsible for what you ask. We do not
build profiles of people from Pubchi questions, and we do not use one person’s questions to answer another
person’s.
</Typography>
</Container>
</Container>
</DialogContent>
Expand Down
14 changes: 14 additions & 0 deletions src/components/organisms/DialogTerms/DialogTerms.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,20 @@ describe('DialogTerms', () => {
expect(screen.getByText(/Effective Date: January 29, 2026/)).toBeInTheDocument();
expect(screen.getByText(/PLEASE REVIEW THE ARBITRATION PROVISION/)).toBeInTheDocument();
});

// This deployment offers Pubchi, which sends a question and the context assembled to
// answer it to a third-party model provider. These assertions fail if that disclosure is
// dropped, including by an upstream merge that overwrites this file.
it('discloses the Pubchi outbound flow', () => {
render(<DialogTerms />);

expect(screen.getByText(/PUBCHI, YOUR PERSONAL BOT/)).toBeInTheDocument();
expect(screen.getByText(/passed to a third-party provider of AI language models/)).toBeInTheDocument();
expect(
screen.getByText(/Your identity secret, your recovery phrase and your device key never leave/),
).toBeInTheDocument();
expect(screen.getByText(/It is not advice of any kind/)).toBeInTheDocument();
});
});

describe('DialogTerms - Snapshots', () => {
Expand Down
93 changes: 93 additions & 0 deletions src/components/organisms/DialogTerms/DialogTerms.test.tsx.snap
Original file line number Diff line number Diff line change
Expand Up @@ -1108,6 +1108,99 @@ exports[`DialogTerms - Snapshots > matches snapshot for default DialogTerms 1`]
>
You acknowledge and agree that we shall not be liable to you or any third-party for any termination or suspension of your access to the Platform.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
PUBCHI, YOUR PERSONAL BOT
</p>
<p
class="text-muted-foreground text-base font-normal italic"
data-testid="typography"
>
This section explains what your Pubchi is, what leaves your device when you use it, and why you must not rely on what it says. Read the second paragraph before you enroll one.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
What a Pubchi is.
</strong>
A Pubchi is a personal assistant bound to your account. It has its own key, separate from your identity key. You create one by enrolling it. It can answer questions about what you can already see, suggest tags for posts and for people, draft a post for you, and assemble a feed.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
What leaves your device.
</strong>
When you ask your Pubchi something, the following is sent away from your device for processing: your question, the conversation so far, the context assembled for that question, the feed you are working on if you asked about one, the subject of your question if you named one, your public key, your Pubchi’s key, and a signature proving the request came from a device you had already registered. Part of that material is then passed to a third-party provider of AI language models, which generates the answer. Your identity secret, your recovery phrase and your device key never leave your device.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Treat a question to your Pubchi as a question that leaves your device.
</strong>
Your Pubchi can read material that is not public in order to answer you, and that material can be included in what is sent for processing. If you do not want something used to answer questions, do not ask questions that require it.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
You decide what becomes public.
</strong>
A Pubchi’s output is not published by the act of generating it. A drafted post is a draft until you publish it. A suggested tag is a suggestion until you apply it. Once you publish or apply it, it is your Content under these Terms, exactly as if you had typed it. A bot’s suggestion is not a defence.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Do not rely on it.
</strong>
A Pubchi can be wrong, incomplete, out of date, or confidently mistaken. It is not advice of any kind, and in particular it is not legal, financial, tax, medical, or security advice. Do not use it to decide anything that matters without checking the underlying facts yourself. We make no representation that an answer is accurate, impartial, reproducible, or fit for any purpose, and the no-representation and liability provisions of these Terms apply to every answer.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Other people.
</strong>
A Pubchi can suggest tags for other people and can answer questions about them. A tag you apply to a person is public, it is your statement about them, and you are responsible for it. Do not ask your Pubchi to assemble material about a person that you could not lawfully gather and publish yourself, and do not apply a suggested tag you would not have written yourself.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
The bot’s key.
</strong>
Your Pubchi’s key is not your identity key and cannot act as you. It cannot spend funds, it cannot recover your account, and it cannot sign in on your behalf anywhere else. Keeping a Pubchi enrolled is a choice you can reverse at any time.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Availability.
</strong>
Pubchi depends on a service and on a third-party model. It may be unavailable, slow, rate limited, changed, or withdrawn, and a feature that worked yesterday may not work today. Nothing in this section promises that it keeps working.
</p>
<p
class="text-muted-foreground text-base font-normal"
data-testid="typography"
>
<strong>
Prohibited uses still apply.
</strong>
You must not use a Pubchi to produce or publish anything these Terms or the Community Guidelines forbid, to impersonate anyone, to generate material about another person that you could not lawfully publish yourself, or to attempt to extract the service’s instructions or another user’s private material.
</p>
</div>
</div>
</div>
Expand Down
Loading