Commit graph

68 commits

Author SHA1 Message Date
4e2cf7c5ac admin ui: self-contained reserve-username modal, plain @ text
The reserve modal delegated to a nested ActionButton, whose own flow modal
opened over it - the username field ended up behind it and the request preview
came through empty on confirm. Replace it with a modal that owns its username
and reason fields and posts the reserve/unreserve command directly. Render the
@ prefix as text, not an icon.
2026-09-09 21:15:23 +01:00
241fd442fb admin ui: match the reserved-usernames page layout to the NFT page
Move "Reserve username" into a modal opened from the page actions, and keep a
single search toolbar in the query panel, so the page matches Collectible
Usernames instead of stacking two toolbars with an unconstrained input.
2026-09-09 21:11:52 +01:00
65aaa263b1 usernames: operator reserved-username blocklist
A plain blocklist for names like @support - separate from the collectible
system, so a reservation has no owner, no price and no "bought on Fragment"
badge.

- reserved_usernames table + migration.
- Enforced in replacePeerUsernameTx (the single editable-username write point:
  account.updateUsername, channels.updateUsername, @BotFather /setusername) and
  in the collectible mint path; a reserved name returns USERNAME_OCCUPIED.
- admin.Service: ReserveUsername / UnreserveUsername (journalled commands) and
  the ReservedUsernames listing.
- adminapi: /v1/reserved-usernames{,/reserve,/unreserve}.
- telesrv-admin panel + a "Reserved Usernames" page in the web UI (dist rebuilt).
- Postgres and in-memory store implementations; the memory registry gains an
  optional reserved-name check so tests exercise the same rule.
2026-09-09 19:57:14 +01:00
c939f7c92e admin: list accounts that have no active sessions
The Accounts tab (readStore.ListAccounts) inner-joined the authorizations
aggregate, so any account with zero authorization rows was silently hidden -
accounts that never finished login, had all sessions revoked, or were frozen
then unfrozen. CountAccounts and SearchAccounts already LEFT JOIN, so the count
and search disagreed with the list.

