/admin/settings/connect is where an installation decides what its customers
are told to install: which platforms to offer, which application to recommend
first on each, where to get it, and what the setup steps say.
This used to be a table compiled into the Go binary. The property that made that
worth doing is the one thing not to lose: the Telegram bot and the customer web
panel read the same guidance, so nobody can be told to install one application
in a chat and a different one in a browser. That property is now kept by both
surfaces reading one query rather than by both linking one constant — and adding
a client no longer needs a release.
Upgrading changes nothing. The migration seeds exactly the five platforms and
eleven entries that were compiled in, in the order they were recommended, with
the labels the bot’s own catalogue used. An installation that never opens this
screen recommends today what it recommended yesterday.
Platforms
A platform is what a customer picks from first. Each has a key, a label in English and Russian, an order, and a switch. The labels are stored rather than resolved from a message catalogue, because an operator adding a platform has no way to add a translation key to a compiled one. A missing Russian label is stored as the English one rather than left to render as a gap. Turning a platform off removes it from both surfaces, including from a link that names it directly — so a stale bookmark falls back to the first platform that is offered rather than reaching guidance that was withdrawn. It stays on the operator’s own screen, because turning it back on is what somebody opens this page to do. Deleting a platform deletes every application documented under it. That is why deleting confirms and the switch beside it does not.Applications
Each entry names an application, the scheme that imports a subscription into it, and optionally a download address and setup instructions.
A deep link is the scheme with the subscription URL appended and nothing else:
happ://add/https://panel.example.com/sub/…. There is no redirect in between.
Instructions replace the generic three steps rather than adding to them.
Somebody who wrote their own setup knows something the generic copy does not, and
showing both would leave a customer choosing between two accounts of the same
thing.
The import scheme is a security boundary
This value is concatenated with the subscription link and rendered as thehref
of an anchor in the customer web panel — the same origin that holds the session
cookie. It is the one field on this screen where a mistake is not a cosmetic
one.
It must match a scheme name, ://, and a conservative path alphabet, and it may
never name javascript, data, vbscript, or file. javascript: in an
href executes; the other three are the neighbours it travels with.
Both rules are enforced twice: in Go, so an operator gets a message naming the
field, and as a constraint on the table, so a script writing directly to the
database is refused too. The download address is https-only for a related
reason — it is a link handed to somebody about to install software on their own
device.
What a customer sees
In the browser. A row of platform buttons carrying the operator’s own labels, the setup steps or the operator’s instructions, one button per application, a second smaller button where a download address exists, then the QR code and the copyable link. In the bot. The same platforms as inline buttons, the same steps or instructions, one copy-text button per application — Telegram inline buttons accept onlyhttp, https, and tg URLs, so an import scheme travels as
copyable text — and an ordinary link button for a download address, which is
https and therefore may be one.
With nothing configured. Both surfaces say so and still offer the
subscription link, because copying the link into any compatible client is the
thing that actually has to work.
Permissions and audit
Reading needssettings.read; every change needs settings.write. Saves and
deletions audit as connect.platform.saved, connect.platform.deleted,
connect.client.saved, and connect.client.deleted under the configuration
category.
Related
Connecting a device
What a customer does with this guidance, and how the link travels.
Installation settings
The other settings areas and how a section is saved.
White-label appearance
The other half of making an installation look and read as its own.
Admin panel
Roles, permissions, and the audit trail behind this screen.