112 Commits
Author SHA1 Message Date
Don KendallandGitHub 5a3d673e84 feat(account): revocable API tokens managed from account settings (#10624)
* feat: API token management in workspace settings

Add UI and backend support for creating, listing, and revoking
API tokens scoped to workspaces. Includes owner-level workspace
token visibility, OpenAPI documentation, Mongo/Postgres persistence,
and i18n translations.

Signed-off-by: Don Kendall <kendall@donkendall.com>

* feat: enforce API token revocation at transactor level

Embed apiTokenId in JWT extra field and add a per-token revocation
cache (60s TTL) in the transactor REST handler. Revoked tokens are
now rejected within ~60 seconds instead of remaining valid until
JWT expiry.

Adds checkApiTokenRevoked account service method for the transactor
to query individual token revocation status.

Signed-off-by: Don Kendall <kendall@donkendall.com>

* feat: implement Phase 1 API token scopes (read/write/delete)

Add coarse-grained scope enforcement for API tokens. Tokens can now
be created with scopes ['read:*'], ['read:*','write:*'], or
['read:*','write:*','delete:*']. Existing tokens without scopes
retain full access (backward compatible).

- DB: v26 migration adds scopes TEXT[] column to api_tokens
- Types: add scopes field to ApiToken and ApiTokenInfo
- Operations: createApiToken accepts/validates/persists scopes,
  embeds in JWT via extra.scopes
- Enforcement: withSession checks scopes against method; tx handler
  additionally requires delete:* for TxRemoveDoc
- Client: createApiToken signature accepts optional scopes param
- UI: scope preset dropdown in create popup (default: Read Only),
  permissions column in token list with i18n labels
- Also fixes 3 pre-existing TS2322/TS2345 errors in operations.ts

Signed-off-by: Don Kendall <kendall@donkendall.com>

* test: add unit tests for API token scope enforcement

- scopes.test.ts: 8 tests for hasScope() and getRequiredScope() logic
- apiTokenScopes.test.ts: 7 tests for createApiToken scope validation
  (valid scopes, multiple scopes, no scopes backward compat, invalid
  format rejection, empty array rejection, domain-scope rejection)
  and listApiTokens scopes inclusion
- Export hasScope/getRequiredScope from rpc.ts for testability

Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: address review feedback — role restriction, locale parity, formatting

- Restrict API token creation/revocation to AccountRole.User or higher
  (guests cannot use API tokens), per reviewer suggestion
- Add 5 missing translation keys (ApiTokenPermissions, ApiTokenScopePreset,
  ApiTokenScopeReadOnly, ApiTokenScopeReadWrite, ApiTokenScopeFullAccess)
  to all non-en locale files to fix locale parity CI test
- Fix prettier formatting in apiTokenScopes.test.ts
- Rename local `extra` to `tokenExtra` in createApiToken to avoid
  shadowing the decoded token's `extra` field

Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: address aonnikov architectural review feedback

- rpc.ts: use system service token for checkApiTokenRevoked so the
  revocation check is not coupled to the user's potentially-revoked
  bearer token; systemAccountUuid + service:'server' ensures account
  service always accepts the call
- ApiDocsSection.svelte: derive transactor base URL from
  login.metadata.LoginEndpoint (set on auth) instead of
  window.location.origin, which is not necessarily the transactor host
- ApiTokenCreatePopup.svelte: replace manual translate() calls and
  themeStore language watch with DropdownLabelsIntl + DropdownIntlItem[],
  which handle i18n automatically; error state is now IntlString
- General.svelte: remove legacy GenerateApiToken button, handler, and
  ApiTokenPopup import in favour of the new ApiTokens settings panel

Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: formatting in ApiTokenPopup, apiTokenScopes test, and operations

Signed-off-by: Don Kendall <kendall@donkendall.com>

* fix: apply rushx fmt to pass CI formatting check

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* fix: restore (s as any) cast in server_http.ts removed by ESLint autofix

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* refactor(token): centralize API token revocation/expiry in verifyToken

Address @aonnikov's review: the bespoke checkApiTokenRevoked RPC and the
ad-hoc revocation cache in the transactor are replaced by a reusable
verifyToken in server-token that checks signature, expiry, and (for
revokable API tokens) revocation via a pluggable checker.

- server-token: add verifyToken + isTokenExpired + setApiTokenRevocationChecker
  (the 'method to verify' metadata the plugin needs, without depending on the
  account client). Revocation cache (60s TTL) now lives here, reusable by any
  service (transactor, blob access, etc.).
- account: the account is now authoritative — wrap() rejects revoked/expired
  API tokens, so any account method (selectWorkspace/getWorkspaceInfo/...)
  naturally 401s. Removed the redundant checkApiTokenRevoked method.
- account-client: drop checkApiTokenRevoked.
- transactor: withSession uses verifyToken; the registered checker reuses the
  existing getLoginInfoByToken instead of a dedicated boolean RPC. Scopes are
  parsed once and threaded through (no re-decode in the tx handler).
- tests: verifyToken/isTokenExpired unit coverage.

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* fix(setting): derive REST API base from account-provided transactor endpoint

Address @aonnikov: the REST API host must come from the transactor endpoint
returned by the account service (the login endpoint, a ws(s):// URL), not be
constructed from window.location. Convert ws->http and append /api/v1, matching
the existing ServerManagerGeneral pattern.

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* i18n(setting): translate API token strings across all locales

Address @ArtyomSavchenko: the new API token UI strings were left in English
in non-en locales. Provide translations for ru/de/es/fr/it/pt/pt-br/zh/ja/cs/tr.
The en/ru locale-parity test passes (the prior failure was an en/ru key
mismatch, resolved by the develop merge).

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* style: wrap long lines to satisfy prettier (account utils import, ApiDocsSection)

Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* fix(api-token): drop unenforceable scopes, harden the token lifecycle

The scopes were only ever consulted in the transactor's REST handler, so
they promised a boundary the platform did not keep:

- the WebSocket transport decodes the token and never looks at scopes, so
  a read-only token could open a socket and issue any transaction;
- even on the REST path, delete:* only matched a top-level TxRemoveDoc and
  was bypassed by nesting the removal in a TxApplyIf;
- nothing stopped a scoped token from calling createApiToken and minting
  an unscoped one.

Narrowing a token's rights has to happen in the pipeline, where it covers
every transport, and that is a larger design than this feature. Until then
a token carries its account's rights and says so, rather than displaying a
restriction that does not hold. Scopes are removed end to end.

What is kept is made to work:

- API tokens can no longer create, list or revoke API tokens. Otherwise a
  leaked token renews itself and revokes the tokens meant to stop it.
- Revocation fails closed. The account is the only authority on it, so an
  unreachable account now rejects the token instead of admitting a revoked
  one to whoever can keep the account busy. Verdicts stay trusted for the
  cache TTL so brief outages do not cut off healthy tokens.
- The revocation cache is bounded and re-checks negative verdicts.
- Revoking your own token no longer requires a role in its workspace, so
  leaving a workspace cannot strand a credential you can never revoke.
- The per-account limit counts only usable tokens; revoked and expired
  ones are kept for the audit trail and used to lock out anyone rotating.
- Rejected REST tokens are logged with a reason, since expired, revoked
  and unverifiable are one opaque 401 from outside.

The unused listWorkspaceApiTokens/revokeWorkspaceApiToken pair is removed;
it had no caller and no test.

Tests cover the role restriction, the API-token guard, ownership on
revoke, the limit accounting and fail-closed revocation. Removing any of
those checks fails them.

Claude-Session: https://claude.ai/code/session_01ANdoXbdn5k2hZy734EwKe7
Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* fix(setting): correct the API token settings page

- Moves the page from workspace settings to account settings. Tokens
  belong to the account: the page already lists them across every
  workspace, and creating one only needs the User role the account
  service checks, not Owner as the category required.
- Surfaces failures. A failed revoke was logged to the console and the
  row re-rendered unchanged; loading workspaces could reject unhandled
  and leave an empty dropdown with no explanation.
- Outside a secure context there is no clipboard API, so the OK button
  did nothing and the dialog had no way out but Cancel. It now closes,
  leaving the token selectable.
- Replaces hardcoded English labels, adds aria-expanded on the docs
  disclosure and labels on the copy targets.
- Fills in the Korean and Polish translations, which were the only two
  locales missing these keys, and drops the API access strings orphaned
  when this PR replaced the old Generate API token button.

Claude-Session: https://claude.ai/code/session_01ANdoXbdn5k2hZy734EwKe7
Signed-off-by: Don Kendall <dkendall@ledoweb.com>

* chore: drop docs/openapi.yaml from the API token PR

Unrelated to this feature and wrong for this repo: it documents a
/_tokens minting service and a tools/mint-token CLI that do not exist
here, uses reverse-proxy prefixes from a self-hosted deployment rather
than the transactor's /api/v1 routes, and states that revocation is a
future enhancement, which is what this PR implements. Nothing references
it. REST API docs belong in their own change, generated against the
routes that exist.

Claude-Session: https://claude.ai/code/session_01ANdoXbdn5k2hZy734EwKe7
Signed-off-by: Don Kendall <dkendall@ledoweb.com>

---------

Signed-off-by: Don Kendall <kendall@donkendall.com>
Signed-off-by: Don Kendall <dkendall@ledoweb.com>
2026-08-04 13:10:48 +07:00
Artyom SavchenkoandGitHub 4064588585 Add backup/restore guide (#10945)
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
2026-07-02 13:59:54 +05:00
Artyom SavchenkoandGitHub 96553daf06 Add backup download button and script (#10935)
* Add backup download button

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-06-28 18:41:16 +05:00
Denis BykhovandGitHub b32ff0f46a Required attributes (#10918)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-06-22 12:53:11 +05:00
Paweł KędziorandGitHub 78142ead31 feat: add Polish translation (#10907)
Adds Polish translation for app

Closes #9986

Signed-off-by: Paweł Kędzior <pawel.kedzior@o2.pl>
2026-06-16 12:31:11 +07:00
Denis BykhovandGitHub 372a4b0ca3 Id override (#10847)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-05-18 01:31:17 +05:00
FVOCIandGitHub 2d73be14f8 feat: Korean (ko) translation (#10820)
Signed-off-by: FVOCI <150913557+fvoci@users.noreply.github.com>
2026-05-05 15:38:15 +05:00
Artyom SavchenkoandGitHub 738a2d0040 Configure available spaces for anonymous guests in settings (#10802)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-25 18:28:28 +07:00
Artyom SavchenkoandGitHub a78c58b65a Fix auto join translations (#10787)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-20 15:47:42 +07:00
Artyom SavchenkoandGitHub 596e2705a8 Add ability to configure guest spaces in settings (#10770)
* Configure guest channels in the settings

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update space classes

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-16 15:02:44 +07:00
Artyom SavchenkoandGitHub f78df72be5 Rename owners to members in workspace settings (#10729)
* Renamw owners to members in workspace settings

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Try to fix tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-09 14:14:19 +07:00
Artyom SavchenkoandGitHub d0b27dce72 feat: Anonymous guest permissions (#10726)
* Anonymous guest permissions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix channels dropdown

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update guest layout

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-06 23:29:11 +07:00
Artyom SavchenkoandGitHub ea254970c0 feat: Add ability to configure guest permissions (#10708)
* Configure guest permissions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix permission domain

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix permission declaration

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix lock file

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Guest permissions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Allow guests to update their own documents

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add modules order

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix translations, icons

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix disabled apps and update translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-04-05 14:36:59 +07:00
Denis BykhovandGitHub 4ef554b9d2 Two-Factor Authentication (2FA) (#10658)
* Two-Factor Authentication (2FA)

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix test

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix test

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix tests

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* More test fixes

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

* Fix tests

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>

---------

Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-03-21 14:36:32 +07:00
Denis BykhovandGitHub 662fe5265a Reset id (#10643)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-03-16 21:31:08 +07:00
Artyom SavchenkoandGitHub d7a0fa8309 Do not allow kick last owner (#10559)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-26 14:55:17 +05:00
Artyom SavchenkoandGitHub 48a28a0b81 Configure who should be able to send invitation link (#10555)
* Configure who should be able to send invitation link

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add user role select

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Limit default user roles

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-25 19:42:11 +07:00
Artyom SavchenkoandGitHub 38ce824a00 Fix Brazilian Portuguese translation (#10522)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-18 21:26:13 +07:00
Artyom SavchenkoandGitHub 40fda7b337 feat: Brazilian Portuguese translation (#10478)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2026-02-07 17:33:11 +05:00
Denis BykhovandGitHub c91a19cae8 Improve custom employee ref (#10349)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2026-01-03 01:08:01 +05:00
Denis BykhovandGitHub 33bb180505 Ability to show ids in title (#10318)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-12-19 20:26:53 +05:00
a5af7fdd6a Configure permissions to import documents (#10310)
* fix: redesign and compact

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: comments

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: correctly dropping connections in timeout

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* feature: loglevel in config

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix: loglevel in config

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* features lopt: direct personal messages between websockets by username

Signed-off-by: Leonid Kaganov <lleo@lleo.me>

* fix collaborator security query

Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>

* Fix svelte warnings

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Change log

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add export permissions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add workspace permissions enum

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Add changelog

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update account enum

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Leonid Kaganov <lleo@lleo.me>
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
Signed-off-by: Artem Savchenko <armisav@gmail.com>
Co-authored-by: Leonid Kaganov <lleo@lleo.me>
Co-authored-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2025-12-18 22:22:58 +07:00
Artyom SavchenkoandGitHub c59a122649 Add default settings for meeting rooms (#10293)
Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-12-12 12:00:12 +05:00
Denis Bykhov d5d5b4028f Add password aging
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-11-27 00:01:53 +05:00
Denis BykhovandGitHub d06b92ebdd card RBAC (#10197)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-11-10 14:41:05 +07:00
Denis BykhovandGitHub 654e0f89bf Fix i18n (#10132) 2025-10-23 09:03:27 +07:00
Denis BykhovandGitHub 7f130e3987 ID type (#10126)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-10-22 22:44:21 +05:00
Alexander OnnikovandGitHub 092f5965fc fix: restructure workspace general settings (#10120)
Signed-off-by: Alexander Onnikov <Alexander.Onnikov@xored.com>
2025-10-21 20:49:53 +07:00
Artyom SavchenkoandGitHub 5182f6b310 Support telegram reconnect (#10039)
* Support telegram reconnect

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix integration enable

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix refresh

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update lock

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Fix version mismatch

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-10-13 15:24:14 +07:00
Üzeyir İsmail BahtiyarandGitHub fe6d015eb2 feat: Add complete Turkish (tr) language support to Huly Platform (#9975)
Signed-off-by: Uzeyir Ismail Bahtiyar <uzeyirismailbahtiyar@gmail.com>
2025-09-30 11:52:44 +07:00
Denis BykhovandGitHub 1a0496c743 Add min and max value support for number inputs (#9916) 2025-09-23 14:44:20 +07:00
2021e27379 UBERF-12988: Add integration status and redesign integration state (#9643)
* UBERF-12988: Add integration status and redesign integration state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* Update plugins/setting-assets/lang/es.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>

* UBERF-12988: Get state from event

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-12988: Add isLoading for status

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-12988: Fix svelte-check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
Signed-off-by: Artyom Savchenko <armisav@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-08-06 13:09:15 +07:00
Artyom SavchenkoandGitHub 7e92c12073 UBERF-11414: Integrations (#9610)
* UBERF-11414: Use common integration kind

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Allow multiple gmail

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Merge with develop

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refactor integration kinds

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integrations package

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Integration state and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add integration events

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Refresh integration states

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Rename to integration-client

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add filter button

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add translations for filters

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Synced channels count

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Actions

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add isLoading for connect

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Create connection and integration

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Use social id from hulygram

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Remove old integrations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail state and disconnect all handler

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Add tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Gmail sync state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix rush check

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix gmail tests

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix calendar actions and config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Calendar state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Access config

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Github integration state

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix svelte errors

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix formatting

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix typos

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix validate

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Fix translations

Signed-off-by: Artem Savchenko <armisav@gmail.com>

* UBERF-11414: Retry on network issues

Signed-off-by: Artem Savchenko <armisav@gmail.com>

---------

Signed-off-by: Artem Savchenko <armisav@gmail.com>
2025-08-04 15:14:06 +07:00
Anton AlexeyevandGitHub 3f2606b2bd Qfix readonly improvements (#9621)
Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-07-31 21:30:40 +07:00
Anton AlexeyevandGitHub dd4f987ff6 Qfix readonly (#9605)
* Allow guests to initiate meeting

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Allow guests to communicate in the old chat

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Fix search in CardsPopup

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

* Restore guest role picking in ui

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>

---------

Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-07-27 16:39:52 +02:00
Anton AlexeyevandGitHub 3579a8be99 Readonly tune guest permissions (#9593) 2025-07-24 08:56:45 +07:00
Anton AlexeyevandGitHub 446a2f9dda Add a separate setting to control if guests can join WS (#9540)
Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-07-14 12:36:46 +07:00
Alexey ZinovievandGitHub 28fdc84494 UBERF-10254: Manage own social ids (#9398)
Signed-off-by: Alexey Zinoviev <alexey.zinoviev@xored.com>
2025-07-03 00:35:25 +05:00
Andrey SobolevandGitHub a23326fd6b qfix: backups using pipeline (#9396)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2025-07-01 22:51:20 +07:00
Anton AlexeyevandGitHub 635304c4af Readonly workspace access (#9005)
Signed-off-by: Anton Alexeyev <alexeyev.anton@gmail.com>
2025-06-02 13:21:38 +07:00
Alexander PlatovandGitHub 39d1c0a76a UBERF-10741: The application name has been corrected and the Customize label has been added (#9056)
Signed-off-by: Alexander Platov <alexander.platov@hardcoreeng.com>
2025-05-22 09:31:30 +07:00
Artyom SavchenkoandGitHub a4cc6e102e UBERF-10653: Handle gmail integration errors (#8985) 2025-05-20 14:03:26 +07:00
Denis BykhovandGitHub c5ef23cce8 Prevent users from editing/deleting card types, Fix module labels (#8886)
Signed-off-by: Denis Bykhov <bykhov.denis@gmail.com>
2025-05-09 01:01:49 +05:00
かっこかりandGitHub da6ef6e1e1 Japanese Translation (#8576)
Signed-off-by: kakkokari-gtyih <67428053+kakkokari-gtyih@users.noreply.github.com>
2025-04-16 21:46:40 +07:00
Victor IlyushchenkoandGitHub 280a0819a2 Cherry Pick of recent changes in qms (#8498)
Signed-off-by: Victor Ilyushchenko <alt13ri@gmail.com>
2025-04-09 16:14:38 +04:00
ChunosovGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
31de65a60c Account mailboxes (#8342)
* add mailboxes settings page

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* add account methods and ui for mailbox settings

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* load mailbox domains in settings

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* create mailbox table in migrations

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* add translations, generate password for mailbox

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* Potential fix for code scanning alert no. 145: Creating biased random numbers from a cryptographically secure source

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: Chunosov <N.Chunosov@yandex.ru>
Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* update pnpm.lock

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

* move password generation to utils

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>

---------

Signed-off-by: Nikolay Chunosov <Chunosov.N@gmail.com>
Signed-off-by: Chunosov <N.Chunosov@yandex.ru>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2025-03-26 11:38:18 +07:00
Anna KhismatullinaandGitHub 6beddd3b16 Port export changes to develop (#8329)
Signed-off-by: Anna Khismatullina <anna.khismatullina@gmail.com>
2025-03-25 21:10:51 +05:00
Anna KhismatullinaandGitHub d4731a63b0 Support export to JSON, CSV (#8193)
Signed-off-by: Anna Khismatullina <anna.khismatullina@gmail.com>
2025-03-12 22:31:58 +07:00
Andrey SobolevandAndrey Sobolev 6a926a7ea7 UBERF-9540: Fix invite message and add rate limit (#8123)
Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
2025-03-03 13:20:11 +07:00
Alexander PlatovandGitHub a187d7a8c2 QFix: check getWeekInfo (support for older browsers, Firefox). (#7963) 2025-02-08 14:22:03 +07:00