Switch ListAccounts to LEFT JOIN auth and COALESCE the null last_active_at /
device_count (sessionless accounts sort last), matching SearchAccounts.
2026-09-09 14:56:10 +01:00
onysd
e6a777983c fix 2026-08-25 00:20:05 +03:00
onysd
edc5f84b6d fix 2026-08-24 23:14:50 +03:00
onysd
d0669bdc5e categorisation for gifs 2026-08-24 23:09:08 +03:00
onysd
78f174018e fix 2026-08-07 11:30:12 +03:00
onysd
15f2d6e925 added gifs preview 2026-08-07 10:51:43 +03:00
onysd
354128c106 added full gifts support 2026-08-07 10:13:11 +03:00
onysd
d16f34070d fix for overview panel 2026-08-07 04:26:56 +03:00
onysd
21d8e91756 removed all "paid" features - no more stars, gifts, or grams 2026-08-07 01:50:10 +03:00
onysd
818c9a58a3 disabling marksbot when third-party verifications if turned off 2026-08-06 15:45:32 +03:00
onysd
2491088e81 added ability to broadcast 2026-08-06 15:22:36 +03:00
onysd
7d41cbeb1e updated NFT usernames menu 2026-08-06 14:41:53 +03:00
onysd
36350f83dc added ability to disable third-party verification 2026-08-06 05:27:48 +03:00
onysd
a9586aec87 fix 2026-08-06 03:28:49 +03:00
onysd
72db66d4aa added ability to check shared devices 2026-08-06 02:12:46 +03:00
onysd
7d0daef923 fixes 2026-08-05 22:45:12 +03:00
onysd
8aad71643f added ability to copy bot token 2026-08-05 22:33:33 +03:00
onysd
bb1f680d3b hide create bot functionality in modal window 2026-08-05 22:01:18 +03:00
onysd
0b3c861057 updated bots,channels and supergroups lists and edit screens 2026-08-05 21:49:30 +03:00
onysd
40d49d5e97 added ability to change user info 2026-08-05 21:19:50 +03:00
onysd
cddd341bb2 fix 2026-08-05 04:03:47 +03:00
onysd
21f5e888f2 accout page cleanup 2026-08-05 03:41:23 +03:00
onysd
c91fb5ae92 admin page cleanup 2026-08-05 03:19:01 +03:00
onysd
45f79148c2 added s3 support 2026-08-05 02:34:24 +03:00
onysd
03f10b66ee s3 support 2026-08-04 23:09:11 +03:00
onysd
fa5cfaf14d changed verifier bot to marksbot 2026-08-04 03:22:46 +03:00
onysd
ac6a50c5ff Merge remote-tracking branch 'upstream/main' into merge-gramsrv-9106877 2026-08-03 23:29:20 +03:00
onysd
030f859ba3 updated accounts page 2026-08-01 00:25:11 +03:00
Egor Egorov
fff8de783a
feat: add NFT usernames and bot verification (#22)
Implements collectible usernames, official verification workflows, and third-party bot verification after maintainer protocol and migration review.

The composite activity/moderation rating remains an admin-only read model; Telegram Stars Rating wire fields stay unset pending a dedicated official-semantics implementation.

Reviewed-Head: 2796345775ea0f908fb7734601e5e1dee4b653b9
Original-Head: fa082b892fd5180c9c9bc53c81c21cf5d250a75b

Co-authored-by: Egor Egorov <business.egor.sg@gmail.com>
2026-07-28 01:18:00 +08:00
iamxvbaba
90649b5b67 fix(admin): sync moderation review state refresh 2026-07-27 01:01:36 +08:00
iamxvbaba
b742450938 fix(admin): sync moderation status dropdown 2026-07-26 22:44:04 +08:00
iamxvbaba
8b866b2bb2 fix(admin): sync moderation page localization 2026-07-26 22:03:25 +08:00
onysd
b2e84a187d fixes 2026-07-25 01:24:36 +03:00
onysd
ba15e2f32f fix 2026-07-25 01:07:54 +03:00
onysd
76ea4d9f0f fix after merge 2026-07-24 23:23:42 +03:00
onysd
3325e793f9 fixes 2026-07-24 22:46:05 +03:00
onysd
b443ff0c73 Merge remote-tracking branch 'upstream/main' into merge-gramsrv-0e2fcdf9 2026-07-24 17:15:53 +03:00
iamxvbaba
9f467f4be7 feat: sync durable moderation and appeals 2026-07-24 11:56:59 +08:00
onysd
0a6c05404a changed botfather avatar and fixed import 2026-07-24 00:54:19 +03:00
onysd
c436c7c773 added default gifts import back 2026-07-23 23:03:51 +03:00
iamxvbaba
234061ef83 fix(admin): close PR review blockers
Keep bot credentials out of durable command results, fail bot deletion closed when session revocation fails, reject invalid scam/fake states at every write boundary, and make direct collectible grants a single replayable PostgreSQL aggregate.

Also lock admin gift sender/message limits and add regression coverage for rollback, replay, moderation constraints, and credential redaction.
2026-07-23 13:29:04 +08:00
epilepticseizureee
90792cdfab fix(admin): resolve moderation, gift, and admin-panel bugs from QA
- scam/fake: enforce mutual exclusivity (scam precedence) at TL conversion, admin command, and UI toggles; both flags could render as neither
- scam/fake flicker: persist scam/fake in the Redis user base cache so cache hits no longer drop the flags
- getSavedStarGifts: hidden (unsaved) gifts are now force-excluded for non-owner viewers; same guard for get-by-ref
- convertStarGift: map already-upgraded/owner-invalid/unavailable to a clean client error instead of 500
- channel force-settings: send only changed fields (partial patch) and re-sync toggles after reload, so one setting no longer resets another
- give gifts: removed custom collectible numbers (auto sequential only); locked sender to the system account 777000
- give gifts UI: fixed picker card spacing/right gap; static (hover-play) Lottie previews on emoji + picker to stop render lag; fixed emoji ID field overflow
2026-07-23 06:24:53 +03:00
epilepticseizureee
313624eab2 admin: gift granting, collectible attribute/number control, and Layer 228 moderation tools
Admin console additions (Layer 228):
- Give Gifts: dedicated tab with sorted Lottie/TGS gift picker + inline form; grant any catalog gift to a user/channel from 777000 (no charge)
- Upgraded/collectible delivery: mint a unique gift with admin-selected model/pattern/backdrop and custom number, or random/auto (DB FK + UNIQUE(gift_id,num) enforce invariants)
- SCAM/FAKE flags for users/channels (migration 0136) with configurable profile warning (TELESRV_SCAM_WARNING/TELESRV_FAKE_WARNING)
- Support toggle, force channel settings incl. gigagroup (migration 0137), username management, cosmetic color/emoji-status
- Emoji admin tab (custom emoji list + document IDs + Lottie/TGS preview)
- Bot management; soft UI / dark theme
Wired through Router -> admin.Service -> adminapi -> BFF -> React panel (en/zh/ru).
2026-07-23 04:00:29 +03:00
epilepticseizureee
9e45da69ef feat(admin): bot management (list, verify, create, delete)
- Add a Bots admin tab: list/search bots with a dedicated read query
  (users.is_bot, excluded from the accounts list), showing owner and
  system-vs-user type
- Create system bots from the admin via a new bot.create command that
  reuses the existing bot provisioning flow; the token is shown once
- Delete user-created bots via a new bot.delete command backed by a
  dedicated Postgres DeleteBotAccount (revokes sessions, purges private
  state, releases username, drops the bots row, tombstones the user);
  system service bots are rejected
- Verified badge toggling reuses the existing set-verified command
- All write paths go through the dry-run/confirm + audit command pipeline
- Rebuild dist bundle
2026-07-23 00:34:05 +03:00
epilepticseizureee
ad9d535edc feat(admin-ui): softer pre-material styling and dark theme
- Rebuild admin console styling on semantic CSS variables (light + dark palettes)
- Soften palette, shadows and corner radii for a calmer pre-material look
- Add theme provider with light/dark toggle in the topbar and login header
- Respect prefers-color-scheme and persist choice, with anti-FOUC inline script
- Polish Russian translations (yo letters, consistent 'Звёзды' currency, wording)
- Rebuild dist bundle to match the updated source
2026-07-22 23:45:09 +03:00
onysd
b1836c78e8 removed default telegram gifts 2026-07-22 20:20:16 +03:00
onysd
139967399d fixed stickers and emojies creation packs 2026-07-22 14:01:02 +03:00