3252a8
829758dc44
feat: update tariff UI and mini app
2026-04-28 14:34:12 +03:00
3252a8
9deb98bbe7
feat: add traffic periods topups and throttling
2026-04-28 14:34:00 +03:00
3252a8
26af92b5ac
feat: route purchases through tariff catalog
2026-04-28 14:33:52 +03:00
3252a8
87b2443a06
feat: add tariff config and database schema
2026-04-28 14:33:38 +03:00
3252a8
aabc0e312d
feat: log email and tg linking
2026-04-28 13:54:05 +03:00
3252a8
d15d58df36
docs: tariffs documentation
2026-04-28 10:47:59 +03:00
3252a8
21f2ac4534
fix: show red traffic bar in web app when sub is expired
2026-04-28 10:32:56 +03:00
3252a8
dd0e6e75af
feat: add magic login link to email with login codes
2026-04-28 09:50:17 +03:00
3252a8
0251f939d7
feat: log users when reg via email
2026-04-27 23:29:28 +03:00
3252a8
a00bc0f345
feat: design for emails
2026-04-27 23:05:14 +03:00
3252a8
ae4ce43e1c
chore: tune default web app logo
2026-04-27 22:28:34 +03:00
3252a8
19ed8916f4
fix: migration and docker image name/tag
v3.1.0
2026-04-27 21:31:06 +03:00
3252a8
f7de08bfd7
docs: update readme
2026-04-27 21:06:21 +03:00
3252a8
6e42f67931
docs: donation wallet
2026-04-27 21:02:49 +03:00
3252a8
b87b6cd378
fix: webapp session
2026-04-27 20:50:24 +03:00
3252a8
b39fb73c30
docs: project name change, migration script
2026-04-27 16:11:06 +03:00
3252a8
3120884ed5
docs: update readme
2026-04-27 15:15:25 +03:00
3252a8
c927244b1a
docs: update readme
2026-04-27 15:13:00 +03:00
3252a8
e049f38c7c
fix: readme format
2026-04-27 15:08:29 +03:00
3252a8
ddc6ee0024
feat: build webapp when docker build
2026-04-27 14:59:35 +03:00
3252a8
fa5f1460ab
fix: separate platega buttons not showed up in webapp
2026-04-27 14:57:49 +03:00
3252a8
9f556f3e04
fix: add platega debug
2026-04-27 14:48:58 +03:00
3252a8
70b618a94b
feat: use web page for cryptopay in web app
2026-04-27 14:38:09 +03:00
3252a8
0610156f80
feat: add multiple platega buttons
2026-04-27 14:34:41 +03:00
3252a8
587b39de1d
fix(bot): connect button opens subscription page instead of mini app
...
Previously the connect button in post-payment messages and in 'My subscription' section opened the mini app (personal cabinet) when SUBSCRIPTION_MINI_APP_URL was set, ignoring the actual subscription URL. Now the real subscription URL is preferred, with the mini app used only as a fallback.
2026-04-27 11:06:32 +03:00
3252a8
e35885b54b
docs: update readme
2026-04-27 09:44:28 +03:00
3252a8
c1b7ace876
fix(webapp): merge bundled FALLBACK_I18N with server locales
...
The bot's locales/*.json files do not contain the webapp-specific keys
(connect, extend_subscription, loading, etc.), so applyI18n was
overwriting the localized HTML defaults with raw key names.
Merge the bundled FALLBACK_I18N table with whatever the server provides
per language, letting server values override but falling back to the
in-bundle translations for keys the bot does not ship.
2026-04-27 09:42:18 +03:00
3252a8
f416b0aed1
fix(webapp): allow oauth.telegram.org iframe in CSP
...
The Telegram Login Widget embeds oauth.telegram.org in an iframe; without
an explicit frame-src directive it fell back to default-src 'self' and was
blocked. Add frame-src https://oauth.telegram.org so the login flow loads.
2026-04-27 09:34:09 +03:00
3252a8
c8192e4427
fix(webapp): allow inline JSON config and Telegram widget eval under CSP
...
Add a per-request nonce to inline <script type="application/json"> blocks
(webapp-config, i18n) so they survive script-src 'self' and locales/config
actually load in the browser. Also add 'unsafe-eval' to script-src so the
vendored telegram-widget.js (which uses eval/new Function) can initialise.
2026-04-27 09:31:52 +03:00
3252a8
dae1a6889b
feat(ops): add /healthz endpoint and container healthcheck
...
Expose a lightweight /healthz route on the main aiohttp server and
wire docker-compose healthcheck so orchestrators can detect failures.
2026-04-27 08:43:58 +03:00
3252a8
4740666d63
chore: annotate XTR provider_token and add missing return type
2026-04-27 08:43:54 +03:00
3252a8
d6b703debb
refactor(logging): use logger.exception to preserve stack traces
...
Unify error logging across services: replace logger.error(f"...{e}")
and logger.error(..., exc_info=True) with logger.exception() so the
stack trace is consistently captured.
2026-04-27 08:43:48 +03:00
3252a8
f1113eb80a
fix(webhooks): return 5xx on YooKassa processing errors
...
Replace 200-on-error with 500 so the payment provider retries transient
failures instead of treating them as successfully processed.
2026-04-27 08:43:44 +03:00
3252a8
604f0d9656
security: audit inline Mini App handlers
2026-04-26 20:34:02 +03:00
3252a8
8ce5a92625
chore: harden ignore rules
2026-04-26 20:33:59 +03:00
3252a8
72b6e93c94
docs: add Telegram clock-skew note for auth_date
2026-04-26 20:33:57 +03:00
3252a8
d60952718e
security: harden Mini App auth, CSRF, and validation
2026-04-26 20:33:54 +03:00
3252a8
53dcc59770
security: double-check CryptoPay webhook signatures
2026-04-26 20:33:49 +03:00
3252a8
5ec179b6d6
webapp: add hashed minified asset pipeline
2026-04-26 20:04:30 +03:00
3252a8
250df445f0
docker: run app as non-root user
2026-04-26 19:47:56 +03:00
3252a8
12376e5070
db: add composite indexes and merge-user optimizations
2026-04-26 19:47:14 +03:00
3252a8
c2afc6107a
webapp: harden mini app rendering and controls
2026-04-26 19:47:06 +03:00
3252a8
77370eb963
security: harden webhooks and session secrets
2026-04-26 19:46:57 +03:00
3252a8
94b0787cad
feat: use i18n
2026-04-26 12:34:16 +03:00
3252a8
9c499fe3c2
feat: add caddy docker compose example
2026-04-24 23:16:31 +03:00
3252a8
7e26f9da9b
feat: automatic merge two paid subs (email and tg)
2026-04-24 23:07:57 +03:00
3252a8
778615a97f
feat: tune web app visual
2026-04-24 22:35:55 +03:00
3252a8
651572f15f
refactor: show tg avatar in detached browser
2026-04-24 21:31:58 +03:00
3252a8
5ccb8ddabe
refactor: promo and email bruteforce defence
2026-04-24 21:18:29 +03:00
3252a8
86f944e544
feat: tune web app visual
2026-04-24 21:04:53 +03:00