This website requires JavaScript.
0565f09a72
test(e2e): ретраи WS-коннекта — транзиентный таймаут после deploy-stage
master
aleksey
2026-08-24 00:05:25 +03:00
a061674408
ci(e2e): readiness-wait перед API-сьюитами на стенде
aleksey
2026-08-23 23:17:32 +03:00
9348c36e52
ci: rerun e2e-stage (в run 617 e2e стартовал в момент рестарта контейнеров после deploy-stage; все 5 падений — транзиентные 502 админ-API)
aleksey
2026-08-23 22:20:30 +03:00
e0e3455281
fix(ai): STT — имя файла по content-type, webm/mp4 уходили как voice.dat
aleksey
2026-08-23 21:51:19 +03:00
61f7a5f719
revert: STT ipfamily — причина была в истёкшей vless-подписке
aleksey
2026-08-23 00:15:22 +03:00
b122cf3339
fix(ai): STT httpc только IPv4 — таймаут на хостах без IPv6
aleksey
2026-08-22 23:41:29 +03:00
4486dc87db
Поиск: case-insensitive сравнение в logic_search
aleksey
2026-08-22 21:08:04 +03:00
d46eb6e528
fix(stt): xAI 400 при format=true без language — убираем поле format
aleksey
2026-08-21 21:32:13 +03:00
1ef9020c40
Голосовой центр L2: прокси транскрибации POST /v1/ai/transcribe
aleksey
2026-08-20 23:56:35 +03:00
f4d89a262c
feat(ai): пилотные метрики ИИ-подсказок — POST /v1/ai/hint-metrics + админ-сводка
aleksey
2026-08-20 18:35:29 +03:00
cc08b3b18a
feat(search): default_location календарей в ответе всегда (для вида карты)
aleksey
2026-08-19 22:01:07 +03:00
73d43e5fdc
feat(geo): switch geocoder from self-host Photon to OpenCage API
aleksey
2026-08-18 23:30:15 +03:00
6b70e1336d
feat(geo): Photon proxy, address-only location, nearby search. Refs EventHub/EventHubBack#77
aleksey
2026-08-17 23:23:10 +03:00
501334e241
fix(test): archived month returns 409 before event_in_past.
aleksey
2026-08-17 16:25:51 +03:00
e3f5a7ca13
feat(archive): month snapshots on the same node, drop extra-node and HTML /view.
aleksey
2026-08-17 14:59:30 +03:00
ef31e7fb40
fix(test): sync migration_engine_tests versions with auth_session_device. Refs EventHub/EventHubBack#74
aleksey
2026-08-16 18:58:54 +03:00
0690020e81
feat(auth): list/revoke sessions with device_name and client_type. Fixes EventHub/EventHubBack#74
aleksey
2026-08-16 18:30:05 +03:00
1c701a5254
fix(share): register calendar_share migration and rebuild old PK schema. Refs EventHub/EventHubBack#73
aleksey
2026-08-16 10:04:16 +03:00
fb927b7f71
fix(ci): e2e-stage defaults to *.stage.calentiq.com when secrets empty.
aleksey
2026-08-16 00:25:12 +03:00
c1b4897a8b
fix(test): use commercial fixtures in logic_search_tests.
aleksey
2026-08-16 00:04:26 +03:00
fcb737eb47
fix(test): ensure calendar_share table in ACL-related eunit suites.
aleksey
2026-08-15 23:48:12 +03:00
331000a464
feat(share): calendar_share invite/ACL for personal and commercial.
aleksey
2026-08-15 23:20:11 +03:00
00bf72e4d1
test(notify): prefs gate email/push on reminder and waitlist.
aleksey
2026-08-15 21:50:08 +03:00
12274f9ed0
feat(notify): Web Push subscriptions and email/push prefs.
aleksey
2026-08-15 20:19:44 +03:00
e86d603f30
fix(email): encode Cyrillic binaries with /utf8.
aleksey
2026-08-15 00:32:33 +03:00
0a1e55e036
feat(email): HTTP API transport via Resend (fallback SMTP).
aleksey
2026-08-14 23:54:10 +03:00
fb8869fa86
feat(waitlist): optional event waitlist with FIFO promote.
aleksey
2026-08-14 21:44:42 +03:00
29111cd514
feat(upload): avatar and calendar cover via local disk storage.
aleksey
2026-08-14 21:27:34 +03:00
15ae8d4426
feat(email): send booking reminders before event start.
aleksey
2026-08-14 20:59:38 +03:00
347a645933
feat(auth): POST /v1/logout and admin logout revoke refresh session. Refs EventHub/EventHubBack#69
aleksey
2026-08-14 20:23:16 +03:00
302e1e5e9e
chore: ignore local Traefik certs; keep make-traefik-certs.sh. [skip ci]
aleksey
2026-08-14 19:46:18 +03:00
69ee037d45
feat(email): SMTP via gen_smtp and CalenTIQ HTML templates. Refs EventHub/EventHubBack#68
aleksey
2026-08-14 18:51:09 +03:00
3d7ae0d372
fix(api): resolve public calendar GET by unique short_name.
aleksey
2026-08-14 15:00:41 +03:00
658cbda4fe
chore(rules): ignore .tmp scratch; IFT e2e needs SMOKE_USER. [skip ci]
aleksey
2026-08-14 12:52:20 +03:00
2567585333
feat(booking): studio journal and instance inbox. Refs EventHub/EventHubFront#60
aleksey
2026-08-14 11:13:01 +03:00
520af23cc6
feat(api): optional auth for public search and studio week. Refs EventHub/EventHubFront#58
aleksey
2026-08-14 11:02:58 +03:00
8a5f254c2a
feat(booking): materialize occurrence on POST bookings. Refs EventHub/EventHubBack#67
aleksey
2026-08-14 10:52:24 +03:00
e3403f6ed6
fix(ift): ObserverWeb mount at "" so CSS/JS paths are not //css-*
aleksey
2026-08-13 11:27:41 +03:00
37011f66a1
fix(ift): mount ObserverWeb dashboard at / on dedicated host
aleksey
2026-08-13 10:54:19 +03:00
c89d08968d
fix(test): drop redundant user.email index setup
aleksey
2026-08-04 10:46:32 +03:00
72bc440049
fix(test): add mnesia secondary indexes in eh_test_support
aleksey
2026-08-04 10:27:58 +03:00
6c0775ee5e
feat(infra): add TTL cleanup worker for append-only tables
aleksey
2026-08-03 22:57:41 +03:00
774f58f9ed
fix(user): transactional status updates and paginated list_users
aleksey
2026-08-03 22:56:16 +03:00
d88689f1a3
fix(auth): make auth_session mutations transactional
aleksey
2026-08-03 22:55:52 +03:00
e3467e7412
perf(mnesia): use secondary indexes in booking, event, search, review
aleksey
2026-08-03 22:55:50 +03:00
104892bdde
fix(ci): remove orphan containers before mnesia volume wipe [skip ci]
aleksey
2026-08-01 18:50:07 +03:00
2b8fc19822
ci: extract wipe-mnesia into standalone workflows [skip ci]
aleksey
2026-08-01 18:43:46 +03:00
4eb1f326ec
feat(ci): add manual wipe-mnesia jobs for IFT/stage [skip ci]
aleksey
2026-08-01 18:30:11 +03:00
0a5e86c4a0
fix(recurrence): honor BYDAY for weekly RRULE expansion
aleksey
2026-08-01 18:17:23 +03:00
0e4e886cd4
feat(specialists): owner is non-deletable specialist on commercial create
aleksey
2026-08-01 12:18:36 +03:00
ba1649f344
fix(ct): teardown litter users/calendars after API suites
aleksey
2026-07-31 12:21:15 +03:00
7d39c004a1
fix(ct): adapt API tests to sole Default personal
aleksey
2026-07-30 22:29:52 +03:00
10464de3ec
feat(calendar): single Default personal with guards and backfill
aleksey
2026-07-30 22:07:15 +03:00
bb37909ffb
fix(events): guard booking_occupancy when booking table missing
aleksey
2026-07-30 15:56:49 +03:00
edd396dff8
feat(events): add booking_occupancy on event JSON for studio grid
aleksey
2026-07-30 15:33:49 +03:00
1fce1aa12d
fix(ci): sync migration_engine_tests ALL_VERSIONS with bag migration
aleksey
2026-07-30 13:27:57 +03:00
32d3e7378e
fix(event): store multiple recurrence cancel exceptions
aleksey
2026-07-30 13:07:13 +03:00
4986baf006
feat(calendar): validate org defaults in calendar.settings
aleksey
2026-07-29 22:50:31 +03:00
4c480f1c43
fix(test): lookup banned words via q after batch
aleksey
2026-07-29 15:58:41 +03:00
faf251b11d
fix(calendar): persist settings on PUT/POST
aleksey
2026-07-29 15:00:55 +03:00
7e14dbcf8b
docs(rules): require run-wsl-sh for CRLF .sh scripts
aleksey
2026-07-29 12:55:01 +03:00
76548e578b
chore(make): add verification-token target for multi-stand email lookup
aleksey
2026-07-28 22:26:44 +03:00
bc85f5ab06
fix(ci-reports): chmod a+r on report.tar.gz for nginx read
aleksey
2026-07-28 19:42:14 +03:00
3c2c33f83b
feat(ci-reports): publish report.tar.gz archive for offline download
aleksey
2026-07-28 13:52:01 +03:00
85a34dd7b0
docs(rules): git commit via -F file when message has parentheses
aleksey
2026-07-28 10:20:54 +03:00
7bd6e52d18
fix(ci): auto-detect stand for ci-reports URL on IFT runner
aleksey
2026-07-28 10:13:38 +03:00
5ed361d8ff
fix(ci): publish reports to ci-reports.dev on runner host
aleksey
2026-07-28 00:39:10 +03:00
5169df3d40
fix(ci): chown ci-reports dir for act runner publish
aleksey
2026-07-28 00:29:09 +03:00
8305bd1a86
fix(ct): skip node_metric noise when waiting for admin WS pong [skip ci]
aleksey
2026-07-27 23:19:27 +03:00
b3792a304b
docs: forbid bare git push; use git-push.sh helpers.
aleksey
2026-07-27 23:10:45 +03:00
78d410c3e3
chore: push without CI
aleksey
2026-07-27 22:57:20 +03:00
2bfce06dbf
Publish EUnit/CT HTML reports to ci-reports host.
aleksey
2026-07-27 22:48:35 +03:00
cd619db4a2
fix(ct): activate trial before commercial calendar in admin WS tests.
aleksey
2026-07-27 22:05:20 +03:00
bd36f158b9
docs: agent pitfalls + token economy rules for Cursor [skip ci]
aleksey
2026-07-27 21:50:40 +03:00
81728301e2
fix: persist specialist_id on event create; 402 commercial without active sub. Fixes EventHub/EventHubBack#61
aleksey
2026-07-27 21:17:15 +03:00
edb7c20f70
Expire past-pending bookings to expired status. Fixes EventHub/EventHubBack#60
aleksey
2026-07-27 16:45:30 +03:00
1d9752bb69
feat: GET /v1/user/booking-requests + search image_url. Fixes EventHub/EventHubBack#59
aleksey
2026-07-27 14:53:25 +03:00
b25c0447cd
chore: bump fallback VERSION to 0.2. Refs EventHub/EventHubSpec#10
aleksey
2026-07-26 22:05:43 +03:00
61816e15b1
feat: forgot/reset password API (variant A). Fixes EventHub/EventHubBack#57
mvp-0.1
aleksey
2026-07-24 20:12:53 +03:00
e3013075cc
feat: booking JSON user_nickname/email for owner UI. Refs EventHub/EventHubBack#56
aleksey
2026-07-23 13:20:33 +03:00
571f04737d
feat: specialist_invite API + user lookup. Fixes EventHub/EventHubBack#55
aleksey
2026-07-22 18:52:35 +03:00
af5f506866
Implement commercial calendars: booking_open, specialists, expire without type downgrade.
aleksey
2026-07-22 16:12:52 +03:00
fdb08eb453
fix: require calendar owner or admin for booking confirm/decline. Fixes EventHub/EventHubBack#53
aleksey
2026-07-22 10:53:01 +03:00
9886dff8bf
fix: run observer_web as hidden node to stop OTP global splitting IFT Mnesia cluster.
aleksey
2026-07-21 22:14:16 +03:00
5ac23219ca
fix: owner event bookings list and paid plan durations from plan_to_months.
aleksey
2026-07-21 20:18:49 +03:00
7368adfb37
fix: automod CT seeds confirmed booking before calendar review. Refs EventHub/EventHubFront#8
aleksey
2026-07-20 22:53:45 +03:00
59220b955e
feat: calendar follow API (POST/DELETE follow, GET following). Refs EventHub/EventHubFront#9
aleksey
2026-07-20 22:10:48 +03:00
4932f9abae
fix: gate calendar reviews on confirmed booking. Refs EventHub/EventHubFront#8
aleksey
2026-07-20 21:08:12 +03:00
dcb5163946
test: make ticket messages unique across IFT runs via system_time
aleksey
2026-07-20 14:39:20 +03:00
fc38f63497
fix: only add search filters present in QS so empty GET hits discovery tops. Refs EventHub/EventHubBack#50
aleksey
2026-07-20 14:04:56 +03:00
6d52bc3a8e
feat: discovery tops for empty GET /v1/search. Refs EventHub/EventHubBack#50
aleksey
2026-07-20 12:17:36 +03:00
e94c94d1a6
test: unique ticket messages per run to avoid IFT dedupe collisions
aleksey
2026-07-20 11:27:27 +03:00
7c1fe1940d
feat: create default personal calendar on email verification. Refs EventHub/EventHubBack#49
aleksey
2026-07-20 11:17:31 +03:00
2440c50330
fix: add-host for stand e2e under Docker host network (IFT DNS)
aleksey
2026-07-20 01:45:10 +03:00
c760070611
fix: do not prune registry sha tag before deploy-ift
aleksey
2026-07-20 01:23:47 +03:00
3c6211dd08
fix: avoid empty node metrics race in CT (collect on start + poll). Refs EventHub/EventHubBack#47
aleksey
2026-07-20 01:03:53 +03:00
10f6eef92d
fix: sync migration_engine_tests ALL_VERSIONS with review_vote. Refs EventHub/EventHubBack#47
aleksey
2026-07-20 00:52:57 +03:00
84bfce474a
fix: create review_vote table in unit fixtures for review delete. Refs EventHub/EventHubBack#47
aleksey
2026-07-20 00:39:30 +03:00
0934e2c413
feat: PATCH /v1/user/me — профиль и смена пароля. Refs EventHub/EventHubBack#48
aleksey
2026-07-19 23:26:34 +03:00
5b638de450
feat: user API голосования за отзывы (like/dislike). Refs EventHub/EventHubBack#47
aleksey
2026-07-19 21:31:29 +03:00