Repository navigation
Conversation
A petname is this viewer's own label for a device, kept in the console's own storage and never gossiped. A self display name is read from the agent/self entry of a verified advert, the key agent-comms and the public hub's advert policy already carry, and this console publishes its own through the same entry. The convention is implemented once in peer-names.ts and reached through a context by the conversation list, the connection directory and the discovered-peers table.
…how peer provenance An address that carries certificate pins is assessed against the certificate memory before it is dialled: nothing remembered asks the user to trust the presented certificate, a disjoint remembered set raises a change warning that must be accepted, and an overlapping set (a rotation) connects silently. A node that later announces certificates sharing nothing with the remembered ones is reported rather than overwritten silently. Each discovered-peer row names the connection whose directory gossiped it and, when known, the node that vouched for that connection.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
…ned-address end-to-end specs
…trip control characters from it PeerName and the conversation labels rendered only the stranger-chosen name, so two peers claiming one name could not be told apart. cleanName now drops control and bidirectional formatting characters and truncates by code point.
… and surface publish failures
…d surface name storage failures
# Conflicts: # ts/packages/web-console/test/App.unit.test.tsx
… show gossiped device identity as a claim An address presenting one remembered certificate beside others was dialled with all of them, so the address could add a pin the console had never approved. confirmAddress now returns the address to dial, narrowed to the remembered pins. A request for the same node and certificates shares one prompt, pending prompts are refused and dials skipped once the console is closed, and the device a gossiping node claimed for an address is shown as a claim and forgotten once its dial is settled.
A session's reconnect timer outlived the console, so a late redial could construct a socket after the console was gone.
…nd trim a name after the length cut A self name is shown in italics under a 'calls itself' marker and flagged when it equals a petname the viewer holds for any device. cleanName trims after truncating so a cut after a space leaves no trailing space, and the Save button compares the draft with its cleaned form.
…t connects, and claim no device for a shared address
… clear its pending entries
…in the claim tests
Mearman
force-pushed
the
feat/console-naming
branch
2 times, most recently
from
October 1, 2026 08:58
1260305 to
f659e79
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #305 (base is
feat/console-naming, so CI does not run for this PR; verification was local).A pinned WebTransport address is now assessed against the certificate memory before it is dialled, whether it was typed into the connect form or gossiped and then confirmed in the discovered-peers table. Nothing remembered for the node shows a first-use confirmation naming the node and the SHA-256 fingerprint to be pinned; a remembered set that shares no certificate with the presented one shows a red change warning that has to be accepted explicitly; a presented set that overlaps the remembered one connects silently, because that is what a rotation looks like (a node announces the certificate it serves now beside the next ones). Trusting writes the presented hashes to the memory, cancelling dials nothing and writes nothing. Addresses with malformed pins skip the gate and fail in the transport with the parser's message, as before.
The second half covers a connected node that announces certificates sharing nothing with what was remembered. The announcement arrives on a session pinned by a certificate the console already trusted, so it is still stored, but the certificate memory handed to the dial transport is now wrapped so a disjoint replacement raises a dismissible notice instead of overwriting silently.
Each row of the discovered-peers table now has a "gossiped by" column naming the connection (by its dialled address) whose directory carried the peer and, when that connection was itself reached by gossip, the device that vouched for it, and the panel says that this is the only thing vouching for the address.
WebSocket (
ws/wss) addresses have no certificate memory, so the trust prompt does not apply to them; this was the behaviour before and is unchanged.The pinned-address Playwright specs and the offline containers spec accept the first-use prompt the way a person would (a later commit on this branch); they could only be run at the top of the stack, where they pass.
Fixes #296