Compare commits

...
Author SHA1 Message Date
Sychev Andrey 932eaf8315 Merge branch 'devel' into dbeaver/pro#7844-cb-lsp-server 2026-03-19 10:14:57 +01:00
db9f145609 [CB] refactor data editor features readonly states [2] (#4213)
* dbeaver/pro#8299 adds features to data sources

* adds feature flags for data sources

* adds features to mobx

* pr fixes

* pr fixes

* fixes hasFeature

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-18 17:10:16 +01:00
d920227db0 dbeaver/pro#8470 migrate reakit to the ariakit (#4209)
* dbeaver/pro#8470 migrate reakit to the ariakit

* dbeaver/pro#8470 fix format

* dbeaver/pro#8470 remove deprecated TabsBox

* dbeaver/pro#8470 control currentTabId via effect

* dbeaver/pro#8470 restore navigationSettings.hasMultipleRows

* dbeaver/pro#8470 fallback to null for defaultSelectedId

* dbeaver/pro#8470 remove getComputed

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-18 17:08:38 +01:00
874760f780 dbeaver/pro#8306 split event enums in gql schema (#4202)
* dbeaver/pro#8306 split event enums in gql schema

* dbeaver/pro#8306 use events from ee sdk

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-18 12:37:15 +01:00
dbeaver-devops 0e286f383f dbeaver/pro#8732 26.0.2 version bump 2026-03-17 20:06:58 +01:00
40385f3b1c [CB] Reuse DnD from base grid component for Data Editor (#4201)
* dbeaver/pro#7159 adds dnd to column body cells + introduces new drop column styles

* adds line on dnd

* removes rdg-cell-column-drop class

* cleanup for class names

* renames to useDnD box

* cleanup

* renames hook

* fixes colors scheme + border line index

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-17 18:50:05 +01:00
sergeyteleshevandEvgenia 4bc74883e0 [CB] Improve fuzzy search in autocompletion in the SQL Editor (#4204)
* dbeaver/pro#8418 adds fuzzy search for sql editor proposals

* sorts proposals so startsWith and includes word is showed first

* tunes DEFAULT_FUZZY_THRESHOLD

* tunes DEFAULT_FUZZY_THRESHOLD

* Revert "tunes DEFAULT_FUZZY_THRESHOLD"

This reverts commit 7ac8757215.

* fixes ranging and threshold

* rename variable

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-17 18:39:19 +01:00
33d1d97fb7 dbeaver/pro#8515 sync properties state (#4214)
* dbeaver/pro#8515 sync properties state

* dbeaver/pro#8515 fixed null to empty strings props conversion

* dbeaver/pro#8515 do not send property if its in default value

* Revert "dbeaver/pro#8515 fixed null to empty strings props conversion"

This reverts commit 5c4f181edf.

* dbeaver/pro#8515 fix firefox icon

* dbeaver/pro#8515 change prop order

* dbeaver/pro#8515 add comment

---------

Co-authored-by: Dmitrii Barnukov <dmitrii.barnukov@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-03-17 17:35:45 +01:00
296e03ec74 7023-cb-find-and-replace-new (#4085)
* dbeaver/pro#7023 feat: add SearchPanel component and related styles to UI-kit
add chevron Icon to UI-kit (used in Search Panel)

* dbeaver/pro#7023 feat: add SearchPanel story

* dbeaver/pro#7023 feat: update SearchPanel integration in CodeMirror

* dbeaver/pro#7023 feat: add onReplaceToggle prop to SearchPanel for toggle functionality

* dbeaver/pro#7023 fix: replace-input styles

* dbeaver/pro#7023 feat: implement search functionality in DataGrid v2

* dbeaver/pro#7023 fix: update react-data-grid workspace reference in yarn.lock

* dbeaver/pro#7023 feat: don't focus cell on replace

* dbeaver/pro#7023 feat: add searchReadOnly prop to DataGrid and GridSearchPanel components

* dbeaver/pro#7023 fix: update styles for search panel

* dbeaver/pro#7023 feat: add theme variables for improved styling in storybook

* dbeaver/pro#7023 feat: update search panel styles in datagrid

* dbeaver/pro#7023 feat: improve search functionality by resetting active match index and triggering search on find actions

* dbeaver/pro#7023 refactor: useGridSearch

* dbeaver/pro#7023 fix: search panel styles

* dbeaver/pro#7023 feat: implement grid search state management

* dbeaver/pro#7023 feat: add refresh functionality to search components

* dbeaver/pro#7023 feat: add history action to refresh search results on undo/redo

* dbeaver/pro#7023 feat: add batch cell update functionality to data grid

That functionality comes in handy when we want to use Undo and Replace All functions together:
Before that commit we used to perform N operations where N is a number of replaced cells. And history would record them as atomic operations, so pressing Undo would revert only the last replace.
setMany enables batch editing and batch reverting, so now we can Replace All and then revert it by using one Undo operation

* dbeaver/pro#7023 refactor: remove unnecessary eslint disable comment in useGridSearch

* dbeaver/pro#7023 feat: select affected cell on history change

* dbeaver/pro#7023 feat: add searchReadOnly prop to DataGridTable for conditional read-only state

* dbeaver/pro#7023 refactor: simplify isReadOnly logic in GridSearchPanel

* dbeaver/pro#7023 refactor: use constants for flags

* dbeaver/pro#7023 refactor: update focus and refresh methods in GridSearchPanel

* dbeaver/pro#7023 refactor: consolidate grid search state update logic

* dbeaver/pro#7023 refactor: update scrollToCell method signature and related usages

* dbeaver/pro#7023 refactor: update handleCellChangeBatch to use ICellChange type

* dbeaver/pro#7023 refactor: remove unwanted code

* dbeaver/pro#7023 feat: refactor search functionality to use standalone functions

* dbeaver/pro#7023 feat: implement useDataGridSearch hook to avoid bloating the  DataGrid component with the search-related logic

* dbeaver/pro#7023 feat: update search functionality to use onReplace for cell value updates

* dbeaver/pro#7023 feat: use Activity component for search panel visibility in DataGrid

* dbeaver/pro#7023 refactor: use common value transformation fn in set and setMany methods

* dbeaver/pro#7023 refactor: rename methods for "unnkeyed" cache

* dbeaver/pro#7023 refactor: unify cell edit history handling and remove batch edit references

* dbeaver/pro#7023 fix: update searchReadOnly logic

* dbeaver/pro#7023 refactor: replace rowsCountRef with useState (Error: Cannot access refs during render)

* dbeaver/pro#7023 refactor: expose getCellClassName via useImperativeHandle

Replaced onCellClassNameChange prop + useEffect with useImperativeHandle as suggested in code review. Using useState setter directly as callback ref either caused infinite re-renders (without deps) or lost context synchronization entirely (with stable deps). Settled on useCallback ref that sets both useRef (for method access) and useState (for context propagation).

* dbeaver/pro#7023 fix: Cmd+F not re-focusing the search panel when already open

* dbeaver/pro#7023 refactor:  cell edit history compression

* dbeaver/pro#7023 fix: refresh search state on revert

* dbeaver/pro#7023 refactor: move focus blocking during replace into grid component

Previously DataGridTable checked isReplacing() before syncing
focus/selection, leaking grid internals
Now the grid's selectCell blocks during replacing internally and
supports deferred mode (setTimeout + rAF) for post-render focus sync.

* dbeaver/pro#7023 refactor: restructure grid search logic with useReducer and improve state management

* dbeaver/pro#7023 refactor: improve grid search

moved ref synchronization out of render,
unified search+scroll into one shared path,
added a SET_MATCHES no-op guard to reduce unnecessary updates,
removed duplicate open=false persistence from useDataGridSearch (single owner now in useGridSearch).

* dbeaver/pro#7023 refactor: update search state types

* dbeaver/pro#7023 refactor: restructure grid search state interfaces for improved clarity

* dbeaver/pro#7023 refactor: optimize match retrieval logic after removal in grid search

* dbeaver/pro#7023 refactor: sync refs and computed props in one effect

* dbeaver/pro#7023 fix: Esc double handling between SearchPanel and CaptureView hotkeys

* dbeaver/pro#7023 refactor: fix review comments in useGridSearch

* dbeaver/pro#7023 refactor: unify hotkey stop propagation via shared EventContext/EventStopPropagationFlag

* dbeaver/pro#7023 refactor: pass reactive cellText to useGridSearch

* dbeaver/pro#7023 refactor: update grid search reducer actions and navigation logic

reuse SET_ACTIVE_MATCH and computeActiveMatchIdx for consistency

* dbeaver/pro#7023 refactor: improve equality check for cell matches

* dbeaver/pro#7023 feat: implement cell change tracking subscriptions and cleanup logic

* dbeaver/pro#7023 refactor: remove redundant clearTrackedCellSubscriptions

Cleanup implemented in useTrackedGridSearchCellSubscriptions hook

* dbeaver/pro#7023 fix: cancel stale deferred selectCell to prevent infinite focus loop

When multiple rows are deleted, competing deferred selectCell timeouts
cause focusSyncRef mismatch and endless focus-change cycle.

* dbeaver/pro#7023 fix: update keyboard shortcut for search to use 'KeyF'

* dbeaver/pro#7023 feat: make search disabled by default

* dbeaver/pro#7023 fix: layout

* dbeaver/pro#7023 fix: update scrollBox selection method in Table component

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Viktor Kirst <viktor.kirst@dbeaver.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-03-17 17:28:02 +01:00
2abdbce8ff dbeaver/pro#7566 feat: add settings functionality to the new tree (#4184)
* dbeaver/pro#7566 feat: add settings functionality to the new tree

Implemented settings as a part of Toolbar. The key reason was that the TreeToolbar sets different contexts for all other actions related to tree and easily extendible as a menu service. It might limit in some weird cases, but for now it looks like a valid decision

Settings are made as unknown intentionally to be polymorphic. We could use Record<string, unknown> instead, but I don't see it really improving anything.

* dbeaver/pro#7566 refactor: introduce ITreeSettings interface

add filter with settings connection via useTreeFilterState hook

* dbeaver/pro#7566 refactor: remove redundant hooks, update ITreeSettings

* dbeaver/pro#7566 refactor: move actions to cloudbeaver part

* dbeaver/pro#7566 feat: add universal hook that persists any tree settings via UserDataService as a flat key-value record

* dbeaver/pro#7566 refactor: remove unused childrenTransformers and stateTransformers from ITreeFilterState

* dbeaver/pro#7566 feat: enhance tree settings functionality with replace method and user data synchronization

* dbeaver/pro#7566 refactor: remove toolbarFilter from ITreeFilterState interface

* dbeaver/pro#7566 refactor: simplify useUserTreeSettings

* dbeaver/pro#7566 fix: lint rule and defaults inconsistency

* dbeaver/pro#7566 fix: defaults

* dbeaver/pro#7566 fix: update Russian translations for navigation tree settings

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-03-17 17:21:35 +01:00
Tsimafei Labanovich 051695451b dbeaver/pro#8267 Fix git comments (#4189) 2026-03-17 12:28:21 +00:00
sergeyteleshevandEvgenia 5b7a7fc3d6 [CB] Disable constraint on SQL generation for LOBs (#4215)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-17 12:30:28 +01:00
sergeyteleshev 0ba013e7ad [CB] fix high CVE-2026-32141 in flatted (#4217) 2026-03-17 12:27:11 +01:00
Dmitrii Barnukov 2d2f7476b4 dbeaver/pro#5562 removed auth password from props if not applicable (#4216) 2026-03-17 08:33:01 +01:00
23a0ad49b9 dbeaver/pro#8627 Redesign node extensions (#4212)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-16 19:58:57 +01:00
Dmitrii BarnukovandEvgenia d21a5aac7f dbeaver/pro#8637 enable search inside names by default (#4219)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-16 17:30:02 +01:00
f9cd51db0f [CB] add ability for data grid selection to apply for context menu (#4196)
* dbeaver/pro#8187 Adds right click for the cell menu

* supports multiple pin/unpin columns

* applies selection for the features: duplicate, delete, revert, set to NULL

* fixes pin column for 1 column selected

* renames to multiple pin/unpin columns

* reverts sandwich

* adds multiple add row action

* dbeaver/pro#8601 TE + Git fixes (#4193)

* dbeaver/pro#8601 Fix event handlers on RM server

* dbeaver/pro#8601 Fix RM node icons

* dbeaver/pro#8601 Fix RM project obtain

* dbeaver/pro#8592 support new headers (#4190)

* dbeaver/pro#7657 avoid blicking by debounce loading state (#4174)

* dbeaver/pro#7657 avoid blicking by debounce loading state

* dbeaver/pro#7657 use existing hooks

* dbeaver/pro#7657 keep the old behaviour

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>

* dbeaver/pro#8298 fix: preserve query param order, fix incorrect repla… (#4164)

* dbeaver/pro#8298 fix: preserve query param order, fix incorrect replacement, add tooltip

* dbeaver/pro#8298 refactor: rename ordered prop to sortByName and update sorting logic

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>

* fix: on selected cell menu click opens menu

* fix: duplicates on right click 1 row at time

* removes selection on cell click + removes menu sandwich for selected multiple cells

* value panel, upload, download features available only for 1 selected cell

* adds translations for the multiple rows/columns actions

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: Alexander Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-15 10:59:32 +01:00
GeorgiiandDiana 3687a645b6 dbeaver/pro#8591 clickhouse driver update (#4195)
Signed-off-by: Georgii Gvinepadze <fireshowel@gmail.com>
Co-authored-by: Diana <31996417+uslss@users.noreply.github.com>
2026-03-13 15:05:34 +01:00
c142996db0 dbeaver/pro#8497 added constraint attribute name (#4206)
* dbeaver/pro#8497 added constraint attribute name

* dbeaver/pro#8497 fix: deleteConstraint call

we can use ! here because we check for currentConstraint in the code above which we get by comparing constraint.attributePosition === attributePosition, so we can be sure the attributePosition prop is present

---------

Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2026-03-13 14:45:10 +01:00
Dmitrii BarnukovandAinur 36d2b46496 dbeaver/pro#8331 added sql generation for large objects (#4208)
* dbeaver/pro#8331 added sql generation for large objects

* dbeaver/pro#8331 check only relevant columns

---------

Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2026-03-13 12:46:43 +01:00
Ruslan Musaevandmr-anton-t cb8b1cfc52 dbeaver/pro#8467 fix npe read only status (#4183)
* dbeaver/pro#8467 fix npe read only status

* dbeaver/pro#8467 fix navigator model read write lock

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-13 12:13:24 +01:00
743afcaad7 dbeaver/pro#7565 feat: implement drag-and-drop functionality in the n… (#4179)
* dbeaver/pro#7565 feat: implement drag-and-drop functionality in the new tree component

* dbeaver/pro#7565 refactor: optimize node state handling in drag-and-drop functionality

this will avoid additional re-renders in some cases

* dbeaver/pro#7565 refactor: simplify drag-and-drop context handling in useNodeDnD

* dbeaver/pro#7565 fix: add extra check to avoid redundant calls

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
2026-03-12 23:38:15 +01:00
sergeyteleshevandDaria Marutkina 52c78e1aee [CB] Fix high CVE-2025-45141 in tar (#4211)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-03-12 23:25:16 +01:00
Dmitrii Barnukov d0a5c1304a dbeaver/pro#7844 switch lsp ws impl 2026-03-12 15:56:02 +01:00
alexandmr-anton-t ff275c36b6 dbeaver/pro#8493 add fetch size tooltip (#4203)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-03-12 15:42:13 +01:00
Dmitrii Barnukov 85d3d834d0 Merge branch 'devel' of github.com:dbeaver/cloudbeaver into dbeaver/pro#7844-cb-lsp-server 2026-03-12 10:20:03 +01:00
9a94639167 [CB] Error in the console when opening the admin panel (#4194)
* dbeaver/pro#5495 removes formState hack in ServerConfig

* Revert "dbeaver/pro#5495 removes formState hack in ServerConfig"

This reverts commit 1635e60b38.

* respects formState if it is null

* cleanup

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Viktor Kirst <viktor.kirst@dbeaver.com>
2026-03-11 16:41:17 +01:00
alex 74d09ee4dc dbeaver/pro#8665 always show tabs for the right panel (#4210) 2026-03-11 16:37:31 +01:00
Dmitrii Barnukov 09dece1cec Merge branch 'devel' of github.com:dbeaver/cloudbeaver into dbeaver/pro#7844-cb-lsp-server 2026-03-11 15:31:46 +01:00
360aaed795 [CB] Bump NPM dependencies (#4186)
* dbeaver/pro#8307 updates yarn lock

* updates eslint

* updates graphql libs

* updates @types/whatwg-mimetype

* updates whatwg-mimetype

* covers evaluate with unit tests

* updates subscript

* removes Rollup CVE

* removes CVE for storybook

* removes CVE for koa

* removes CVE for minimatch

* removes CVE for ajv

* removes redundant types

* cleanup

* updates yarn.lock

* reverts eslint

* updates yarn.lock

* updates yarn lock

* reverts subscript version

* fixes immutable CVE

* fixes serialize-javascript CVE

* updates yarn lock

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
2026-03-11 13:27:17 +01:00
912ca3fdcd dbeaver/pro#8394 fix ability to test ssh config for the existing conn… (#4166)
* dbeaver/pro#8394 fix ability to test ssh config for the existing connection

* dbeaver/pro#8394 pass the same config to test tunnel

* dbeaver/pro#8394 fix checking not empty for ssh password

* dbeaver/pro#8394 fix after review

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-03-11 12:33:04 +01:00
Ruslan MusaevandDaria Marutkina 32bbfc3a37 dbeaver/pro#8149 fix audit logging ip (#4182)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-03-11 12:32:38 +01:00
1e05ad9eea dbeaver/pro#8223 add new events for messages (#4110)
* dbeaver/pro#8223 add new events for messages

* dbeaver/pro#7138 add error alert variant

* dbeaver/pro#7138 add size for the icon

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-11 12:32:03 +01:00
Serge RiderandEvgenia 4b516c770d dbeaver/pro#8351 Disable devel mode by default (#4136)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-11 12:31:37 +01:00
Dmitrii Barnukov 48057948c2 dbeaver/pro#7844 changed message handler impl 2026-03-11 09:50:29 +01:00
Dmitrii Barnukov ce7107285d Merge branch 'devel' of github.com:dbeaver/cloudbeaver into dbeaver/pro#7844-cb-lsp-server 2026-03-11 09:26:11 +01:00
Serge Rider 4e1fed8177 dbeaver/pro#8626 Refactor QM model init (#4200) 2026-03-10 18:59:22 +01:00
Dmitrii Barnukov a43355425f Merge branch 'devel' into dbeaver/pro#7844-cb-lsp-server 2026-03-10 17:19:10 +01:00
alexandEvgenia 4b30d1073b dbeaver/pro#8355 throttle hover and menu showing (#4176)
* dbeaver/pro#8355 throttle hover and menu showing

* Revert "dbeaver/pro#8355 throttle hover and menu showing"

This reverts commit a88f7aee8b.

* dbeaver/pro#8355 mark hover update as non urgent and non-blocking

* dbeaver/pro#8355 use useHover hook for data grid

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-10 15:48:48 +01:00
269128360d dbeaver/pro#8298 fix: preserve query param order, fix incorrect repla… (#4164)
* dbeaver/pro#8298 fix: preserve query param order, fix incorrect replacement, add tooltip

* dbeaver/pro#8298 refactor: rename ordered prop to sortByName and update sorting logic

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-03-09 17:28:02 +01:00
alexandEvgenia 07db19635e dbeaver/pro#7657 avoid blicking by debounce loading state (#4174)
* dbeaver/pro#7657 avoid blicking by debounce loading state

* dbeaver/pro#7657 use existing hooks

* dbeaver/pro#7657 keep the old behaviour

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-03-09 14:12:16 +01:00
Alexander Skoblikov 41d9ac4296 dbeaver/pro#8592 support new headers (#4190) 2026-03-05 17:57:52 +01:00
Serge Rider a536a93ea3 dbeaver/pro#8601 TE + Git fixes (#4193)
* dbeaver/pro#8601 Fix event handlers on RM server

* dbeaver/pro#8601 Fix RM node icons

* dbeaver/pro#8601 Fix RM project obtain
2026-03-05 17:54:46 +01:00
Alexander Skoblikov aefdca73fa dbeaver/pro#8557 log null host (#4187) 2026-03-04 12:18:26 +01:00
sergeyteleshevandDaria Marutkina 5d402d0c20 Confusing "something went wrong" in case of network issues (#4172)
* dbeaver/pro#8468 adds server is not available network error

* removes localization

* renames method for network state issues

* adds comment

* adds explanations for dev and prod mode errors

* supports multiple browser with network errors

* moves logic to a single method + reuses for events

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-03-03 10:41:04 +01:00
Alexander SkoblikovandSerge Rider fcd1924853 dbeaver/pro#8479 annotation for non executable options (#4170)
Co-authored-by: Serge Rider <serge@jkiss.org>
2026-03-03 09:47:29 +01:00
Malcolm-B-Breaks 05c0aafb53 [CB] Small edit in wording (#4154) 2026-03-02 13:54:14 +01:00
Daria Marutkina 159b1b8bd6 dbeaver/pro#8483 Update README file (#4181)
Updated changelog for version 26.0.0, detailing new features, improvements, and fixes since version 25.3.0.
2026-03-02 11:19:37 +01:00
Tsimafei Labanovich f03c08bde7 dbeaver/pro#8120 Fix kerbeors properrties (#4178) 2026-02-27 11:16:01 +00:00
serge-rider 1b07a66192 dbeaver/pro#8105 Cleanup Http constants 2026-02-27 07:20:39 +01:00
Serge Rider ce1686e0eb dbeaver/pro#8504 Deadlock fix (#4175)
* dbeaver/pro#8504 Deadlock fix

* dbeaver/pro#8504 Deadlock fix
2026-02-26 12:17:58 +01:00
091160a59a dbeaver/pro#8441 fix ssl parameters (#4162)
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-25 16:12:00 +01:00
dbeaver-devops 47d2377b39 dbeaver/pro#8483 26.0.1 version bump 2026-02-24 12:27:49 +01:00
Dmitrii BarnukovandEvgenia 8a3f6455ec dbeaver/pro#8190 secured values masking (#4143)
* dbeaver/pro#8190 secured values masking

* dbeaver/pro#6688 added idp values masking

* dbeaver/pro#8190 fix masking for saved params

* dbeaver/pro#8190 revert showProtected, review improvements

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-23 18:28:56 +01:00
801139e3ff dbeaver/pro#8068 [CB] Fix: form reload on save and AI settings language (#4140)
* dbeaver/pro#8068 fix: FormPart reload after save: race condition between loaded=false and savingPromise

Problem:
FormPart.save() sets loaded=false after successful save, expecting
useAutoLoad to call load() and reload data from server. However,
load() is blocked by formState.savingPromise guard (added recently in dbeaver/pro#8151, 9c406a4e1e),
which is only cleared later in FormState.save() finally block.
By the time savingPromise is cleared, no observable changes trigger
a React re-render, so useAutoLoad never retries — loaded stays false
forever and isChanged always returns false, permanently disabling
the Save button.

Solution:
Make FormPart.save() self-contained by adding an inline post-save
reload. After saveChanges(), set loaded=false (so setInitialState
resets both initialState and state), call loader() directly, then
set loaded=true. This eliminates the dependency on the external
useAutoLoad mechanism for post-save reload, avoiding the race
condition with savingPromise entirely.

* dbeaver/pro#8068 fix(Combobox): preserve custom value on Enter key press

When allowCustomValue is enabled, pressing Enter was selecting
an auto-highlighted item from the dropdown instead of keeping
the user's typed value. Disable autoSelect and close the popover
via Ariakit store on Enter to match the blur behavior.

* dbeaver/pro#8068 fix: after saveChanges(), reset state synchronously via setInitialState

* dbeaver/pro#8068 fix: remove redundant state loading in FormPart class

* dbeaver/pro#8068 feat: improve loadable state handling in useAutoLoad and FormPart

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-23 17:18:50 +01:00
457909dd82 dbeaver/pro#8423 patch resolutions (#4157)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-23 17:18:16 +01:00
Sychev AndreyandEvgenia 9f7e086369 dbeaver/pro#8279 feat: rename CloudBeaver CE to CloudBeaver Community… (#4153)
* dbeaver/pro#8279 feat: rename CloudBeaver CE to CloudBeaver Community across multiple files

* dbeaver/pro#8279 ci: remove unused dependency

* dbeaver/pro#8279 feat: remove unnecessary description fields in plugin.xml and defaultServerConfig.ts

* dbeaver/pro#8279 feat: update copyright year and remove product description fields in multiple locale files

* dbeaver/pro#8279 feat: return product version back to Logo component

* dbeaver/pro#8279 fix: remove exclamation mark from easy config heading

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-23 17:17:31 +01:00
Serge Rider 6e8a09a49e dbeaver/pro#8462 session npe (#4161)
* dbeaver/pro#8462 Persistent session refactoring. Nullability annotations.

* dbeaver/pro#8462 Synchronize active projects
2026-02-23 17:16:42 +01:00
alexandDaria Marutkina 8d11f94ad6 dbeaver/pro#8372 add claude code snippet (#4156)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-23 13:51:57 +01:00
Dmitrii BarnukovandEvgenia 3b0cd66232 dbeaver/pro#8444 bring back error prefix (#4160)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-23 12:37:07 +01:00
alexandEvgenia a60b7d4496 dbeaver/pro#8028 use UsersResourceNewUsers alias (#4150)
* dbeaver/pro#8028 use UsersResourceNewUsers alias

* dbeaver/pro#8028 use executor to add update pagination

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-20 15:40:34 +01:00
Ruslan MusaevandEvgenia 07a3a069fb dbeaver/pro#8281 check inner database password (#4155)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-20 12:32:01 +01:00
mr-anton-t 4511208cad dbeaver/pro#8413 fix fr locale (#4152) 2026-02-20 12:29:34 +01:00
1ab8d15b00 dbeaver/pro#8082 send query parameters as list fix (#4149)
* dbeaver/pro#8082 send query parameters as list fix

* dbeaver/pro#8082 fix: change query parameters handling in QueryDataSource

---------

Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-20 11:20:11 +01:00
alexandEvgenia ae331effde dbeaver/pro#3822 make selection accountable (#4144)
* dbeaver/pro#3822 make selection accountable

* dbeaver/pro#3822 pass cursor to get queries in range

* dbeaver/pro#3822 keep range queries clamped in selection

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-19 21:58:11 +01:00
alexandkseniaguzeeva 6c88030106 dbeaver/pro#8382 pass originalQuery to gql (#4151)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2026-02-19 12:19:30 +01:00
Sychev Andrey 1aea7c19b6 Merge branch 'devel' into dbeaver/pro#7844-cb-lsp-server 2026-02-19 11:45:07 +01:00
Dmitrii Barnukov 4d0f1a1a43 dbeaver/pro#7844 added missing export 2026-02-19 11:18:15 +01:00
alexandDaria Marutkina 5e53341ba1 dbeaver/pro#8317 show all users by default (#4142)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-19 10:04:04 +01:00
Dmitrii BarnukovandDaria Marutkina 9338539564 dbeaver/pro#8023 added nullable exception message handling (#4146)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-19 10:03:33 +01:00
Ruslan MusaevandDaria Marutkina af1aa83d8b dbeaver/pro#7628 fix session refresh on server config update (#4126)
* dbeaver/pro#7628 fix session refresh on server config update

* dbeaver/pro#7628 fix session refresh on server config update

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-19 06:06:21 +01:00
AinurandEvgenia 32671ff239 dbeaver/pro#8196 validate projects on copying connection (#4141)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-19 06:03:50 +01:00
AinurandDaria Marutkina f7c33a7f7e dbeaver/pro#8283 execute get request for gql endpoint in devel mode (#4145)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-18 16:14:01 +01:00
alexandEvgenia d70e4976e5 dbeaver/pro#7511 move readonly loaders to the component (#4137)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-18 12:29:24 +01:00
a0e6154a08 [CB] The generated Custom SSL certificate domain is not displayed (#4127)
* dbeaver/pro#8305 removes serverUrl

* removes unused helper

* adds getCurrentDomain helper

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2026-02-18 12:29:03 +01:00
Daria Marutkina 1b6e729506 dbeaver/pro#8330 Update README file (#4148)
Added changelog entries for version 25.3.5, detailing new features and improvements in Data Editor, Navigator, and General sections.
2026-02-18 10:47:31 +01:00
Sychev Andrey de0958add0 Merge branch 'devel' into dbeaver/pro#7844-cb-lsp-server 2026-02-18 10:23:39 +01:00
Serge Rider 3adb898f5a dbeaver/pro#8365 Cert storage init fix 2026-02-17 11:50:31 +01:00
c886ee7bcd dbeaver/pro#8078 fix: remove translate property from menu transition (#4125)
Initial translation of a menu led to a unwanted hover effect on a first item due to menu and trigger overlapping. Removing this property fixes the problem and the menu still has a nice animation effect, thanks to opacity and scale

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-16 12:54:32 +01:00
Dmitrii Barnukov e7ac881fab dbeaver/pro#7844 added copy 2026-02-16 09:40:28 +01:00
Dmitrii Barnukov ec9b9de142 dbeaver/pro#7844 refactor deps, added socket endpoint 2026-02-16 09:39:14 +01:00
serge-rider a5a9700ab9 dbeaver/pro#7928 Code style, constants 2026-02-15 09:21:36 +01:00
Dmitrii Barnukov 974f003a23 Merge branch 'devel' of github.com:dbeaver/cloudbeaver into dbeaver/pro#7844-cb-lsp-server 2026-02-13 14:54:13 +01:00
2c38e75a99 dbeaver/pro#6761 listen to localhost with host network mode (#4003)
* dbeaver/pro#6761 listen to localhost with host network mode

* dbeaver/pro#6761 merge

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Alexander Skoblikov <aleksandr.skoblikov@dbeaver.com>
2026-02-13 12:46:05 +01:00
Dmitrii Barnukov c96e383018 dbeaver/pro#7844 added lsp web socket 2026-02-12 17:43:54 +01:00
Dmitrii BarnukovandEvgenia 12bc5ba5dc dbeaver/pro#8325 fixed oracle generated selects (#4130)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-11 18:19:23 +01:00
sergeyteleshev 2719f53655 [CB] SQL Query generation: front-end part (#4132)
* dbeaver/pro#8048 pass commit message validation

* fixes json + translations

* fixes gis generation

* uses format action to get text value for sql generators
2026-02-11 18:16:38 +01:00
dbeaver-devops a2d336166b dbeaver/pro#8330 26.0.0 version bump 2026-02-11 12:17:47 +01:00
sergeyteleshevandmr-anton-t 06da0705d2 dbeaver/pro#8303 fixes axios CVE (#4123)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-11 11:14:47 +01:00
058a341815 dbeaver/pro#8197 add connection preferences plugin (#4111)
* dbeaver/pro#8197 add connection preferences plugin

* dbeaver/pro#8197 add preferences form

* dbeaver/pro#8197 wrap to observable

* dbeaver/pro#8197 use config from core package

* dbeaver/pro#8197 adjust naming

* dbeaver/pro#8197 add separate resource for preferences info

* dbeaver/pro#8197 change action naming

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-10 17:16:48 +01:00
Dmitrii BarnukovandDiana f5b0aae8bd dbeaver/pro#8047 exposed resultset SQL generators to CB (#4116)
* dbeaver/pro#8047 exposed resultset SQL generators to CB

* dbeaver/pro#8047 minor fix

* dbeaver/pro#7998 added sql generator tests

* dbeaver/pro#8047 moved data provider

* dbeaver/pro#8047 fixed imports after move

* dbeaver/pro#8047 extracted methods to DBDResultSetModel

---------

Co-authored-by: Diana <31996417+uslss@users.noreply.github.com>
2026-02-10 16:21:17 +01:00
Ainurandkseniaguzeeva 789760aa9e dbeaver/pro#8181 fix saving data source config on init (#4121)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2026-02-10 16:13:56 +01:00
Tsimafei LabanovichandMashaKorax fe77133226 dbeaver/pro#8119 Add CLI commands for project management (create, rename, delete, list) (#4106)
* dbeaver/pro#8119 Add CLI commands for project management (create, rename, delete, list)

* dbeaver/pro#8119 Fix git issues

---------

Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2026-02-10 16:07:06 +01:00
AinurandDaria Marutkina 8e237d1bbc dbeaver/pro#8142 remove public url param (#4119)
* dbeaver/pro#8142 remove public url param

* dbeaver/pro#8142 remove server url in all products

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-10 16:04:22 +01:00
0f3b8033df [CB] Ability to clone connections (#4107)
* dbeaver/pro#6998 adds clone connection in context menu

* adds copy to cloned connection

* dbeaver/pro#6998 fix copy navigator settings

* preload connections names to create correct name for cloned node

* pr fixes: adds translation + unique name among all connections

* adds "копия" locale

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2026-02-10 12:16:56 +01:00
586d4154ab dbeaver/pro#4999 Data editor icons to see pk details (#4040)
* dbeaver/pro#4999 feat: add TableStatusIndicator component and update tooltips for key detection

* dbeaver/pro#4999 feat: update TableStatusIndicator to handle read-only connection state and improve tooltips

* dbeaver/pro#4999 feat: use new backend endpoint to provide info about identifier

* dbeaver/pro#4999 refactor: simplify TableStatusIndicator by removing props and using context directly

* dbeaver/pro#4999 refactor: move hasElementIdentifier to ResultSetDataSource

* pr fixes

* fixes indicator center position + removes duplicated translation

* fixes contrast for color-status (JSON edit row + keys indicator for tables)

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-10 09:41:39 +01:00
e0fe55c3bf dbeaver/pro#6306 api for original query (#4108)
* dbeaver/pro#6306 api for original query

* uses original query from backend for sql data source

* adds description for popup

* removes message

* fixes creating dataset from grouping panel

* adds new full query abstraction

* pr fixes

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2026-02-10 09:40:55 +01:00
9c406a4e1e dbeaver/pro#8151 fix: reset password and key fields on change detection (#4102)
* dbeaver/pro#8151 fix: reset password and key fields on change detection

* fixes ssh save form part flow

* removes race condition

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-09 12:12:37 +01:00
alexandDaria Marutkina 05bf79e59c dbeaver/pro#8218 add doc locale (#4113)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-09 12:11:03 +01:00
sergeyteleshevandEvgenia d013ece4f6 dbeaver/pro#8262 fixes CVE for @isaacs/brace-expansion (#4115)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-09 12:10:18 +01:00
Ruslan Musaev b0205e34c7 dbeaver/cloudbeaver#3833 remove mandatory backup for database community (#4118) 2026-02-06 16:29:46 +01:00
Ruslan MusaevandEvgenia 0b41ae89e8 dbeaver/pro#8211 update duck db version (#4114)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-05 15:30:14 +01:00
Ruslan Musaev b318c262b9 dbeaver/pro#7914 jetty server websocket version bump (#4079) 2026-02-05 11:55:08 +00:00
alex 547831d060 dbeaver/pro#8214 change naming (#4112) 2026-02-05 09:45:06 +01:00
sergeyteleshevandmr-anton-t 93af9a8719 [CB] Decrize the size of radio buttons (#4109)
* dbeaver/pro#8202 decreases border for radio buttons + matches border colors

* fixes checkboxes and radios space conflicts so it aligned on the left and has correct spacing with text also

* reverts margin top for checkboxes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-04 16:25:34 +01:00
Alexander Skoblikov 19125fed5e dbeaver/pro#7888 interface for cli context (#4100) 2026-02-04 10:02:43 +00:00
sergeyteleshevandDaria Marutkina ea5fb47a56 [CB] remove shortcuts intersection for layouts (#4103)
* dbeaver/pro#8104 removes shortcuts intersection

* removes check of an active element (handled by the lib)

* build fix

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-02-03 17:30:59 +01:00
alexandEvgenia 89b4d1f970 dbeaver/pro#7357 use the same saved value indicator across the app (#4099)
* dbeaver/pro#7357 use the same saved value indicator across the app

* dbeaver/pro#7357 check id first

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-02-03 17:26:06 +01:00
Daria Marutkina 0bd89236d2 dbeaver/pro#8155 Update README file (#4105)
Added changelog for version 25.3.4, detailing new features and fixes in Editors, Navigator, and General sections.
2026-02-02 11:36:44 +01:00
Dmitrii Barnukovandmr-anton-t abe0f6fb7d dbeaver/pro#7975 removed vks from api and logic (#4098)
* dbeaver/pro#7975 removed vks from api and logic

* dbeaver/pro#7975 revert api changes

* dbeaver/pro#7975 revert api changes

* dbeaver/pro#7975 revert api changes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-02-02 11:01:03 +01:00
sergeyteleshevandEvgenia 0b2b851772 dbeaver/pro#8156 filters menu bar with hidden actions (#4093)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-30 23:05:08 +08:00
alexandmr-anton-t dcb8e536b8 dbeaver/pro#8067 add tooltip (#4101)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-30 23:04:45 +08:00
sergeyteleshev 7881551821 dbeaver/pro#8175 removes tar and lodash CVEs (#4095) 2026-01-29 12:15:39 +01:00
alexandDaria Marutkina cdc94dce5f dbeaver/pro#8089 validate date before formatting (#4091)
* dbeaver/pro#8089 validate date before formatting

* dbeaver/pro#8089 treat date and time the same

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-28 12:30:09 +01:00
dbeaver-devops 70b67ce6f4 dbeaver/pro#8155 25.3.5 version bump 2026-01-27 19:55:11 +01:00
sergeyteleshevandEvgenia e570a05175 [CB] Improve undo/redo behavior for Data Editor (#4060)
* dbeaver/pro#7614 adds first implementation of grid history action (has bugs)

* some pr fixes

* replace last instead of update method

* adds history compression to cell edit

* add add row history for undo/redo

* adds history for delete row

* adds duplicate row undo/redo

* adds history for revert action

* clears history inside edit clear action

* refactors the undo/redo history to have more clean structure

* cleanup

* adds limits to history

* uses data viewer undo/redo actions

* cleanup for undo/redo actions + adds to the top of table icons

* applies tooltips for the header table only

* removes createEditorDataAccess (refactor)

* removes getPrevCellValue (refactor)

* bug fix: add row, change something, delete row, undo/redo in this history

* adds more specific function naming

* Revert "bug fix: add row, change something, delete row, undo/redo in this history"

This reverts commit 5f1799fe26.

* adds batching history to the adding/deleting operations

* refactors GridHistoryHandlers & GridEditAction API + fixes the bug with deleting added row

* handling edge cases

* cleanup

* pr fixes

* refactor: removes extra interfaces, uses addRow for duplication rows action, handlers cleanup

* refactors the code to split editor changes to private and edits, history & action executions to public methods

* Revert "refactors the code to split editor changes to private and edits, history & action executions to public methods"

This reverts commit 374201179a.

* refactor: removes duplications of the code

* cleanup

* fixes menu bar item tooltip

* fixes labels

* removes get action info

* hides undo/redo for readonly table action

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-27 19:04:04 +01:00
Dmitrii Barnukovandmr-anton-t f82598ad66 Dbeaver/pro#7975 Added row identifier data (#4056)
* dbeaver/pro#7975 added pk info to api

* dbeaver/pro#7975 added row id state

* dbeaver/pro#7975 update doc

* dbeaver/pro#7975 update api

* dbeaver/pro#7975 added copyright

* dbeaver/pro#7975-pk-info extended row id api, added tests

* dbeaver/pro#7975-pk-info added attribute

* dbeaver/pro#7975-pk-info renamed type

* dbeaver/pro#7975-pk-info removed excess params

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-27 19:02:18 +01:00
d3b0b96bae dbeaver/pro#7897 add connection view plugin (#4031)
* dbeaver/pro#7897 add connection view plugin

* dbeaver/pro#7897 add view settings to the connection dialog

* dbeaver/pro#7897 navigator settings as separate resource

* dbeaver/pro#7897 api for original navigator settings config

* dbeaver/pro#7897 use original settings for connection dialog

* dbeaver/pro#7897 save connection view fixes

* dbeaver/pro#7897 update node on reset

* dbeaver/pro#7897 remove extra comments

* dbeaver/pro#7897 do not update node if only global settings had changed

* dbeaver/pro#7897 reuse view

* dbeaver/pro#7897 fixes after review

* dbeaver/pro#7897 return old api for user settings

* dbeaver/pro#7897 change field name

* dbeaver/pro#7897 add descriptions

* dbeaver/pro#7897 get defaults settings in creation mode

* dbeaver/pro#7897 get defaults based on userSettings flag

* dbeaver/pro#7897 remove extra locales

* dbeaver/pro#7897 send object event fix

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2026-01-27 18:58:55 +01:00
sergeyteleshev ec9c2b895b dbeaver/pro#8150 this reverts commit 4088e7998e (#4090) 2026-01-27 16:59:00 +01:00
be8744232b dbeaver/pro#7578 break long words (#4088)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-01-27 15:46:58 +01:00
4088e7998e dbeaver/pro#7578 fix: auth dialog overflow (#4086)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-01-27 15:46:52 +01:00
c540728fee dbeaver/cloudbeaver#4025 fix cloudbeaver semantic sql completion (#4081)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-01-27 14:29:21 +01:00
84f0903fc7 dbeaver/pro#7576 feat: mcp configuration (#4084)
* dbeaver/pro#7576 feat: mcp configuration

* fix: close form after creation

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2026-01-27 14:24:29 +01:00
sergeyteleshevandmr-anton-t 89152a09a1 [CB] Bump NPM dependencies (#4070)
* dbeaver/pro#7626 bumps yarn locks

* updates globals

* bumps subscript major version

* bumps react-data-grid

* fixes react-data-grid checksum

* bumps yarn.lock

* reverts 'true' & 'false' literals for ObjectPropertyInfo

* reverts subscript to ver v9 due to poor v10 library support (it is not working api)

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-27 14:11:49 +01:00
0bfdcf0886 dbeaver/pro#7769 fix properties mapping for enums (#4052)
* dbeaver/pro#7769 fix properties mapping for enums

* dbeaver/pro#7769 fix annotations

* dbeaver/pro#7769 use custom extended interface

* dbeaver/pro#7769 check explicit value

* dbeaver/pro#7769 avoid declaring extra variable

* dbeaver/pro#7769 always use isNotNullDefined in terms of backend data

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2026-01-27 12:53:40 +01:00
Ruslan MusaevandEvgenia d2d3ada58a dbeaver/pro#7268 bump logback version (#4083)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-27 09:35:34 +01:00
alexandDaria Marutkina a62478a574 dbeaver/pro#7383 make pointer target at least 24px (#4080)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-27 00:50:28 +08:00
sergeyteleshevandEvgenia 980473918e [CB] Use the Tab key for autocomplete (#4051)
* dbeaver/pro#7555 adds autocomplete on tab + refactors shortcuts api

* adds unit tests for getCommonAndOSSpecificKeys

* uses prec.high to give some space to overriding shortcuts

* reverts keysWin + fixes the tests

* pr fixes

* adds escape editor shortcut to the shortcuts helper

* shows only 1 shortcut for autocomplete + shows os specific keys first in help doc

* fixes shortcuts so no repeats applied

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-26 17:20:15 +08:00
Ruslan MusaevandEvgenia 26712e7bca dbeaver/pro#7458 backend now send event on canceling query job (#4068)
* dbeaver/pro#7458 backend now send event on canceling query job

* dbeaver/pro#7458 fixes

* dbeaver/pro#7458 fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-23 17:18:12 +01:00
Ainur 9597e99bc9 dbeaver/pro#8064 return features from license and add tests (#4075)
* dbeaver/pro#8064 return features from license and add tests

* dbeaver/pro#8064 get feature registry from application

* dbeaver/pro#8064 implement get feature registry in base method
2026-01-23 12:10:34 +01:00
Alexey PotsetsuevandDaria Marutkina 7f92abd33e dbeaver/pro#4541 feat: show children of tables (#4073)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-23 19:02:05 +08:00
alexandEvgenia ad686faca8 dbeaver/pro#4692 show spinner when loading new page (#4072)
* dbeaver/pro#4692 show spinner when loading new page

* dbeaver/pro#4692 use button instead of div

* dbeaver/pro#4692 use button from core blocks

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-22 17:17:27 +08:00
Ainur c02411085e dbeaver/pro#8016 fix tests (#4077) 2026-01-21 17:33:50 +01:00
Alexey PotsetsuevandDaria Marutkina 90fcbe6b7f dbeaver/pro#7854 feat: display query with parameters (#4064)
* dbeaver/pro#7854 feat: display query with parameters

* fix: use replaceAll instead of replace

* dbeaver/pro#7854 fix: support parameters and variables

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-22 00:18:25 +08:00
sergeyteleshevandDaria Marutkina 1deffb984b Critical UX Issue: Delete key marks entire row as deleted during inline cell editing (#4063)
* dbeaver/pro#4061 changes KEY_BINDING_DELETE_ROW shortcut to prevent deleting row during cell editing

* considers the case with deleting whole row during editing

* uses only delete shortcut

* considers browser default behavior

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-21 20:27:59 +08:00
Ruslan MusaevandEvgenia bd52ee6583 dbeaver/pro#7936 Change object settings table (#4046)
* dbeaver/pro#7936 Change object settings table

* dbeaver/pro#7936 Change object settings table

* dbeaver/pro#7936 Change object settings table

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-21 12:39:01 +01:00
sergeyteleshevandDaria Marutkina 013ad81581 dbeaver/pro#7738 adds unique name to notification for create connection success (#4071)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-21 16:46:49 +08:00
sergeyteleshevandEvgenia 4843002e0d [CB] fix contrast colors in sql editor whitespace highlight system (#4067)
* dbeaver/pro#8055 fixes contrast color issues with whitespace highlighting in sql editor

* makes a bit more contrast colors

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-21 16:46:33 +08:00
Ruslan MusaevandDaria Marutkina 9a05d0bf7f dbeaver/pro#7881 fix unauthorized qm session (#4039)
* dbeaver/pro#7881 fix unauthorized qm session

* dbeaver/pro#7881 fix unauthorized qm session

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-20 18:44:59 +01:00
ecaa4934b1 dbeaver/pro#4917 save project information in one place (#3985)
* dbeaver/pro#4917 save project information in one place

* dbeaver/pro#4917 remove projects info after deleting project

* dbeaver/pro#4917 fix creating resource type folders

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2026-01-20 18:44:18 +01:00
8d89bc25ba dbeaver/pro#5145 add rename action for connection (#4041)
* dbeaver/pro#5145 add rename action for connection

* dbeaver/pro#5145 return node id in renaming node function

* dbeaver/pro#5145 add can rename feature for data source

* dbeaver/pro#5145 use new node path from backend

* dbeaver/pro#5145 use new node id

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-20 18:43:48 +08:00
Daria Marutkina 40581e746b dbeaver/pro#8017 Update README file (#4069) 2026-01-19 13:41:14 +01:00
alexandDaria Marutkina a9911d9297 dbeaver/pro#7339 do not confirm transaction if count is zero (#4057)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-19 19:33:40 +08:00
Sychev Andrey a8d437dce6 dbeaver/pro#8051 fix: support time-only formatting in DateTimeFormatter and update related tests (#4065) 2026-01-17 10:38:12 +01:00
sergeyteleshev bacd1bff91 dbeaver/pro#8025 fixes filters for select cell (#4055) 2026-01-14 16:28:14 +01:00
dbeaver-devops 1d9b0a2943 dbeaver/pro#8017 25.3.4 version bump 2026-01-13 18:56:01 +01:00
Alexey PotsetsuevandDaria Marutkina aa6a81428c dbeaver/pro#5880 fix: column size (#4049)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-14 00:48:05 +08:00
sergeyteleshev b91ca06359 No translation and tooltips for connection switcher (#4050)
* dbeaver/pro#8001 fixes tooltip and translation

* adds shorten connections limits
2026-01-13 23:51:01 +08:00
Alexey PotsetsuevandDaria Marutkina 244479cd06 dbeaver/pro#7397 feat: reload after session expire (#4043)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-13 22:54:08 +08:00
Dmitrii Barnukovandmr-anton-t 1c56d55462 dbeaver/pro#7978 fix duckdb driver id (#4048)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-13 13:11:17 +01:00
be78d2fe92 [CB] Remove tooltips from context menu (#4033)
* dbeaver/pro#7772 adds truncated tooltips for context menus

* dbeaver/pro#7772 adds " ... " for long labels

* adds unit tests

* Update webapp/packages/core-blocks/src/Menu/MenuItemElement.tsx

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>

* adds binding for delete row

* removes tooltips

* fixes tree filters clipping

* clips only names, not whole labels

* clips only names, not whole labels [2]

* reverts getBindingLabels + fixes the os specific keys to show it first

* clips only names, not whole labels [3]

* dbeaver/pro#7772 simplifies keys helpers logic

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-13 19:57:27 +08:00
Sychev Andreyandmr-anton-t 4178826ff4 7855 cb add setting use the users os formatting for numbersdates (#4020)
* dbeaver/pro#7855 feat: Add setting to use the user's OS formatting for numbers and dates

* dbeaver/pro#7855 refactor: update OS formatting option value in DataGridSettingsService

* dbeaver/pro#7855 feat: implement OS formatting for date and time in DataGrid

* dbeaver/pro#7855 feat: implement user-specific formatting for numbers in DataGrid

* dbeaver/pro#7855 feat: add translations

* dbeaver/pro#7855 style: update date formatter

* dbeaver/pro#7855 feat: add locale-specific formatting options for DataGrid settings

* dbeaver/pro#7855 feat: add support for locale-specific formatting with regions

* dbeaver/pro#7855 refactor: move date type detection to the grid level

* dbeaver/pro#7855 refactor: simplify cell formatter selection logic

* dbeaver/pro#7855 refactor: move formatting to a separate context

* dbeaver/pro#7855 refactor: optimize extended date kind retrieval logic

* dbeaver/pro#7855 fix: tw class names

* dbeaver/pro#7855 refactor: change caching mechanism and other improvements

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-13 18:29:48 +08:00
27ef1fdf73 [CB] [TE] [FE] Permission denied for using dataset grouping panel by Viewer/Editor (#4035)
* dbeaver/pro#7849 uses asyncSqlGropingResultSet for grouping result set instead of getResultsetGroupingQuery

* dbeaver/pro#7849 fix validation and rename graphql function

* dbeaver/pro#7849 add current results id for filtering

* refactors asyncSqlGroupingResultSet so it has current results id

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-13 17:38:07 +08:00
Alexey Potsetsuev 5b0bedcf5e dbeaver/pro#5890 chore: users cache improvements (#4045) 2026-01-13 17:37:45 +08:00
Sychev AndreyandDaria Marutkina 821805eba8 dbeaver/pro#7840 [CB] support opening web socket event that sends an url on front end side (#4036)
* dbeaver/pro#7840 feat: add core session actions module with open URL event handler

* dbeaver/pro#7840 feat: add localization support

* dbeaver/pro#7840 feat: show url in textarea

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-12 17:29:32 +08:00
6531e45357 [CB] [f] CB user used as db user (#4009)
* dbeaver/pro#7813 disables autocomplete for passwords (connection authentication)

* removes autocomplete in ssh tab

* removes auto-complete for auth provider

* fixes autofills

* reverts autocompleteSectionName="section-connection-authentication"

* removes password autocomplete

* Revert "removes password autocomplete"

This reverts commit d470c002ed.

* dbeaver/pro#7813 fixes more cases with autocomplete

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-12 17:09:44 +08:00
Serge Rider 598fb92eaf dbeaver/dbeaver#40069 Change auto-commit setting UIX (#4038) 2026-01-09 16:43:55 +01:00
71dda4aa45 dbeaver/pro#7603 add long polling transport (#4002)
* dbeaver/pro#7603 add long polling transport

* dbeaver/pro#7603 use next observer

* dbeaver/pro#7603 use ref count instead of internal observers

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-09 17:57:20 +08:00
Serge RiderandMatvey16 cc1861c614 dbeaver/dbeaver#39210 Add Sybase dialect. Disable AS keyword. MArk system schemas (#4037)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2026-01-08 17:11:08 +01:00
67c15af74d [CB] Shortcuts for the Data Editor (#4016)
* dbeaver/pro#7025 moves shortcuts for data editor to plugin-data-viewer and reuses it in shortcuts helper plugin

* adds save binding to data editor

* adds cancel shortcut

* changes save shortcut

* dbeaver/pro#7025 change binding key

* uses mod+. shortcut for cancel action (data editor)

* Revert "uses mod+. shortcut for cancel action (data editor)"

This reverts commit c5b375c2cf.

* adds mod+. shortcut for cancel

* adds shortcut for mac for deleting row in table

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
2026-01-08 22:57:57 +08:00
Sychev Andreyandmr-anton-t 79194b2b50 dbeaver/pro#7370 feat: change checkbox, combobox, and select border widths to 1px (#4028)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-08 18:57:11 +08:00
sergeyteleshevandDaria Marutkina 673b824cb5 dbeaver/pro#6679 fixes fill containers so status message truncated fine (#4030)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2026-01-08 18:56:55 +08:00
4e7555c419 dbeaver/pro#5232 [CB] Trap Focus In the Right Panel (#3952)
* dbeaver/pro#5232 feat: add Dialog component to UI-kit

* dbeaver/pro#5232 feat: add slide variant for Dialog component

* dbeaver/pro#5232 refactor: dialog backdrop component

* dbeaver/pro#5232 feat: use dialog component for side panel to prevent focus escaping

* dbeaver/pro#5232 feat: add DialogHeader, DialogBody, and DialogFooter components for improved dialog layout

* dbeaver/pro#5232 feat: add Storysource addon to Storybook configuration

* dbeaver/pro#5232 refactor: use ui-kit dialog for CommonDialog implementation

* dbeaver/pro#5232 feat: add animated prop to Dialog component to control animations

* dbeaver/pro#5232 refactor: remove dialog animation for side panel

* dbeaver/pro#5232 refactor: remove unused backdrop and focus management logic from DialogsPortal

now handled by ariakit dialog component

* dbeaver/pro#5232 style: adjust dialog padding and size for large variant

* dbeaver/pro#5232 feat: add dialog to admin part implementation

* dbeaver/pro#5232 fix: remove autofocus prop from CommonDialogWrapper in AuthDialog and DriverSelectorDialog

* dbeaver/pro#5232 style: correct apostrophe in label text for NestedDialogs component

* dbeaver/pro#5232 fix: update dialog component styles for improved accessibility and layout

* dbeaver/pro#5232 refactor: add DialogElement component to get rid of code duplication

* dbeaver/pro#5232 fix: correct min-width for large fixedWidth dialog size

* dbeaver/pro#5232 refactor: update DialogElement properties for improved focus management

* dbeaver/pro#5232 fix: use l10n for DialogElement close buttons

* dbeaver/pro#5232 refactor: update DialogElement to be a modal to trap focus

* dbeaver/pro#5232 refactor: remove unmountOnHide prop from CommonDialogWrapper

* dbeaver/pro#5232 feat: return ESC hotkey handling in SlideBox

* dbeaver/pro#5232 feat: make background panel inert to make focus never reach hidden panel

* dbeaver/pro#5232 feat: add SlidePanel component to replace DialogElement by removing Dialog

* dbeaver/pro#5232 feat: add inert prop to SlideElement for focus trapping in visible part

* dbeaver/pro#5232 feat: pass onClose handler to SlideBox to activate hotkey

* dbeaver/pro#5232 style: return to initial state to avoid redundant diffs

* dbeaver/pro#5232 style: update copyright year in SlideElement.module.css

* dbeaver/pro#5232 chore: remove ui-kit dependency from package.json and tsconfig.json

* dbeaver/pro#5232 build: update @storybook/addon-storysource dependency version

* dbeaver/pro#5232 build: update @storybook/addon-storysource dependency version

* dbeaver/pro#5232 style: remove border styles from dialog header and footer

* dbeaver/pro#5232 fix: update hover background color for icon button

* dbeaver/pro#5232 feat: move focus from driver dialog to panel when applicable

* dbeaver/pro#6326 fix: large window size

* dbeaver/pro#5232 fix: update focus on hide logic

* dbeaver/pro#5232 fix: update hover and focus styles for icon button in SlidePanel

* dbeaver/pro#5232 feat: return back the common backdrop, replace common fallback to spinner

* dbeaver/pro#5232 fix: replace useFocus by dialog's initial focus in Rename dialog

* dbeaver/pro#5232 build: update deps after merge

* dbeaver/pro#5232 refactor: use constant for button id

* dbeaver/pro#5232 feat: add Loader component to DialogsPortal

* dbeaver/pro#5232 refactor: update Dialog component to use semantic HTML elements for header and footer

* dbeaver/pro#5232 fix: gap in footer of dialogs

* dbeaver/pro#5232 feat: focus input initially in New Folder dialog

* dbeaver/pro#5232 feat: add autoFocusOnShow prop to CommonDialogWrapper for improved focus management

* dbeaver/pro#5232 fix: padding for CommonDialogFooter

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2026-01-08 18:56:13 +08:00
Dmitrii Barnukovandmr-anton-t 9d0e75dba8 dbeaver/pro#7618 added lsp tests to cb (#4000)
* dbeaver/pro#7618 moved lsp tests to cb

* dbeaver/pro#7618 added plugin to feature

* dbeaver/pro#7618 added module

* dbeaver/pro#7618 added module

* dbeaver/pro#7618 fix module

* dbeaver/pro#7618 fix dependency

* dbeaver/pro#7618 moved resource utils to model

* dbeaver/pro#7618 review improvements

* dbeaver/pro#7618 removed rcp

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2026-01-06 18:07:49 +01:00
Alexander SkoblikovandMashaKorax 44cc1badf4 dbeaver/pro#7710 merge fixes (#4026)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2026-01-06 06:03:15 +01:00
Sychev Andrey fdb4894ae4 dbeaver/pro#7940 feat: add helper function to get localized display names (#4029) 2026-01-06 01:01:45 +08:00
Daria Marutkina a836412ee4 dbeaver/pro#7916 Update README file (#4027)
* dbeaver/pro#7916 Update README file

* Update README.md

* Update README.md
2026-01-05 11:54:49 +01:00
Serge Rider 38b0246240 dbeaver/pro#7850 Base model refactoring (#4022)
* dbeaver/pro#7906 App shutdown fixes (listeners unregister)

* dbeaver/pro#7906 File systems usage refactoring (move to model)

* dbeaver/pro#7906 Logging fix

* dbeaver/pro#7906 Logging fix

* dbeaver/pro#7850 Logging fix
2026-01-03 09:17:15 +01:00
Serge Rider 0bf769a662 dbeaver/pro#2787 Adapters annotations and interface 2025-12-31 10:59:38 +01:00
dbeaver-devops 0349bcee4c dbeaver/pro#7916 Bump version 25.3.3 2025-12-29 19:42:03 +01:00
44b89296d2 dbeaver/pro#7798 [CB] Fix: menu after migration to new (#4008)
* dbeaver/pro#7798 fix: remove unwanted wrapper and relevant CSS module

* dbeaver/pro#7798 feat: add refresh action to user administration tools menu

* dbeaver/pro#7798 fix: add loader to context menu rendering

The menu was failing to open on first click due to lazy-loaded custom items (ContextMenuSearchItem) suspending the entire top navigation bar on initial load, causing portal recreation and loss of open state. Wrapped menu items in a local Loader to ensure lazy components load within the popover without affecting the parent component.

* dbeaver/pro#7798 fix: use suspense for each renderMenuItem

* dbeaver/pro#7798 refactor: simplify orderItems method in CreateUserBootstrap

* dbeaver/pro#7798 fix: fix menuBarItem styles

* dbeaver/pro#7798 refactor: update CreateUserBootstrap to include AdministrationScreenService

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-29 18:38:06 +01:00
Sychev AndreyandDaria Marutkina b75d802883 dbeaver/pro#4612 feat: remove closeOnBlur option from autocompletion configuration (#4014)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-29 17:03:46 +01:00
9652520073 dbeaver/pro#7090 move auth island, show desc as placeholder (#4012)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-29 17:03:33 +01:00
AinurandEvgenia 7e7d6634de dbeaver/pro#7157 save origin in web session (#3976)
* dbeaver/pro#7157 save origin in web session

* dbeaver/pro#7157 rename origin and add event object

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-29 14:00:26 +01:00
c12561965f dbeaver/pro#7481 ability to read/write to an external fs (#4007)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-12-29 13:50:10 +01:00
Dmitrii BarnukovandDaria Marutkina 7a12ad4b91 dbeaver/pro#7693 added key attributes row id check (#4019)
* dbeaver/pro#7693 added key attributes row id check

* dbeaver/pro#7693 added fix for single row tables

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-29 12:35:47 +01:00
serge-rider c39de17df8 dbeaver/pro#7906 App initialization error handle 2025-12-29 10:29:59 +01:00
serge-rider 147edde923 dbeaver/pro#7850 Remove cloud config parametrization 2025-12-28 17:05:39 +01:00
serge-rider aeaa864f57 dbeaver/pro#7850 Logging fix 2025-12-28 16:35:00 +01:00
serge-rider bcda3e4312 dbeaver/pro#7253 Remove redundant code + comments. 2025-12-27 06:13:42 +01:00
serge-rider 72a007ceb6 dbeaver/pro#7900 Logging config added 2025-12-26 18:00:36 +01:00
serge-rider e08ba6845e dbeaver/pro#7900 Redundant logging removed 2025-12-26 17:34:21 +01:00
Georgii 8f1fc1f36e dbeaver/pro#7900 fix unit test run (#4021)
Signed-off-by: Georgii Gvinepadze <fireshowel@gmail.com>
2025-12-26 17:24:21 +01:00
b5cfcaef31 dbeaver/pro#7253 save nav settings as specific to user (#3949)
* dbeaver/pro#7253 save nav settings as specific to user

* dbeaver/pro#7253 delete all project settings fix

* dbeaver/pro#7253 fixes after review and add api for getting object settings

* dbeaver/pro#7253 delete object info from db and change logic of loading settings

* dbeaver/pro#7253 fixes after review

* dbeaver/pro#7253 serialize/deserialize nav settings in common place

* dbeaver/pro#7253 fix updating schema for postgres

* dbeaver/pro#7253 add oracle migration

* dbeaver/pro#7253 fix oracle migration

* dbeaver/pro#7253 fix getting object settings for anonymous user

* dbeaver/pro#7253 fix applying config for anonymous user

* dbeaver/pro#7253 add events to handle connection view update

* dbeaver/pro#7253 update schema and change user navigator settings logic

* dbeaver/pro#7253 setSettings fixes. Remove redundant json serialization. Use string->string map everywhere. Delete datasource settings handler.

* dbeaver/pro#7253 Simplify model. Add object type as parameter.

* dbeaver/pro#7253 Remove copy-paste in project settings impl.

* dbeaver/pro#7253 Remove copy-paste in project settings impl.

* dbeaver/pro#7253 Navigator settings API and update fixes

* dbeaver/pro#7253 Navigator settings save/clear redesign (keep in separate options)

* dbeaver/pro#7253 User settings test. Test refactoring.

* dbeaver/pro#7253 setUserSettings API and test

* dbeaver/pro#7253 setUserSettings API and test

* dbeaver/pro#7253 setUserSettings API and test

* dbeaver/pro#7253 Fix drivers Maven config

* dbeaver/pro#7253 Schema update

* dbeaver/pro#7894 API comments

* dbeaver/pro#7862 Object setting cleanup fix (do it on DS level)

* dbeaver/pro#7862 REST API fixes

* dbeaver/pro#7253 Fix REST parameters encoding + annotations

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: serge-rider <serge@dbeaver.com>
Co-authored-by: Daria Markaryan <43252954+DariaMarkaryan@users.noreply.github.com>
2025-12-26 17:17:22 +01:00
Ruslan Musaev e9b1079f85 dbeaver/cloudbeaver#3998 ldap transitive group matching (#4015) 2025-12-25 16:18:41 +00:00
Georgii 326514f914 dbeaver/pro#6739 remove classifier (#4018)
Signed-off-by: Georgii Gvinepadze <fireshowel@gmail.com>
2025-12-25 14:27:48 +04:00
Viktor Kirst 67489a03b3 dbeaver/pro#7865 Do not extend web sessions on long-poll GET requests (#4010) 2025-12-25 09:38:15 +00:00
GeorgiiandMatvey16 4ea0baf79b dbeaver/pro#6739 update clickhouse to version 0.9.5 (#3999)
Signed-off-by: Georgii Gvinepadze <fireshowel@gmail.com>
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2025-12-25 07:12:39 +01:00
Sychev Andreyandsergeyteleshev 939f4d046a dbeaver/pro#7564 feat: Add "File Tree Selection" to the Tree component (#3974)
* dbeaver/pro#7564 feat: add selectChildren option to tree selection API

* dbeaver/pro#7564 feat: add node multi selection API to the new tree component

* dbeaver/pro#7564 feat: add new selection type

* dbeaver/pro#7564 refactor: remove getSelectedNodes method from tree selection interfaces

* dbeaver/pro#7564 fix: update selection clearing logic in useTreeClickSelection to avoid multiple callback calls

* dbeaver/pro#7564 refactor: optimize node collection in collectVisibleNodes function

* dbeaver/pro#7564 refactor: simplify selection handling logic in Node component

* dbeaver/pro#7564 refactor: streamline selection state handling in useTreeClickSelection

* dbeaver/pro#7564 refactor: replace inline default selection state with constant

* dbeaver/pro#7564 refactor: replace default node selection constant with a function

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-12-24 14:19:50 +01:00
cd3cc2e92f dbeaver/pro#7667 feat: add tree toolbar functionality to new tree (#3981)
* dbeaver/pro#7667 feat: add tree toolbar functionality to new tree

* dbeaver/pro#7667 refactor: remove unused ITreeSelection import and selection property from ITreeToolbar

* dbeaver/pro#7667 refactor: remove autoFocus from Filter component

* dbeaver/pro#7667 refactor: move onClick handler from Icon to IconButton

* dbeaver/pro#7667 refactor: add className prop to TreeToolbarMenu component

* dbeaver/pro#7667 feat: implement new navigation tree toolbar using composition and data context

* dbeaver/pro#7667 feat: update toolbar menu localization files

* dbeaver/pro#7667 refactor: navigation tree components to use lazy loading and improve type definitions

* dbeaver/pro#7667 refactor: restructure Tree component removing extra wrapper

* dbeaver/pro#7667 refactor: update treeToolbarActionHandler to use async/await for refresh actions

* dbeaver/pro#7667 refactor: remove undefined type from data context creation

* dbeaver/pro#7667 fix: restructure Tree component to fix Toolbar with scroll

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-24 14:04:07 +01:00
7a8c4a141f [CB] Ability to pin column in the Data Editor (#3794)
* dbeaver/pro#6859 adds pin/unpin methods for data grid

* resets state when pins + makes pin icon stay when pinned

* adds TableHeaderCellIcon component with new Menu

* make actions alive

* cleanup

* moves pin logic into data-viewer

* cleanup

* restructures pin logic via contexts

* cleanup

* synchronizes column ids with view ids so pining works fine

* fixes actions visibility

* fix: correct layout on editing frozen cell

* fixes layout so frozen cell box-shadow can divide pinned and unpinned columns

* fixes border and box shadow interactions for frozen and editing cell

* makes pinned columns non transparent

* makes frozen border 3px and reverts previous style changes

* styles cleanup

* adds column true and visual indexes and reuses it across the data grid features

* cleanup

* reverts removed code

* reverts hacks with ids

* dbeaver/pro#7748 updates yarn.locks

* fixes incorrect types

* updates helper libs

* updates vitest + fixes test cases incorrect mocks

* runs tests sequentially with document and windows objects to prevent mock collisions

* Revert "runs tests sequentially with document and windows objects to prevent mock collisions"

This reverts commit f871837df3.

* skips download test

* removes export from resetDeprecatedSettings

* updates react-data-grid to beta-59 and react to 19.2

* updates storybook

* pr fixes

* updates yarn lock

* removes skip for download test

* cleanups download ts with empty body html

* updates vitest for core-connections

* updates yarn.lock

* linter fix + mocks once

* fixes hotkeys

* reverts version of react-hotkeys-hook library

* pr fixes

* code style fix

* dbeaver/pro#6859 adds selectCellByKey for opening editor

* reverts styles

* adds pin/unpin icons

* Revert "reverts styles"

This reverts commit 7857ef672d.

* on add actions sets correct focus

* removes incorrect positioning when editing pinned column

* tunes dark theme colors

* adds DnD to pin/unpin feature

* pr fixes

* fixes multiple selections for pinned & unpinned columns

* refactors multiple selections for pinned & unpinned columns so it uses data-grid api of getting sorted columns

* moves pin logic to usePinnedColumns hook

* moves color styles into data grid

* fixes letter

* adds styles for pinned border only for data editor

* adds unpin all columns action

* moves pinned logic to grid view action to save pinned state between tabs

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
2025-12-24 13:44:02 +01:00
5db7a0de5e [CB] Setting to show spaces and line breaks in the SQL Editor (#3997)
* dbeaver/pro#7570 adds highlight for text spaces and new line

* refactors + changes colors

* allows to add props to extensions

* pointer events none for new line

* do not show enter symbol if line has no whitespaces below this line

* removes highlightTrailingWhitespace so the red background disappears

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
2025-12-24 13:09:02 +01:00
Ivan GagarkinandIvan Gagarkin 15c61239ec dbeaver/pro#7572 Refactor WebSession attribute handling to use ThrowableConsumer and ThrowableFunction (#4004)
Co-authored-by: Ivan Gagarkin <gagarkin@Ivans-MacBook-Pro.local>
2025-12-24 10:50:48 +01:00
alexandmr-anton-t 164d155e7d dbeaver/pro#7868 increase table font size (#4011)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-23 19:34:54 +01:00
821c9c8e56 [CB] Always preload specific icons for application (#3984)
* dbeaver/pro#6985 preloads icons

* simplifies the structure

* dbeaver/pro#6985 adds icons to preload

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
2025-12-23 16:47:16 +01:00
Ruslan Musaev b58e01794d dbeaver/pro#7688 Add missing fields description graphql (#4001)
* dbeaver/pro#7688 Add missing fields description graphql
2025-12-23 10:20:11 +01:00
sergeyteleshev fbc5f2d3ce dbeaver/pro#7848 removes storybook high CVE (#4005) 2025-12-22 19:51:14 +01:00
ae9e87950a dbeaver/pro#7809 use popover to show auth methods (#3995)
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-22 19:47:22 +01:00
Anastasiya 58db928e34 dbeaver/pro#7812 Add CloudBeaver CE release notes 25.3.1; add alt attribute for logo (#4006) 2025-12-22 16:22:53 +03:00
Serge Riderandkseniaguzeeva 583519d9a7 dbeaver/pro#7797 Product deployment model (#3988)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-12-22 09:49:18 +01:00
Ruslan Musaev a96862a444 dbeaver/pro#7073 add grouping endpoint grahpql (#3960)
* dbeaver/pro#7073 add grouping endpoint grahpql

* dbeaver/pro#7073 add grouping endpoint grahpql

* dbeaver/pro#7073 add isInteractive var

* dbeaver/pro#7073 added working test

* dbeaver/pro#7073 fix test
2025-12-19 14:37:22 +01:00
Viktor Kirst b9d115ec33 Dbeaver/pro#7777 polling error http 400 (#3983)
* dbeaver/pro#7777 Handle expired access token in long-polling servlet

* dbeaver/pro#7777 Touch web session on long-poll activity

* dbeaver/pro#7804 Support cb_session_id cookie for HTTP long-polling sessions

* dbeaver/pro#7804 Refactor LP session resolvers and unify WebHttpRequestInfo creation

* dbeaver/pro#7777 Use token-expired HTTP status for LP auth failures

* dbeaver/pro#7777 Use SMException for session resolution errors and token expiration

* dbeaver/pro#7777 Remove unused constant
2025-12-19 13:51:24 +01:00
sergeyteleshevandmr-anton-t 78daa21c87 [CB] update frontend deps (#3973)
* dbeaver/pro#7748 updates yarn.locks

* fixes incorrect types

* updates helper libs

* updates vitest + fixes test cases incorrect mocks

* runs tests sequentially with document and windows objects to prevent mock collisions

* Revert "runs tests sequentially with document and windows objects to prevent mock collisions"

This reverts commit f871837df3.

* skips download test

* removes export from resetDeprecatedSettings

* updates react-data-grid to beta-59 and react to 19.2

* updates storybook

* pr fixes

* updates yarn lock

* removes skip for download test

* cleanups download ts with empty body html

* updates vitest for core-connections

* updates yarn.lock

* linter fix + mocks once

* fixes hotkeys

* reverts version of react-hotkeys-hook library

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-18 12:49:11 +01:00
Sychev AndreyandDaria Marutkina 50090a3035 dbeaver/pro#7810 fix: improve submenu visibility handling for lazy-lo… (#3993)
* dbeaver/pro#7810 fix: improve submenu visibility handling for lazy-loaded items

* dbeaver/pro#7810 fix: return back isDisabled for handler

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-18 10:59:40 +01:00
Sychev Andrey fc9b1d388f dbeaver/pro#7811 feat: fix file selection for uploads by removing focus and visibility listeners (#3992) 2025-12-17 16:51:25 +01:00
dbeaver-devops 0c053efd68 automerged by dbeaver-devops 2025-12-16 20:01:35 +01:00
abf07b8c5b dbeaver/pro#7189 add event for query params (#3866)
* dbeaver/pro#7189 add event for query params

* dbeaver/pro#7189 add event objects to graphql

* dbeaver/pro#7189 cancel future fix

* feat: query parameters

* dbeaver/pro#7389 fix: save confirmation

* dbeaver/pro#7189 extract base model from parameters provider

* dbeaver/pro#7189 move client events to cloudbeaver

* fix: do not ask previous params not presented in request

* dbeaver/pro#7189 resolve conflicts

* chore: change form UI

* fix: reset query parameters in SQL Editor

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-16 19:30:49 +01:00
Ruslan MusaevandDaria Marutkina c119c93a7d Dbeaver/pro#6123 add unauthorize audit loging (#3977)
* dbeaver/pro#6123 remove reset user state

* dbeaver/pro#6123 remove reset user state on auth

* dbeaver/pro#6123 remove reset user state on auth

* dbeaver/pro#6123 fix last remote addr

* dbeaver/pro#6123 fix last remote addr

* dbeaver/pro#6123 fix last remote addr

* dbeaver/pro#6123 revert taking ip from header

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-16 15:20:12 +01:00
c2045091d0 dbeaver/pro#7610 add polyfils (#3978)
* dbeaver/pro#7610 add polyfils

* dbeaver/pro#7610 sync browserlist config

* dbeaver/pro#7610 specify only major version

* dbeaver/pro#7610 change to fixed year

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-12-16 14:54:58 +01:00
alex 9483df70ac dbeaver/pro#7801 convert to boolean (#3986) 2025-12-16 14:49:12 +01:00
AinurandDaria Marutkina d774540803 dbeaver/pro#7743 update lz4 to 1.10.1 (#3962)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-16 12:27:25 +01:00
Serge Rider 736442be35 dbeaver/pro#7796 Annotations 2025-12-13 15:19:45 +01:00
serge-rider 8ee58e0ce8 dbeaver/pro#7796 Trace logging and fixes 2025-12-13 07:37:06 +01:00
serge-rider 163b96bcae dbeaver/pro#7796 Trace logging and fixes 2025-12-13 07:33:07 +01:00
Alexander SkoblikovandMashaKorax 6c915eedc3 dbeaver/pro#7778 ignore splash/nosplash options (#3980)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-12-13 06:09:01 +01:00
b9d55bc121 dbeaver/pro#4503 migrate admin tables to data grid (#3942)
* dbeaver/pro#4503 migrate admin tables to data grid

* dbeaver/pro#4503 migrate users and teams pages

* dbeaver/pro#4503 add additional deps

* dbeaver/pro#4503 dont mutate original constant

* dbeaver/pro#4503 simplify conditional column adding

* dbeaver/pro#4503 unify styles

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
2025-12-13 10:50:25 +08:00
Alexey Potsetsuevandsergeyteleshev cb23fda311 dbeaver/pro#7465 refactor: migrate context menu to ariakit (#3963)
* dbeaver/pro#7465 refactor: migrate context menu to ariakit

* refactor: remove unused modal prop from ContextMenu and clean up schema name handling

* chore: add memoization to the base context menu components

* fix: menu issues

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-12-13 10:44:15 +08:00
Viktor Kirst dc97f315ab dbeaver/pro#7767 Add cookie-based session support (#3975) 2025-12-12 11:13:00 +00:00
sergeyteleshev 5d2c6dc062 [CB] write unit tests (#3928)
* dbeaver/pro#7563 adds unit tests for core-utils

* removes restore all mocks

* adds eslint rules: now arrow function + no unnamed functions (to improve debug experience)

* fixes test according new eslint rules

* removes arrow function expression eslint

* adds Icon Or Image unit tests

* removes problematic test

* useSMock & sMock + reuses these mocks

* adds StaticImage tests

* adds UploadArea tests

* adds tests for useAdministrationSettings

* un-skips useCombinedHandler

* tries to fix useObjectRef via correct mocking (failed github action)

* adds useErrorDetails tests

* rewrites useObjectRef tests so it works stable

* unskips app-init & getTextFileReadingProcess

* adds useFuzzySearch tests

* adds useSearch tests

* pr fixes after copilot review

* self review fixes

* pr fixes

* introduces user events

* uses get by role id to check accessibility of the components

* fixes redefined focus in body

* removes mocks

* removes mocks 2

* removes mocks 3

* removes repeated test cases
2025-12-12 18:55:50 +08:00
Alexey Potsetsuevandmr-anton-t 435aac2860 dbeaver/pro#6962 refactor: replace complex loader with-simple solution (#3968)
* dbeaver/pro#6962 refactor: replace complex loader with-simple solution

* refactor: simplify function declarations in createLazyLoader

* fix: ensure notify is called after loading state updates in createLazyLoader

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-12 17:54:19 +08:00
sergeyteleshevandmr-anton-t e0cdf745ad [CB] Improve description for ordering icon (#3958)
* dbeaver/pro#7554 adds translation for order button

* moves translate context to render app level + adds 2 translations for the sorting with the flag

* cleanup

* linter fix

* pr fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-12 17:53:45 +08:00
5e11a1d0b1 dbeaver/pro#6987 replace regex with js (#3954)
* dbeaver/pro#6987 replace regex with js

* dbeaver/pro#6987 update lock file

* dbeaver/pro#6987 add additional deps for testing

* dbeaver/pro#6987 use first index

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-11 22:36:43 +08:00
sergeyteleshevandmr-anton-t 83125bf8b5 [CB] Use only 1 Input component across the app (#3938)
* dbeaver/pro#7041 replaces uikit input with core-blocks InputField for PropertyItem (connection driver properties)

* uses Input from ui-kit for react-data-grid from common-react

* separates Input and InputField logic so we can reuse Input somewhere else

* uses input from core-blocks in search panel

* uses input from core-blocks inside fetch size action

* removes hover styles if input is focused

* adds Input to inline editor

* removes style registries

* replaces module styles with css layers api

* cleanup

* calcs padding from spacing

* reverts input field base

* reverts input fields base 2

* fixes styles for inline editor and fetch size action

* fixes outline for inputs

* fixes hover styles for combobox so it matches input hover behavior

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-11 18:23:04 +08:00
3b435459a2 dbeaver/pro#6545 allow to save anonym preferences (#3948)
* dbeaver/pro#6545 allow to save anonym preferences

* dbeaver/pro#6545 remove validation for updating user preferences

* dbeaver/pro#6545 fix returning anonymous user info

* dbeaver/pro#6545 add field to gql

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-11 18:22:41 +08:00
Ruslan MusaevandDaria Marutkina 5dad35b73d dbeaver/pro#7607 fix Firefox gql console (#3969)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-11 10:31:46 +01:00
AinurandDaria Marutkina e801f85e7c dbeaver/pro#7636 add and fix tests (#3940)
* dbeaver/pro#7636 add and fix tests

* dbeaver/pro#7636 fixes after review

* dbeaver/pro#7636 fix locale name

* dbeaver/pro#7636 fixes after review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-11 10:31:14 +01:00
alexandDaria Marutkina a39af0fd1b dbeaver/pro#7527 persist right panel tabs (#3951)
* dbeaver/pro#7527 persist right panel tabs

* dbeaver/pro#7527 fix typo

* dbeaver/pro#7527 set open context right before opening panel

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-10 17:13:57 +08:00
sergeyteleshevandDaria Marutkina 9ec227ddb1 dbeaver/pro#6407 fixes error during sorting (#3967)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-10 17:13:18 +08:00
Ruslan MusaevandEvgenia 749c116743 dbeaver/pro#6612 ldap group mapping full dn (#3966)
* dbeaver/pro#6612 ldap group mapping full dn

* dbeaver/pro#6612 ldap group mapping full dn

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-09 14:10:36 +01:00
Ruslan MusaevandDaria Marutkina d6221e3d33 dbeaver/pro#7295 do not use GSON for connection creds serialization (#3937)
* dbeaver/pro#7295 do not use GSON for connection creds serialization

* dbeaver/pro#7295 do not use GSON for connection creds serialization

* dbeaver/pro#7295 do not use GSON for connection creds serialization

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-09 11:51:02 +01:00
sergeyteleshevandDaria Marutkina 6316ab0cbb [CB] Error updating metadata (#3953)
* dbeaver/pro#6480 checks if nodes parents loaded to verify if some entities are missing

* fixes linter await issues

* uses offset pagination key to check if all parents were loaded

* adds isNodeLoadedInAnyPage logic

* reverts all changes

* adds hasMorePagesForRootNode logic

* linter fix

* checks if parent has more data for each closest parent (not just a root one) + renames helper

* renames helper to sound shorter

* build fix

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-12-09 15:49:52 +08:00
sergeyteleshevandmr-anton-t e2e18e01e9 [CB] Migrate Clickable (reakit) to the Command (ariakit) (#3941)
* dbeaver/pro#7238 adds replaces Reakit Clickable element with AriaKit Command

* uses focusable ariakit element instead of command

* cleanup

* Revert "cleanup"

This reverts commit 84ef074242.

* Revert "uses focusable ariakit element instead of command"

This reverts commit ab255989b9.

* handles tree node expand click events + removes unused styles

* removes reakit-system dep

* fixes ref for formatting rule

* cleans storybook

* clickable cleanup

* replaces Clickable component with Command from ui-kit

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-12-09 15:49:24 +08:00
Ainur d042a18d46 dbeaver/pro#7615 do not load project settings fix (#3936) 2025-12-08 16:53:38 +01:00
alexandEvgenia 88d7a8d6eb dbeaver/pro#7662 adjust markdown styles (#3947)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-08 22:58:42 +08:00
Ruslan MusaevandEvgenia 33bf82970f dbeaver/cloudbeaver#3484 ldap rbac (#3959)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-07 16:47:55 +01:00
AinurandEvgenia ea552d613b dbeaver/pro#7704 update lz4 to 1.8.1 (#3956)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-12-05 12:35:04 +01:00
Serge Rider 0ae6a648d8 dbeaver/pro#7703 Annotations and code style (#3955)
* dbeaver/pro#7703 Annotations and code style

* dbeaver/pro#7703 Annotations and code style

* dbeaver/pro#7703 Remove redundant feature s config
2025-12-05 07:19:16 +01:00
Alexander Skoblikov a674e11960 dbeaver/pro#7352 remove cli dependency from model bundles (#3945) 2025-12-04 14:46:34 +01:00
Viktor Kirst d1065037b9 Dbeaver/pro#7442 http long polling fallback for ws event (#3900)
* dbeaver/pro#7442 Add Long-Polling transport support for event manager

* dbeaver/pro#7442 Inline headless-session creation in LongPolling servlet

* dbeaver/pro#7442 Improve long-poll session resolution and add unit tests

* dbeaver/pro#7442 Expose resolveSession for testing and remove reflection in tests

* dbeaver/pro#7442 Add copyright

* dbeaver/pro#7442 Improve long-poll CORS and interrupt handling
2025-12-04 12:08:21 +01:00
serge-rider dd3ab9d5a1 dbeaver/pro#6200 Fix GQL parameters logging 2025-12-04 09:04:40 +01:00
serge-rider 7b94dc60ab dbeaver/pro#7644 Auth model replace detect. GCP localization. 2025-12-04 08:50:20 +01:00
serge-rider 25089a9a70 dbeaver/pro#4996 Remove redundant logging 2025-12-04 08:36:41 +01:00
Serge Rider d645365869 dbeaver/pro#7644 Auth model replace detect. GCP localization. (#3950) 2025-12-04 08:25:14 +01:00
Solovev Anton eb4f11aa0a dbeaver/pro#7632: fix drop message creation (#3939) 2025-12-02 15:24:36 +01:00
Daria Marutkina ec3ba12699 dbeaver/pro#7593 Update README file (#3946)
* dbeaver/pro#7593 Update README file
2025-12-01 11:46:51 +01:00
Ainur a75a7ea5a4 dbeaver/pro#7648 global permission validation fix (#3943) 2025-11-28 16:14:33 +00:00
Sychev Andreyandmr-anton-t 3ca904924b dbeaver/pro#7106 refactor: replace ScriptImportDialog with Confirmati… (#3930)
* dbeaver/pro#7106 refactor: replace ScriptImportDialog with ConfirmationDialog

* dbeaver/pro#7106 feat: enable extra action in confirmation dialog for unsaved changes

* dbeaver/pro#7106 fix: properly handles extra action (no download)

* dbeaver/pro#7106 refactor: simplify import dialog

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-28 19:15:37 +08:00
ShadelessFox 46a0adb682 dbeaver/pro#7221 Change API (#3935) 2025-11-25 14:05:00 +00:00
dbeaver-devops b9b4dc040c automerged by dbeaver-devops 2025-11-24 20:50:25 +01:00
Sychev Andrey 5973bd708f dbeaver/pro#7567 [CB] [F] invalid style for dropdown button (#3932)
* dbeaver/pro#7567 fix: update disabled state styles for select and combobox components

* dbeaver/pro#7567 fix: update foreground variable for disclosure component
2025-11-24 17:58:37 +01:00
698ee3cba1 dbeaver/pro#7556 hide show sql button for editor and viewer (#3929)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-11-21 18:21:20 +01:00
9394667673 dbeaver/pro#7413 [CB] New Disclosure Component (#3927)
* dbeaver/pro#7413 feat: add Disclosure component to UI Kit

* dbeaver/pro#7413 feat: implement new disclosure component in CB with proper outline support and animations

* dbeaver/pro#7413 style: update disclosure gap to use tw spacing

* dbeaver/pro#7413 refactor: add Disclosure component story to Storybook (remove from ladle)

* dbeaver/pro#7413 refactor: update class names for disclosure components in Expandable

* dbeaver/pro#7413 feat: disable transitions for reduced motion preference

* dbeaver/pro#7413 refactor: convert arrow function to named function in Expandable component

* dbeaver/pro#7413 refactor: simplify media query for reduced motion transitions

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-11-21 18:16:31 +01:00
AinurandEvgenia 37877ccf66 dbeaver/pro#5020 fix counting rows filtered data (#3923)
* dbeaver/pro#5020 fix counting rows filtered data

* dbeaver/pro#5020 fix progress monitor

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-21 18:10:27 +01:00
Sychev Andreyandmr-anton-t dc28d68208 #6724 Accessibility improvements (#3877)
* dbeaver/pro#6724 feat: add authentication model label to connection form

* dbeaver/pro#6724 refactor: change interface in StaticImage component to pass native props to provide a11y properties

* dbeaver/pro#6724 fix: add role attribute for icons in Driver selector

Those driver icons are not adding any meaning to the list items, so we can easily hide them from a11y tools.

* dbeaver/pro#6724 refactor: rename autofillToken to autocompleteSectionName and update related logic in forms

We used to have autocomplete parameters that do not meet specifications of HTML Input Autocomplete attribute.
We can't use any string there, there are list of tokens that browsers support: https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill plus two global states: "on" and "off".

Logic was refactored to use section token + username or current password tokens fo form where we provide auth details.
All other inputs use just general "on" state to let browsers decide how to fill this field, except cases where we disable password autocompletion.

also fixes a typo

* dbeaver/pro#6724 fix: don't turn on autocomplete if disabled

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-21 23:53:53 +08:00
b55398a969 dbeaver/pro#7320 inject mixins (#3901)
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-11-21 13:22:13 +01:00
Ainur 6584a2252e dbeaver/pro#7553 remove redundant gql type param (#3925) 2025-11-21 12:15:21 +01:00
Alexey PotsetsuevandDaria Marutkina 411def42f9 dbeaver/pro#5083 feat: script status message (#3914)
* dbeaver/pro#5083 feat: script status message

* chore: use `TLocalizationToken`

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-21 16:58:47 +08:00
8b471138db [CB] Fix high CVE-2025-64756 on glob (#3913)
* dbeaver/pro#7520 updates glob lib to reduce high vulnerability

* sets version ^11.1

* uses yarn depute

* moves resolution to the webapp

* moves glob to dev deps

* reverts glob for devDeps

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-21 16:58:18 +08:00
Sychev Andreyandmr-anton-t e2a5e1fca2 dbeaver/pro#6416 refactor: adjust height property for treeNodeNested (#3891)
* dbeaver/pro#6416 refactor: adjust height property for treeNodeNested

* dbeaver/pro#6416 refactor: remove height styles for TreeNodeNested and refactor empty placeholder rendering in NodeChildren

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-21 16:53:23 +08:00
alexandDaria Marutkina 9c2bc100b1 dbeaver/pro#4893 add ability to reselect file (#3924)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-21 16:52:52 +08:00
sergeyteleshevandDaria Marutkina 8b08927af8 [CB] Context menu corrupted on Windows + remove delete shortcut (#3912)
* dbeaver/pro#7024 fixes corrupted layout + removes delete shortcut from erase action

* removes delete binding for "remove column filter" + adds translations

* adds quotes for columns

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-21 16:51:57 +08:00
7ea627a24f dbeaver/pro#7547 do not refresh user state on server config save (#3922)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-11-21 09:24:22 +01:00
Ruslan MusaevandEvgenia dc5f86c40c Dbeaver/pro#7192 ldap case insensitivity (#3907)
* dbeaver/pro#7192 ldap case insensitivity

* dbeaver/pro#7192 ldap case-insensitive matching

* dbeaver/pro#7192 case insensitive from auth descriptor

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-21 09:23:28 +01:00
24b7b6021d Add reorder option to tabs #4583 (#3872)
* dbeaver/pro#4583 feat: add tab reordering functionality in NavigationTabsService

* dbeaver/pro#4583 feat: update tab filtering to support tabs order

* dbeaver/pro#4583 feat: add tab drag-and-drop functionality and associated tests

* dbeaver/pro#4583 feat: implement tab drag-and-drop functionality

* dbeaver/pro#4583 fix: adjust tab reordering logic to handle dragged tab position correctly

since our reordering logic is duplicating in two components and, moreover, I found a bug in one of the implementations, I decided to put all the common logic to a dedicated helper with test coverage to be sure we use the right logic everywhere.

* dbeaver/pro#4583 test: remove redundant tests for onReorder in useTabDragAndDrop

* dbeaver/pro#4583 refactor: update reorderTab method to remove return value

* dbeaver/pro#4583 feat: add tab reordering functionality to SqlResultTabs component

* dbeaver/pro#4583 feat: add tabs order persistence via useUserData hook

* dbeaver/pro#4583 feat: integrate react-dnd for tab drag-and-drop functionality

* dbeaver/pro#4583 chore: update deps

* dbeaver/pro#4583 feat: integrate @dbeaver/js-helpers for array reordering in useHeaderDnD

* dbeaver/pro#4583 refactor: simplify reorderArray implementation by extracting some logic to helpers

* dbeaver/pro#4583 refactor: extracted tab reordering to a separate hook

- moved the tab order persistence logic into a new useTabOrderPersistence hook to make the flow is more obvious (we use this default persistence only with tabs container)
- introduced new reorderStateKey tab state to have an identifier for a tab panel, use it in canDrop check to prevent cross-panel DnD
-replaced reorderable prop with reorderStateKey, because without a key you can't use reordering

* dbeaver/pro#4583 refactor: add dropAllowed state to useTabDragAndDrop for improved drag-and-drop UI

* dbeaver/pro#4583 chore: add a comment about reorderStateKey

* dbeaver/pro#4583 refactor: add safe guard in SqlResultTabs.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* dbeaver/pro#4583 refactor: wrap onReorder function into useCallback for improved performance

* dbeaver/pro#4583 refactor: remove applyOrder method from ITabsContainer and update useTabOrderPersistence to not have dependencies on container

* dbeaver/pro#4583 refactor: use refactored hook in SideBarPanel and ToolsPanel

Since we are not mutating a container state anymore, we have to update sorting separately in TabList level because it reads directly from the container.

* dbeaver/pro#4583 refactor: remove fallback for stateKey

* dbeaver/pro#4583 refactor: replace hardcoded values with constants in useTabDragAndDrop

* dbeaver/pro#4583 refactor: add DragPosition type

* dbeaver/pro#4583 refactor: remove dependencies in TabsState effect

* dbeaver/pro#4583 refactor: remove stateKey from useTab hook

* dbeaver/pro#4583 feat: add panelId prop to SideBarPanel and use as persistence key

* dbeaver/pro#4583 refactor: persistence key in useTabOrderPersistence

* dbeaver/pro#4583 feat: add reorderArrayWithOrder helper and update SqlResultTabs to use it

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-20 19:25:04 +08:00
Sychev Andrey 2f64827ad4 dbeaver/pro#7549 refactor: adjust padding and color for disabled sele… (#3921)
* dbeaver/pro#7549 refactor: adjust padding and color for disabled select state to unify view between disabled controls

unify icon view as well

* dbeaver/pro#7549 style: fix if clause
2025-11-20 17:46:42 +08:00
Alexey PotsetsuevandEvgenia e443a88ae7 dbeaver/pro#5818 fix: error message (#3920)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-20 15:43:49 +08:00
Alexey PotsetsuevandEvgenia f46857fe6d dbeaver/pro#6188 fix: loader styles (#3918)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-20 15:42:45 +08:00
alexandEvgenia 11f8568238 dbeaver/pro#5581 use new method to check if user is presenter (#3917)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-20 15:42:09 +08:00
alexandEvgenia b81c7732d1 dbeaver/pro#7282 show alert for admin team in connection tab (#3911)
* dbeaver/pro#7282 show alert for admin team in connection tab

* dbeaver/pro#7282 use team part to get permissions

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-20 15:41:37 +08:00
3592e77851 dbeaver/pro#7171 fixes incorrect padding for comboboxes (#3887)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-20 15:40:56 +08:00
4b0e8b5e91 dbeaver/pro#7514 fix: sql query segment end inclusion (#3909)
* dbeaver/pro#7514 fix: sql query segment end inclusion

* fix: query execution in new tab

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-19 15:55:50 +01:00
Alexander SkoblikovandMashaKorax 802a3e69fe dbeaver/dbeaver#39682 fix -help command (#3915)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-11-19 13:40:15 +01:00
Ruslan MusaevandEvgenia d409aad739 dbeaver/pro#7473 fix ldap port saving (#3910)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-19 12:44:51 +01:00
Sychev Andrey 9b01659a6f dbeaver/pro#7544 chore: replace deprecated VSCode intelliCode extension with GitHub Copilot Chat (#3919) 2025-11-19 18:46:37 +08:00
sergeyteleshevandEvgenia 354f13d0d4 [CB] put new user to top after creation (#3903)
* dbeaver/pro#5085 sorts users alphabetically + shows new users on top

* reverts sorting for enabled and disabled users (required backend to sort properly)

* cleanup

* removes repetitive filters and sorting

* simplifies users logic + user.createdAt is number type

* refactor: sortUsersById -> compareUsers

* compare new users

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-19 16:51:19 +08:00
Sychev AndreyandEvgenia e39b1b1ee2 dbeaver/pro#5833 feat: add animation for enabling pointer events when content is in place (#3908)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-19 16:50:34 +08:00
sergeyteleshev f818fb1c85 [CB] TE too many requests navNodeInfo (connection edit) which freezes interface (#3894)
* dbeaver/pro#7480 fix: preloads only connection info by key (not all) to prevent connectioInfoResource loading of all data and all following handlers actions

* adds console error and return empty array for origin info loader

* warning instead of error
2025-11-18 19:36:40 +08:00
AinurandDaria Marutkina 6253d3e543 dbeaver/cloudbeaver#3736 filter non root empty folders fix (#3902)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-18 11:16:30 +01:00
AinurandEvgenia c7a6cc967e dbeaver/pro#7164 fix test connection without saved creds (#3906)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-18 11:15:33 +01:00
Ainur c3ac257fdd dbeaver/pro#7474 fix stack overflow on gql extended logs (#3895) 2025-11-18 11:12:18 +01:00
sergeyteleshevandDaria Marutkina c9b1278788 dbeaver/pro#7316 changes order of inputs in folder dialog (#3897)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-18 17:11:34 +08:00
alexandEvgenia 58d316f396 dbeaver/pro#5591 add padding to popup (#3883)
* dbeaver/pro#5591 add padding to popup

* dbeaver/pro#5591 sanitize input

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-18 17:10:48 +08:00
sergeyteleshevandDaria Marutkina 37e5e1865c [CB] [f] invalid dialog name when export VQB diagram (#3889)
* dbeaver/pro#7419 renames header for export image dialog

* fixes text case for eng locale

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-18 17:10:28 +08:00
alexandDaria Marutkina 8cfe6a98e5 dbeaver/pro#7382 change combobox to select (#3888)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-18 17:09:50 +08:00
Alexey PotsetsuevandDaria Marutkina 20026d1d30 dbeaver/pro#7389 fix: save confirmation (#3904)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-17 23:07:26 +08:00
Daria Marutkina 7c72232215 dbeaver/pro#7470 Update README file (#3905) 2025-11-17 12:38:09 +01:00
alexandEvgenia 64118de61c dbeaver/pro#5094 use safe property access (#3893)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-17 19:10:16 +08:00
Alexey PotsetsuevandDaria Marutkina 17331e6a8f dbeaver/pro#6595 fix: pagination cache (#3886)
dbeaver/pro#6988 fix: allow empty query in VQB
dbeaver/pro#6512 fix: remove bind session from easy config
dbeaver/pro#6734 fix: allowed server urls description

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-17 18:52:10 +08:00
dbeaver-devops 46079dea6a dbeaver/pro#7470 25.3.0 version bump (#3890) 2025-11-12 20:07:34 +01:00
Serge Rider d8f2df0564 dbeaver/pro#7455 Remove redundant errors re-throws (#3885) 2025-11-12 17:10:09 +01:00
alexandDaria Marutkina f64bc1b435 dbeaver/pro#7359 add support service (#3878)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-12 23:35:01 +08:00
754927a1ae dbeaver/pro#6363 adds settings for dangerous queries dialogs (#3858)
* dbeaver/pro#6363 adds settings for dangerous queries dialogs

* cleanup

* dbeaver/pro#6363 Added confirmation preference checks

* dbeaver/pro#6363 Added defaults

* Revert "cleanup"

This reverts commit a1e16ae5a1.

* Revert "dbeaver/pro#6363 adds settings for dangerous queries dialogs"

This reverts commit a88ca77049.

* dbeaver/pro#6363 Moved properties to config

* dbeaver/pro#6363 adds default server settings service

* refactor: split `SettingsSource` into `SettingsSource` and `EditableSettingsSource`

* dbeaver/pro#6363 message improvement

* dbeaver/pro#6363 increase timeout

* fix: edited value fallback

* dbeaver/pro#6363 fix defaults

* dbeaver/pro#6363 fix localization labels/descriptions

* fix: localization change

* fix: settings label collision

* dbeaver/pro#6363 fixed auth provider localizations

---------

Co-authored-by: Dmitrii Barnukov <dmitrii.barnukov@dbeaver.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-11-12 16:27:19 +01:00
Dmitrii Barnukov cebbe2a89b dbeaver/cloudbeaver#3873 fix datafilter for a single filtered row (#3884) 2025-11-12 15:27:28 +01:00
alexandDaria Marutkina 8e44be20b0 dbeaver/pro#6525 add search to schema and connection lists (#3875)
* dbeaver/pro#6525 add search to schema and connection lists

* dbeaver/pro#6525 filter by real entities

* dbeaver/pro#6525 unify logic

* dbeaver/pro#6525 continue if excluded

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-11 16:58:18 +08:00
Serge Rider f37a753834 dbeaver/pro#7349 Redshift 2.2 (#3881)
* dbeaver/pro#7349 Statements close + error handling

* dbeaver/pro#7349 Use fetch workflow. It closes statement before fetchEnd call

* dbeaver/pro#7349 Code style and annotations

* dbeaver/pro#7349 Fix resultet fetch in CB
2025-11-10 18:50:04 +01:00
AinurandEvgenia 348fe0c9df dbeaver/pro#7343 add additional validation for token auth (#3876)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-10 13:37:01 +01:00
Serge Rider a62b528018 Revert "dbeaver/pro#6739 update clickhouse version (#3871)"
This reverts commit e1dc245446.
2025-11-10 09:29:49 +01:00
GeorgiiandSerge Rider e1dc245446 dbeaver/pro#6739 update clickhouse version (#3871)
Co-authored-by: Serge Rider <serge@jkiss.org>
2025-11-08 21:26:32 +01:00
AinurandEvgenia 4bbb9ccb93 dbeaver/pro#7364 update sql server driver to 13.2.1 (#3870)
* dbeaver/pro#7364 update sql server driver to 12.8.2

* dbeaver/pro#7364 update sql server driver to 13.2.1

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-07 10:20:12 +01:00
e60ea477f5 dbeaver/pro#6745 add viewer for request query (#3868)
* dbeaver/pro#6745 add viewer for request query

* dbeaver/pro#6745 remove duplicated import

* dbeaver/pro#6745 remove extra margin

* dbeaver/pro#6745 fallback to options query

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-06 22:14:35 +08:00
serge-rider 493424ce7d Merge remote-tracking branch 'origin/devel' into devel 2025-11-06 07:09:45 +01:00
serge-rider d59f06276c dbeaver/dbeaver#39381 Deps versions update 2025-11-06 07:09:03 +01:00
9593b7a6c3 dbeaver/pro#7210 feat: color palette (#3854)
* dbeaver/pro#7081 feat: conditional formatting for data editor

* feat: code cleanup after review + reworked rules management

* feat: add SVG icons for conditional formatting and update localization strings

* chore: after review

* feat: refactor conditional formatting presentation and add transition component

* refactor: reorder Props interface fields for consistency

* refactor: remove unused onAddRule prop from ColorScaleRuleForm and SingleColorRuleForm

* feat: add SVG icon for conditional formatting

* fix: charts

* feat: refactor conditional formatting utilities and improve code organization

* fix: localization

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: hide conditional formatting from UI

* dbeaver/pro#7210 feat: color palette

* chore: codestyle

* chore: pr review, use `color` library for manipulating css colors

* chore: revert panel hiding

* chore: localization

* fix: use custom row renderer with mobx observer

* fix: line hightlight style

* chore: remove unused types

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-05 13:52:23 +01:00
alexandEvgenia 0955c18e38 dbeaver/pro#7237 change label (#3869)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-05 15:06:59 +08:00
Ruslan Musaev dd3f00a3a8 dbeaver/pro#7356 fix escaping special symbols for group search in LDAP (#3865) 2025-11-04 19:45:21 +01:00
Ruslan MusaevandEvgenia 22c7f0d3f2 Dbeaver/pro#6200 mask secret paramters (#3828)
* dbeaver/pro#6976 poc log masking

* dbeaver/pro#6364 mask secret params

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#6200 add masking annotation for sensitive parameters

* dbeaver/pro#7263 add log about count current users

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-11-04 19:42:36 +01:00
alexandDaria Marutkina 5997d4b1a2 dbeaver/pro#6096 add execute queries method (#3855)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-11-04 19:12:27 +08:00
cdae6efbd2 dbeaver/pro#7081 feat: conditional formatting for data editor (#3838)
* dbeaver/pro#7081 feat: conditional formatting for data editor

* feat: code cleanup after review + reworked rules management

* feat: add SVG icons for conditional formatting and update localization strings

* chore: after review

* feat: refactor conditional formatting presentation and add transition component

* refactor: reorder Props interface fields for consistency

* refactor: remove unused onAddRule prop from ColorScaleRuleForm and SingleColorRuleForm

* feat: add SVG icon for conditional formatting

* fix: charts

* feat: refactor conditional formatting utilities and improve code organization

* fix: localization

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: hide conditional formatting from UI

* fix: use custom row renderer with mobx observer

* fix: line hightlight style

* chore: remove unused types

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-11-03 19:11:50 +08:00
Daria Marutkina ced66cd5e0 dbeaver/pro#7168 Update README file (#3864)
* dbeaver/pro#7168 Update README file

* Update README.md
2025-11-03 11:35:15 +01:00
dbeaver-devops 4a67c5d3ff dbeaver/pro#7303 25.2.5 version bump (#3859) 2025-10-28 19:05:31 +01:00
AinurandEvgenia 39873f20a8 dbeaver/pro#5903 add timeout job for federated auth (#3850)
* dbeaver/pro#5903 add timeout job for federated auth

* dbeaver/pro#5903 review fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-28 18:56:27 +02:00
ShadelessFoxandkseniaguzeeva c5e8d510a2 dbeaver/pro#6769 Check data and sql execution related permissions (#3847)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-10-28 17:14:54 +01:00
2a107f3d63 dbeaver/pro#6509 Query confirmations (#3793)
* dbeaver/pro#6509 Added events

* dbeaver/pro#6509 Updated/renamed new events

* chore: add taskId for server events

* dbeaver/pro#6509 Added confirmation events impl

* dbeaver/pro#6509 Added task id to server events

* feat: async task confirmation

* chore: add icon

* dbeaver/pro#6509 Renamed and moved events to model

* dbeaver/pro#6509 Treat cancel and timeout as errors

* dbeaver/pro#6509 fix timeout

* feat: automatically close confirmation dialog on timeout or task finish

* fix: confirmation dialog styles

* dbeaver/pro#6475 Added web sql messages

* fix: update button styles in ConfirmationDialog for consistency

* dbeaver/pro#6475 Added interactive events flag

* dbeaver/pro#6475 Added param description

* feat: add isInteractive parameter to asyncSqlExecuteQuery mutation and QueryDataSource

* fix: update copyright year to 2025 in LocaleService.ts

* fix: set dialog size to medium in confirmation event

* fix: update confirmation skip message for localization files

* fix: modify reject function signatures for consistency

* dbeaver/pro#6509 Added manual query rules

* dbeaver/pro#6509 Added messages for 2 distinct confirmations

* dbeaver/pro#6509 moved confirmation descriptor to model (WIP)

* dbeaver/pro#6509 improve messages

* dbeaver/pro#6509 web locale support

* fix: merge conflict

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-28 14:35:38 +01:00
a2eab0935b dbeaver/pro#5481 add GrantManagementTable component (#3841)
* dbeaver/pro#5481 add GrantManagementTable component

* dbeaver/pro#5481 fix import style

* dbeaver/pro#5481 simplify logic

* dbeaver/pro#5481 separate common select logic

* dbeaver/pro#5481 check optional prop

* dbeaver/pro#5481 migrate connection table

* dbeaver/pro#5481 use column object for key checking

* dbeaver/pro#5481 make edited color more readable

* dbeaver/pro#5481 export column type

* dbeaver/pro#5481 add sorting by grant column

* dbeaver/pro#5481 migrate connection access table

* dbeaver/pro#5481 do not show table for cloud connections

* dbeaver/pro#5481 fix bg color in dark theme for frozen columns

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-10-28 18:56:04 +08:00
Serge Rider cd78601245 dbeaver/pro#7261 Connect errors logging (#3851) 2025-10-28 10:09:51 +01:00
AinurandDaria Marutkina 4ab47583ad dbeaver/pro#7017 limit max idle time for anonymous user (#3846)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-27 11:38:34 +01:00
sergeyteleshevandEvgenia 37cfecbf91 [CB-5925] Charts - add export option (image) (#3819)
* dbeaver/pro#5078 adds chart export

* adds ExportImageDialog and reuses it across the app

* uses canvas2html for downloading images

* Revert "uses canvas2html for downloading images"

This reverts commit b59374cf85.

* moves transformClassesToStyles to helpers

* transforms styling attributes to computed styles

* adds file name

* fixes translations

* fixes styles for png image so it do not exports in black&white mode with incorrect sizing

* fixes styles for svg export

* uses domToImage library to save chart with legend

* cleanup

* moves helpers back to d3js diagrams

* cleanup

* uses html-to-image instead of dom-to-image

* cleanup

* pr fixes

* replaces the lib

* fixes svg so it is not blur

* validation for image urls

* cleanup

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-27 17:09:23 +08:00
046659672c dbeaver/pro#6956 redesign cli tools (#3830)
* dbeaver/pro#6956 redesign cli tools

* dbeaver/pro#6956 help per command

* dbeaver/pro#6956 refactor some commands to options

* dbeaver/pro#6982 Top level commands title fix

* dbeaver/pro#6956 fixes and more hidden options

* dbeaver/pro#6956 fix auth context

---------

Co-authored-by: serge-rider <serge@dbeaver.com>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-10-24 18:30:41 +02:00
Ainur bf52e23793 dbeaver/pro#7022 do not throw error if team with the same name exists (#3806) 2025-10-24 13:16:03 +00:00
Ainur 4a2ce73a9c dbeaver/pro#7181 collect internal db properties on graphql call (#3845) 2025-10-24 13:09:27 +00:00
serge-rider b73b707b7f Merge remote-tracking branch 'origin/devel' into devel 2025-10-24 08:59:26 +02:00
serge-rider 57461bd8be dbeaver/pro#7259 Nullability annotations 2025-10-24 08:56:48 +02:00
Sychev AndreyandEvgenia 71bebb32dd dbeaver/pro#7218 fix: value panel don't change the value of a cell (#3848)
The problem was that In ReactCodemirror, the updateListener calls onChange whenever the document changes and it's not marked as a remote transaction, but in value panel, when we switch changes, the new value coming to the panel was considered as the user change.
So, update listener were calling onChange from TextValuePresentation which calls editAction.set() and changes the real cell value.

In order to fix it, this commit mark programmatic updates by dispatching transaction annotations together with a change.

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-24 14:48:56 +08:00
Sychev Andrey 28cade86aa dbeaver/pro#6026 feat: merge value panel tabs in one group (#3829)
* dbeaver/pro#6026 feat: merge value panel tabs in one group

move all text representations to the first tab level
specific representation is used if present (boolean, image)
auto type detection is used only for text

* dbeaver/pro#6026 refactor: remove unused CSS files for TextValuePresentation

* dbeaver/pro#6026 refactor: remove automatic state update in ValuePanel component

* dbeaver/pro#6026 refactor: update content type handling in ValuePanel

Move all the content type determination logic into the hook
Simplify the component

* dbeaver/pro#6026 refactor: consolidate content type handling in useAutoContentType hook

* dbeaver/pro#6026 fix: show scroll on tabs in value panel when overflow
2025-10-23 17:04:41 +08:00
Daria Marutkina 92186dd332 dbeaver/pro#7168 Update README file (#3842) 2025-10-20 12:16:08 +02:00
sergeyteleshev 860a9f55f2 dbeaver/pro#7183 updates happy-dom to 20.0.2 (#3835) 2025-10-17 00:42:19 +08:00
dbeaver-devops 754c8d562d dbeaver/pro#7168 25.2.4 version bump (#3827) 2025-10-14 19:26:58 +02:00
Alexey PotsetsuevandEvgenia ed0e92cdd6 dbeaver/pro#6294 fix: dnd styles (#3824)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-14 23:45:33 +08:00
Serge Rider 9267e65300 dbeaver/pro#7142 Check node children for null (#3825) 2025-10-14 13:41:53 +02:00
Sychev AndreyandDaria Marutkina 4e3ec7cbf4 dbeaver/pro#7001 feat: add combobox cancel feature (#3801)
* dbeaver/pro#7001 feat: add combobox cancel feature

* dbeaver/pro#7001 refactor: reuse handleSelect for clear action

also changed cancel button styles

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-14 18:38:55 +08:00
AinurandDaria Marutkina 6978ae5355 dbeaver/pro#7058 fix error log for fs request (#3818)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-14 09:52:56 +02:00
Ruslan MusaevandEvgenia 3986debe8f dbeaver/cloudbeaver#3484 add ldap referral handling (#3817)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-14 09:40:55 +02:00
sergeyteleshev 38cfb0a690 [CB] Fix critical vulnerability with happy-dom (#3821)
* dbeaver/pro#7132 updates deps

* Revert "dbeaver/pro#7132 updates deps"

This reverts commit 522c56660c.

* updates only happy-dom
2025-10-13 22:48:36 +08:00
682a387564 dbeaver/pro#7080 refactor: grid API (#3799)
* dbeaver/pro#7080 refactor: grid API

* chore: cleanup after review

* chore: fix grid view action dependencies

* fix: build

* fix: update null checks and improve type safety in data handling

* fix: improve cache handling in useResultTraceDetails hook

* fix: correct cache reference in useResultTraceDetails function

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-10-13 19:30:54 +08:00
AinurandDaria Marutkina de0dee29ed dbeaver/pro#7019 grant connection permissions fix (#3807)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-10 15:02:47 +02:00
Sychev AndreyandDaria Marutkina 3a1ae15ecb dbeaver/pro#7026 fix: update cancel action to revert only selected el… (#3805)
* dbeaver/pro#7026 fix: update cancel action to revert only selected elements

* dbeaver/pro#7026 fix: bind revert action on esc

It was a misunderstanding at first, but esc is actually a revert action, not cancel action.

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-09 19:30:28 +08:00
Ainurandkseniaguzeeva 8cf064e845 dbeaver/pro#4038 add additional validation for servlets (#3779)
* dbeaver/pro#4038 add additional validation for servlets

* dbeaver/pro#4038 normalize paths for validation

* dbeaver/pro#4038 add fs update permission

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-10-09 11:18:49 +02:00
Ainur ec1b455f4d dbeaver/pro#7082 use same ws connection after relogin fix (#3803) 2025-10-09 10:52:07 +02:00
Ruslan Musaev 683d85c8d6 dbeaver/pro#7089 fix migration hotfix (#3814) 2025-10-08 16:04:34 +02:00
sergeyteleshev 8066904d4d [CB] The text of the settings in the navigator tree began to appear in bold (#3812)
* dbeaver/pro#6943 fixes bold title styles for switch

* build fix
2025-10-08 21:53:45 +08:00
Alexey Potsetsuev 7ea46ea2c5 dbeaver/pro#7111 fix: doubled hot keys handler (#3804) 2025-10-08 16:07:23 +08:00
Alexander Skoblikov 8aee24cf1c dbeaver/pro#6982 sql execution in dbvr (#3802) 2025-10-07 18:21:27 +02:00
sergeyteleshevandDaria Marutkina 5d83098d38 dbeaver/pro#6947 moves secrets parameters to a separate island (#3789)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-10-06 21:20:22 +08:00
Daria Marutkina 3e855c3afd dbeaver/pro#7052 Update README file (#3800) 2025-10-06 10:29:52 +02:00
Serge Rider 9c50589586 dbeaver/pro#7054 Nullable annotations 2025-10-03 14:27:52 +02:00
Serge Riderandmr-anton-t f99c2e3ebd dbeaver/pro#7054 Check null in remote clients (#3792)
* dbeaver/pro#7054 Check null in remote clients

* dbeaver/pro#7054 Do not verify nullable params

* dbeaver/pro#7054 Fix nullable

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-10-03 14:25:43 +02:00
Serge Rider e141575785 dbeaver/pro#2787 Annotations 2025-10-03 12:09:14 +02:00
b93b85f622 dbeaver/pro#6802 Update SQL schema config file paths (#3790)
* dbeaver/pro#6802 Update SQL schema config file paths

* dbeaver/pro#6802 Fix build

* dbeaver/pro#6802 Fix build

---------

Co-authored-by: Ivan Gagarkin <gagarkin@Ivans-MacBook-Pro.local>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-10-03 11:51:02 +02:00
Serge Rider 267a753d87 Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2025-10-02 15:53:17 +02:00
Ruslan Musaev 6cea8cd64f dbeaver/pro#7060 fix connection read only (#3796) 2025-10-02 15:53:08 +02:00
serge-rider b630cb6791 dbeaver/pro#7052 25.2.3 version bump 2025-09-30 19:44:41 +02:00
a9fd8fb909 [CB] Migrate context menu to aria kit #6756 (#3760)
* dbeaver/pro#6756 adds Menu to ui-kit, core-blocks + uses it in connection properties form

* allows to render any items not only strings

* dbeaver/pro#6756 adds context menu (has freeze on click)

* cleanup

* reverts object menu cell usage of new menu (problems with portal - infinite rerender)

* ui fixes

* reverts context menu logic

* adds hover styles

* cleanup

* removes MenuField

* adds combobox instead of PropertyValueSelector

* adds ability to have custom value for comboboxes + uses inside driver properties

* allows to revert values in combobox

* adjusts combobox api with correctly working custom value

* cleanup

* adds documentation for the Menu

* fix: combobox and driver properties

* chore: remove unused component

* chore: cleanup styles

* chore: add value tooltip

* fix: remove default value from combobox

* fix: tooltips

* build fix

* reverts old behavior with default value for combobox

* removes button styles + adds max width for the items

* Revert "reverts old behavior with default value for combobox"

This reverts commit 2a92c00f32.

* removes double focus

* fixes placeholder so it is not undefined string

* fixes value placeholder + moves title to input

* build fix

* fixes border behavior

* adds default value for property items

* fix: improve combobox types

* fix: use default value

* adds layers to InputField and moves border-offset-layout

* fix: eslint

* Revert "adds layers to InputField and moves border-offset-layout"

This reverts commit 272baafab6.

* reverts styles fixes for double border

* cleanup

* adds medium size to ui kit

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-30 19:14:23 +02:00
Ruslan Musaev 9a5c3f67ab dbeaver/pro#7044 fix anon shared projects (#3788) 2025-09-30 18:13:20 +02:00
AinurandDaria Marutkina 21b024f375 dbeaver/pro#6529 use separate bundle for lang3 (#3765)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-30 12:34:43 +02:00
e2339f3666 dbeaver/pro#5963 add expandable fields to the json view (#3775)
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-30 18:18:22 +08:00
Sychev Andreyandmr-anton-t 2fbb71fb96 dbeaver/pro#6586 fix: combobox disclosure size (#3787)
* dbeaver/pro#6586 fix: combobox disclosure size

By default, this component has 1em height and width and thats why it looked different in different components. Pixels values will provide consistency across different environments.

* dbeaver/pro#6586 refactor: set parent's font size instead of svg dimensions

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-30 02:25:42 +08:00
sergeyteleshevandmr-anton-t 75e9da4705 [CB] Grid - unable to resize multiple columns in wide tables (#3783)
* dbeaver/pro#6667 patches react-data-grid columns widths on cloudbeaver side

* fixes: auto resize columns should not be resized + column resize do not triggers resize of other oversized columns

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-30 02:25:23 +08:00
Ruslan Musaev 6e3bc7f63f dbeaver/pro#5908 limit the number of anon sessions (#3724) 2025-09-29 13:30:49 +00:00
11a7dc26dc dbeaver/pro#5848 api for renaming projects (#3600)
* dbeaver/pro#5848 api for renaming projects

* dbeaver/pro#5848 ci: update stylus dependency to version 0.0.1-security

* dbeaver/pro#5848 feat: add gql mutation and method for project info update

* dbeaver/pro#5848 use project settings for renaming

* dbeaver/pro#5848 add events for project renaming

* dbeaver/pro#5848 use display name

* dbeaver/pro#5848 add rename to desktop te

* dbeaver/pro#5848 fix validating project name

* dbeaver/pro#5848 validate project name on creation

* dbeaver/pro#5848 fix adding description and add event to graphql

* dbeaver/pro#5848 fix events for non-admin users

* dbeaver/pro#5848 feat: mark project as outdated on update

* dbeaver/pro#5848 handle rm project update in nav tree

---------

Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-29 13:20:46 +02:00
AinurandDaria Marutkina 3e9b0bfdd8 dbeaver/pro#6532 api for object settings (#3720)
* dbeaver/pro#6532 api for object settings

* dbeaver/pro#6532 save object settings on user side

* dbeaver/pro#6532 fix adding project settings

* dbeaver/pro#6532 remove redundant code

* dbeaver/pro#6532 rename gql functions

* dbeaver/pro#6532 rename method from add to set

* dbeaver/pro#6532 test fix

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-29 12:38:15 +02:00
Sychev AndreyandDaria Marutkina 73eaaa31f9 dbeaver/pro#6568 fix: layout jump in notifications portal (#3784)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-29 17:52:12 +08:00
574f893e6e dbeaver/pro#6639 fix: don't render table error component when no error (#3710)
* dbeaver/pro#6639 fix: don't render table error component when no error

We used to render TableError component all the time no matter if we have an error or not, just hiding this component visually. This approach breaks accessibility because Table error component was still reachable from a keyboard or a screen reader. This fix completely removes the node from DOM if the error is not visible.

* dbeaver/pro#6639 fix: change tabindex of TableError component

previous fix rendered this component only if error is present. That fix was wrong because we want to always keep that component in DOM to animate it properly in case of an error. That why we decided to just change the tabindex to -1 when there is no error to exclude it from tab path.
This fix is also adds aria-hidden attribute to hide this component completely from the accessibility tree when it's not visible.

* dbeaver/pro#6639 style: indent

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-29 17:51:36 +08:00
Alexander SkoblikovandMashaKorax 10876f1a62 dbeaver/pro#6772 import license cli (#3774)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-09-29 10:59:27 +02:00
54b5c12550 dbeaver/pro#6403 api for default catalog and schema (#3768)
* dbeaver/pro#6403 api for default catalog and schema

* dbeaver/pro#6403 add default schema and catalog to gql

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-09-26 12:27:19 +02:00
Ainur 69f2a57be5 dbeaver/pro#6716 rename server scripts (#3762) 2025-09-26 10:16:35 +02:00
Ainurandmr-anton-t 4f7c7ba808 dbeaver/pro#6656 create web connection info objects in a session project (#3751)
* dbeaver/pro#6656 create web connection info objects in a session project

* dbeaver/pro#6656 fix data source connection test

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-26 10:09:48 +02:00
Sychev AndreyandDaria Marutkina 25247321b8 dbeaver/pro#5471 [CB] Add shortcuts to tooltips data editor toolbar (#3750)
* dbeaver/pro#5471 fix: "Delete" data viewer action tooltip

* dbeaver/pro#5471 refactor: "merge" save and save as script actions

We used to have two buttons with different shortcuts for saving SQL as a script(first save) and saving already created script (updating). On UI they had the same icon and were more or less identical for the user. We decided to use the same shortcut and labels for both buttons (mod + S).

* dbeaver/pro#5471 feat: adds Find and Comment shortcuts to the shortcuts list

* dbeaver/pro#5471 refactor: use common l10n keys for save/undo/redo

* dbeaver/pro#5471 refactor: use key bindings API for Delete action in TableView

* dbeaver/pro#5471 refactor: use key bindings API for add, duplicate and revert actions

* dbeaver/pro#5471 fix: extra import

* dbeaver/pro#5471 refactor: don't use a symbol for delete shortcut

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-25 18:18:17 +08:00
Sychev Andrey 72975abef0 dbeaver/pro#6142 fix: can't expand nodes using filter (#3773)
If folder node had not been loaded before the filter is used, we would get into situation that filtering manually expanding this node without children and we would loose the ability to load them by expanding by click(our main flow is to load on expand).

This fix removes the auto expanding on filtering. Now it works similarly to the main navigation tree with filters
2025-09-25 18:17:23 +08:00
Alexey Potsetsuev 1fadf5009d dbeaver/pro#6968 fix: eslint (#3777) 2025-09-25 17:48:58 +08:00
Alexander Skoblikovandkseniaguzeeva 23090e286a dbeaver/pro#5999 do not link shared credentials with users (#3748)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-09-24 16:55:51 +02:00
Alexey Potsetsuevandmr-anton-t 1cacf6a5cc dbeaver/pro#6980 fix: elements ordering (#3770)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-24 21:57:11 +08:00
d0e86745f1 dbeaver/pro#6520 fix: header cell layout (#3759)
* dbeaver/pro#6520 fix: header cell layout

* dbeaver/pro#6520 refactor: table cell always shows 2 rows

* dbeaver/pro#6520 fix: use two rows grid only if a table has any description

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-24 16:30:59 +08:00
Alexander SkoblikovandMashaKorax 97d179a103 dbeaver/pro#6229 execute sql via cli (#3721)
* dbeaver/pro#6229 execute sql via cli

* dbeaver/pro#6229 review fix

* dbeaver/pro#6229 update run scripts

---------

Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-09-23 18:48:26 +02:00
sergeyteleshev 37b8716aee dbeaver/pro#6935 replaces sass-embedded with sass (#3771) 2025-09-24 00:34:16 +08:00
Alexey Potsetsuevandsergeyteleshev d1c2d6547f dbeaver/pro#6968 feat: add storybook (#3767)
* dbeaver/pro#6968 feat: add storybook

* chore: remove duplicate

* fix: ladle

* chore: remove storybook onboarding

* adds task to run storybook

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-09-23 21:02:07 +08:00
4f53ece164 dbeaver/pro#6327 refactor: sql editor & vqb (#3742)
* dbeaver/pro#6327 refactor: sql editor & vqb

* fix: state sync

* fix: segment resolution

* chore: add comment

* refactor: remove old code, add todo about problem

* fix: yarn.lock

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-23 18:45:45 +08:00
Alexey Potsetsuevandmr-anton-t 0fe432f45c dbeaver/pro#6783 refactor: plugins bundles (#3761)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-23 18:37:24 +08:00
Sychev AndreyandDaria Marutkina 58b8eafc7b dbeaver/pro#6892 fix: letter spacing in combobox item (#3747)
Make the same as in combobox input

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-23 18:26:35 +08:00
alexandDaria Marutkina cdb4c7e1fc dbeaver/pro#6924 pass selectedValue to provider (#3752)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-23 00:03:25 +08:00
alexandDaria Marutkina 3a2d4f807d dbeaver/pro#5752 add boolean component to metadata editor (#3754)
* dbeaver/pro#5752 add boolean component to metadata editor

* dbeaver/pro#5752 fix linter

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-22 23:34:43 +08:00
39ea1e2b7f dbeaver/pro#4742 add tree context menu provider (#3745)
* dbeaver/pro#4742 add tree context menu provider

* dbeaver/pro#4742 add useTreeMenu hook

* dbeaver/pro#4742 revert hook renaming

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-22 19:43:27 +08:00
Daria Marutkina da7d4eef19 dbeaver/pro#6916 Update README file (#3764) 2025-09-22 11:50:45 +02:00
alexandDaria Marutkina d23ab441ff dbeaver/pro#6305 fix input label hover blinking (#3753)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-22 17:07:14 +08:00
serge-rider 220c59ed01 dbeaver/pro#6952 Use ALL-DEFAULT modules mode 2025-09-21 11:40:36 +02:00
serge-rider eb0f3db330 dbeaver/pro#6759 CLI model 2025-09-20 07:36:00 +02:00
Serge Rider 3babafaecd dbeaver/pro#6759 dbvr app stub and config 2025-09-19 14:49:59 +02:00
serge-rider 4765629537 dbeaver/pro#6934 XML parser annotations 2025-09-19 08:25:22 +02:00
Serge RiderandMatvey16 534526e5e4 dbeaver/pro#6775 AI functions API (#3712)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2025-09-17 12:25:48 +02:00
dbeaver-devops 2d6ebd91f1 dbeaver/pro#6916 25.2.2 version bump (#3749) 2025-09-16 19:05:20 +02:00
Ainur e6e92f0bb3 dbeaver/pro#5614 api for expert settings props (#3727) 2025-09-16 13:51:38 +00:00
5a394e648d [CB-6198] Migrate secrets ui (public) from backend to frontend part (#3701)
* dbeaver/pro#5170 adds refactoring boilerplate

* dbeaver/pro#6198 remove redundant code about secret configuration

* moves secrets into provider properties

* renames optionsExtendedForm to ProviderPropertiesExtendedForm

* build fix

* dbeaver/pro#5170 set external params fix

* moves providerProperties container to ConnectionFormService

* cleanup

* adds empty arrays to connection secret reset state

* truncates select items and select itself

* Revert "truncates select items and select itself"

This reverts commit 56c943b5a0.

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-09-16 15:05:28 +02:00
sergeyteleshevandmr-anton-t e466462269 [CB-4362] Add trim to all inputs in forms (#3687)
* dbeaver/pro#4696 adds zod schema parsing for form parts

* adds validation error to context

* adds schema parsing for UserFormInfoPart & ConnectionFormOptionsPart

* spreads RecordKeySchema across zod validations

* fixes form editing for connection info part

* Revert "spreads RecordKeySchema across zod validations"

This reverts commit 0e6719b32f.

* removes connection form errors during saving when empty fields

* reverts connection form options part parsing

* removes trimming from teams & authRole

* build fix

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-15 21:47:55 +08:00
sergeyteleshevandmr-anton-t 1c57e670c0 [CB] get back switch title bold styles (#3738)
* dbeaver/pro#6878 gets back switch bold title

* incapsulates field styles only

* moves all composes out of the layer

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-15 15:16:36 +08:00
alexandDaria Marutkina 3808af50c7 dbeaver/pro#5014 use debounce instead of throttle (#3734)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-15 00:14:56 +02:00
Alexander Skoblikov 390452d8a6 dbeaver/pro#6880 more correct origin parsing (#3741) 2025-09-12 15:27:00 +00:00
Alexey Potsetsuevandmr-anton-t b733f395d3 dbeaver/pro#6847 fix: elements order (#3729)
* dbeaver/pro#6847 fix: elements order

* fix: linting

* fix: actions order

* fix: actions order

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-12 23:21:54 +08:00
sergeyteleshev e31ae9a439 dbeaver/pro#6881 updates deps (#3743) 2025-09-12 19:57:54 +08:00
sergeyteleshevandDaria Marutkina 07f60c0034 [CB] Bump NPM dependencies (#3723)
* dbeaver/pro#5765 updates deps

* updates @wroud/vite-plugin-tsc

* updates @vitejs/plugin-react

* removes sass-embedded

* resolves sass to sass-embedded

* build fix

* linter fix

* handles empty json table edge case

* removes redundant translations

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-12 17:39:48 +08:00
sergeyteleshevandEvgenia ba32c12b9c [CB-5023] Add vizualization for focus on switchers (#3677)
* dbeaver/pro#4862 adds focus on switches

* fixes border radius

* less border-radius

* applies hack with borders and position to save border radius and offset

* removes variable

* fix: applies focus only for tab

* removes focus on ESC button

* removes onkeydown

* cleanup

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-11 17:32:33 +08:00
Ainur ca3ce9b79d dbeaver/pro#6786 load engine properties from object (#3732) 2025-09-11 08:38:04 +00:00
96d6dba83a dbeaver/pro#6644 update licence status after users decrease (#3711)
* dbeaver/pro#6644 update licence status after users decrease

* dbeaver/pro#6644 update licence status after user decrease

* dbeaver/pro#6644 update license status after users decrease

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-09-11 08:20:14 +02:00
Ruslan MusaevandEvgenia 6ce5ef235c dbeaver/pro#6259 fix query logging for import (#3733)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-11 08:13:20 +02:00
a1404e3495 dbeaver/pro#6224 Add soring completion alphabetically for web (#3697)
* dbeaver/pro#6224 Add soring completion alphabetically for web

* dbeaver/pro#6224 Add soring completion alphabetically for web

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Elizabeth <28875055+E1izabeth@users.noreply.github.com>
2025-09-10 23:44:11 +03:00
sergeyteleshev d4e2f2365a [CB] application freezes during loading on heavy resultsets (ORIGINAL FIX) (#3717)
* dbeaver/pro#6731 enables virtualization always

* removes default virtualization prop

* [CB] application freezes during loading on heavy resultsets (OPTIONAL FIXES) (#3715)

* dbeaver/pro#6731 adds some optimizations

* cleanup

* pr fixes

* cleanup

* removes optimizations

* linter fixes
2025-09-10 21:06:54 +08:00
ab813e21ab dbeaver/pro#5129 cb 6095 sql editor buttons shortcut labels are hardcoded (#3696)
* dbeaver/pro#5129 feat: use action item bindings API to get binding label

removes hardcoded shortcuts
adds formatting for shortcuts, uses OS-specific shortcuts

* dbeaver/pro#5129 feat: add example of manual using getBindingLabel function

* dbeaver/pro#5129 feat: use menu api for sql editor actions

* dbeaver/pro#5129 fix: lint async

* dbeaver/pro#5129 fix: remove wrong action icons

move private methods to the end of files

* dbeaver/pro#5129 refactor: use context via useDataContextLink hook

* dbeaver/pro#5129 refactor: DRY ACTIONS

* dbeaver/pro#5129 fix: DRY ACTIONS

* dbeaver/pro#5129 fix: action titles

* dbeaver/pro#5129 fix: DI after devel merge

* dbeaver/pro#5129 bonus: fix text content in dropdowns

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
2025-09-10 21:04:03 +08:00
AinurandDaria Marutkina c5190b2567 dbeaver/pro#6249 fix events for changing extensions (#3667)
* dbeaver/pro#6249 fix events for changing extensions

* dbeaver/pro#6249 send connection updated info event on rm side

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-09-10 14:33:34 +02:00
alexandEvgenia e896789cb0 dbeaver/pro#6155 do not set whereFilter on constraint change (#3702)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-09-10 18:39:02 +08:00
Serge Riderandmr-anton-t 60827d769a dbeaver/pro#6791 LDAP icon fix (#3714)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-09 12:36:29 +02:00
Alexey Potsetsuevandmr-anton-t 65876e9b4e dbeaver/pro#6744 fix: elements order (#3706)
* dbeaver/pro#6744 fix: elements order

* fix: fixate position of elements

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-09-04 02:40:01 +08:00
Alexander SkoblikovandMashaKorax 048206266d dbeaver/pro#5878 cli custom exit code (#3705)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-09-03 10:49:12 +02:00
Alexey Potsetsuev f41b9d24fe dbeaver/pro#6662 chore: cleanup (#3713) 2025-09-02 18:41:49 +08:00
Daria MarutkinaandAnastasiya 03dabc0e1b dbeaver/pro#6715 Update README file (#3709)
* dbeaver/pro#6715 Update README file

* Update README.md

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>

* Update README.md

* Update README.md

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>

---------

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
2025-09-01 13:03:44 +02:00
Daria Marutkina 56946742c2 dbeaver/pro#6715 Update README file (#3708) 2025-09-01 11:21:23 +02:00
serge-rider e1e4ae0ba6 dbeaver/pro#6773 Move ldap icon to cloudbeaver 2025-09-01 07:29:53 +02:00
Alexey Potsetsuevandmr-anton-t 80f258b561 dbeaver/pro#6744 refactor: migration to @wroud/di (#3704)
* dbeaver/pro#6744 refactor: migration to `@wroud/di`

* tests: enable settings tests

* chore: update syntax

* fix: dynamic theme detection

* fix: skip not stable test

* fix: skip whole test

* fix: make theme optional

* fix: page reload

* tests: skip unstable test

* fix: remove optional

* fix: load system theme

* fix: prevent the system theme from always loading despite not being selected

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-08-29 18:22:11 +08:00
Alexander SkoblikovandDaria Marutkina ac48e13039 dbeaver/pro#6703 use local host address by default (#3695)
* dbeaver/pro#6703 use local host address by default

* dbeaver/pro#6703 rename method

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-27 12:20:18 +02:00
3877e914c4 dbeaver/pro#6462 error instead of redirect for gql requests (#3690)
* dbeaver/pro#6462 error instead of redirect for gql requests

* feat: force redirect on supportedHosts change

* fix: replace redirect with warning message

* fix: prevent active host removal

* fix: error message and ignore when on IP address

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-08-26 15:01:25 +02:00
sergeyteleshev 564ceb7d82 dbeaver/pro#6708 adds @dbeaver/react-tests to packages to execute tests locally (#3698) 2025-08-25 20:42:44 +08:00
serge-rider 622b5133c2 dbeaver/pro#6715 25.2.1 version bump 2025-08-22 18:55:11 +02:00
Alexey Potsetsuev 376575efce dbeaver/pro#5902 fix: settings override and aliases resolution (#3693)
* dbeaver/pro#5902 fix: settings override and aliases resolution

* fix: import
2025-08-22 18:45:25 +02:00
980e169ee1 [CB] Ability to change multiserver licenses users/roles from UI (#3598)
* dbeaver/pro#6311 removes multi instance limits on frontend side (allows to create/delete/disable users in users and provisioning)

* dbeaver/pro#6311 add flag to server config

* build fix

* reverts all in favor of licenseUsersModificationEnabled

* dbeaver/pro#6311 review fixes

* adds extended serverConfig

* dbeaver/pro#6311 fix disabled users

---------

Co-authored-by: Ruslan <pupkinvasya7000@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-22 18:24:18 +02:00
AinurandEvgenia e9cbaeadd9 dbeaver/pro#6695 no web session found error log fix (#3692)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-22 18:23:54 +02:00
Ruslan MusaevandEvgenia 66764292c9 Dbeaver/pro#6326 fix incorect paramters parsing (#3685)
* dbeaver/pro#6326 fixes

* dbeaver/pro#6326 fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-22 13:29:34 +02:00
2e2a61a330 dbeaver/pro#6692 do not load settings until authorized (#3688)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-08-22 19:11:10 +08:00
Ruslan MusaevandDaria Marutkina edda6d8db3 dbeaver/pro#5921 fix postgre npe (#3686)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-22 12:28:02 +02:00
c9f4ddd382 Dbeaver/pro#6622 permission fixes after demo (#3680)
* dbeaver/pro#6622 preference fixes after the demo

* dbeaver/pro#6622 fixes

---------

Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-22 18:09:49 +08:00
alexandDaria Marutkina fb0bdc1017 dbeaver/pro#6556 change Alert structure (#3676)
* dbeaver/pro#6556 change Alert structure

* dbeaver/pro#6556 wrap in text

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-22 18:09:00 +08:00
serge-rider 123dc7777c dbeaver/pro#6655 Code style + NPE checks 2025-08-22 09:29:42 +02:00
alexandEvgenia 2963610498 dbeaver/pro#4966 handle long names case in menus (#3683)
* dbeaver/pro#4966 handle long names case in menus

* dbeaver/pro#4966 use nested selector

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-22 04:33:35 +08:00
sergeyteleshevandEvgenia d1e07be46f [CB] Long text in the Configuration ID dropdown is not truncated and overlaps other UI elements (#3682)
* dbeaver/pro#6642 truncates all select items

* adds title for render field selects

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-21 19:16:29 +08:00
043204002f dbeaver/pro#5902 fix: settings resolution (#3673)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-21 19:15:30 +08:00
Alexey PotsetsuevandEvgenia c8c82c7f3e dbeaver/pro#6565 fix: prevent requests on session expire (#3678)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-21 12:36:35 +08:00
a0944850b1 dbeaver/pro#6605 fix: reset filters on logout (#3675)
* dbeaver/pro#6605 fix: reset filters on logout

This commit adds onLogout handler in DataViewerTabService which disposes opened tabs on logout.

Previously we didn't handle that at all and model was persisted in the memory after logout. On next login, if there was any filters, we would try to send them to backend and got an error, because backend doesn't support initial requests(without resultId) with filters.

The main logic of a handler repeats the already existed onDisconnect handler logic, which was extracted to handleTabsCleanup method. The difference between handlers is only in a set of tabs(onLogout we dispose all of them, onDisconnect - only tabs of a selected connection) and ability to interrupt the process.

* Revert "dbeaver/pro#6605 fix: reset filters on logout"

This reverts commit d124b444c7.

* dbeaver/pro#6605 fix: add onLoad Handler to ObjectViewerTabService

* Update webapp/packages/plugin-object-viewer/src/ObjectViewerTabService.ts

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-21 12:35:41 +08:00
Ruslan Musaev 31841b7720 dbeaver/pro#6687 revert audit loging (#3674)" (#3684)
This reverts commit 55c776f3e4.
2025-08-20 15:13:55 +00:00
serge-rider a2695f3102 Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2025-08-20 15:14:28 +02:00
serge-rider 3c7c1ffc8e dbeaver/pro#6681 TE desktop errors during launch fix 2025-08-20 15:13:42 +02:00
Ruslan Musaev 55c776f3e4 dbeaver/pro#6326 fixes (#3674) 2025-08-20 10:38:55 +00:00
Alexander Skoblikov 8a4d88e721 dbeaver/pro#6622 preference fixes after the demo (#3670) revert (#3679)
This reverts commit 426fd40c82.
2025-08-20 10:33:11 +00:00
Ruslan Musaev 426fd40c82 dbeaver/pro#6622 preference fixes after the demo (#3670) 2025-08-20 10:16:41 +00:00
alexandDaria Marutkina a547b85ef2 dbeaver/pro#6598 open panel on tab select (#3662)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-20 16:43:51 +08:00
Sychev AndreyandDaria Marutkina e32e6eac39 dbeaver/pro#6325 fix: set cursor to the beginning of the file when opened (#3669)
In previous ticket CB-5555 we fixed cursor position on undo/redo actions by adding a check that if selection was not set. In that case we put the cursor to the end of inserted text. Due to previous fixes in CB-4134 we don't set a selection if cursor don't change it's position and initially it's 0. So our check from 5555 is being fired on initially opened script and cursor goes to the end.

To avoid that situation, this solution introduces a new isInitialScriptOpening flag that is used to check the first insertion.

When initially opening a script, the cursor will stay at the position where we explicitly set it (e.g., position 0).
After the first actual content change, the flag isInitialScriptOpening gets set to false.
Subsequent changes will then follow the normal cursor behavior (moving to end when there are changes but no explicit cursor position).

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-19 23:39:13 +08:00
Sychev AndreyandEvgenia 901669b802 dbeaver/pro#6472 fix: restore focus after menu actions and on syncFocus (#3657)
* dbeaver/pro#6472 fix: restore focus after menu actions and on syncFocus

* dbeaver/pro#6472 refactor: revert changes with using restoreFocus function from context

* dbeaver/pro#6472 fix: delete row from a context menu works as with a hotkey

set to null and revert also keep focus in place

* Revert "dbeaver/pro#6472 fix: delete row from a context menu works as with a hotkey"

This reverts commit f54abf3956.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-19 18:03:41 +08:00
alexandEvgenia 69d7a25fec dbeaver/pro#6411 check for includes also (#3655)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-19 18:03:03 +08:00
Sychev AndreyandDaria Marutkina 576028b367 dbeaver/pro#6253 [CB] [users] default team should be marked and read only (#3658)
* dbeaver/pro#6253 fix: set disable state for checkbox respecting readonly

There was a bug in UiKitCheckbox props which rewrites disabled state using only disabled prop.

* dbeaver/pro#6253 fix: remove redundant readonly property in Options

First of all, Radio doesn't support readonly attribute. Moreover, we don't render this RadioGroup when condition in readonly prop is true.

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-19 18:02:39 +08:00
Alexey PotsetsuevandDaria Marutkina 9276777c3e dbeaver/pro#6600 fix: connections sync (#3661)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-19 18:02:13 +08:00
Sychev AndreyandDaria Marutkina 4ff45220ee dbeaver/pro#6557 [CB] Dropdown for roles is too small (#3663)
* dbeaver/pro#6557 refactor: remove redundant width: 100%

There are a few reasons why we don't need this property:
0. It's already present in base Select styles
1. Select component is flex container by default, i.e. takes all available place
2. No evidences that it is needed

* dbeaver/pro#6557 fix: user filters selects

Simplifies layout and set min width for selects

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-19 18:01:41 +08:00
Alexey Potsetsuev 62ad5a61c9 dbeaver/pro#6652 fix: version set (#3671) 2025-08-18 22:21:49 +08:00
Daria Marutkina 587a9e58e1 dbeaver/pro#6594 Update README file (#3668) 2025-08-18 10:46:45 +02:00
Alexey Potsetsuev 4401cfe92f dbeaver/pro#6617 fix: remove default value for key parameter in useResourceTracker (#3664)
* dbeaver/pro#6617 fix: remove default value for key parameter in useResourceTracker

* fix: re-subscribe on resource

* fix: ensure subscription removed
2025-08-15 23:27:34 +08:00
Alexey Potsetsuev 59e33e8c48 dbeaver/pro#6592 fix: resources loading (#3659) 2025-08-14 11:12:42 +08:00
serge-rider d16c7d4502 dbeaver/pro#6594 25.2.0 version bump 2025-08-12 20:23:19 +02:00
Alexey PotsetsuevandEvgenia a51765f516 dbeaver/pro#6189 feat: group extra tools (#3653)
* dbeaver/pro#6189 feat: group extra tools

* fix: context menu size

* fix: make context menu more compact

* fix: context menu shortcuts

* fix: change color for shortcuts in context menu

* fix: codestyle

* fix: revert more tools

* fix: submenu arrow position

* fix: show output

* fix: upload / download tooltips

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-12 19:03:56 +02:00
Alexander SkoblikovandDaria Marutkina 27d8f4c011 dbeaver/pro#6548 skip domain for ip addresses (#3647)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-12 19:03:25 +02:00
0bb7803565 [CB-6024] More granular permissions on data export (#3607)
* dbeaver/pro#5108 create plugin-data-editor

* registers some data editor settings only for CE product

* renames plugin

* moves disable import setting to public settings

* adds localizations

* fixes references

* adds comments for registration

* renames Data Viewer -> Data Editor

* dbeaver/pro#5108 add permissions

* maps settings to permissions

* fixes default settings for data import

* adds permissions redirect for default team + removes permission tab if admin full access provided

* moves settings resolvers to original place

* build fix

* fixes mapping so it actually works

* cleanup

* dbeaver/pro#5108 permissions

* dbeaver/pro#5108 more granular permissions

* dbeaver/pro#5108 more granular permissions

* dbeaver/pro#5108 review fixes

* dbeaver/pro#5108 review fixes

* changes permissions settings

* fixes mapping

---------

Co-authored-by: Ruslan <pupkinvasya7000@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
2025-08-12 14:38:40 +02:00
0727974c64 dbeaver/pro#6118 (#3652)
* dbeaver/pro#6118 feat: show driver description as an item's title in new connection dialog

* dbeaver/pro#6118 feat: show driver description as an item's title in new connection dialog

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-08-12 14:13:09 +02:00
Serge Rider cabacfb475 dbeaver/pro#6569 SQL script execute fix (#3650)
* dbeaver/pro#6569 SQL script execute fix

* CB-5369 Do not use deprecated methods
2025-08-12 12:04:45 +02:00
fea2d78ef2 dbeaver/cloudbeaver#3495 filter empty folder in global project (#3636)
* dbeaver/cloudbeaver#3495 filter empty folder in global project

* fixes loading nested folder-nodes during connection creation

* Revert "fixes loading nested folder-nodes during connection creation"

This reverts commit 514bb0238b.

* uses more correct solution for preloading folders

* build fix

* cleanup

* fixes deletion of the connections so it removes empty folders

* fix: outdate only one node

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-12 12:03:21 +02:00
Alexey Potsetsuev ddf94efef0 dbeaver/pro#6016 fix: script sync (#3651) 2025-08-12 13:01:26 +08:00
Sychev Andreyandmr-anton-t c3be008ba2 dbeaver/pro#6283 Add Combobox component (#3597)
* dbeaver/pro#6283 feat: add simple Combobox implementation

It has fuzzy search inside to filter items.

* dbeaver/pro#6283 feat: implement Combobox component with search functionality and update related files

* dbeaver/pro#6283 refactor: remove unused onChange prop

* dbeaver/pro#6283 style: update imports in Combobox component

* dbeaver/pro#6283 feat: update styles, add popoverClassName prop

* dbeaver/pro#6283 refactor: keep Combobox composable for better control

* dbeaver/pro#6283 refactor: SRP in Combobox, split provider and components

* dbeaver/pro#6283 feat: implement advanced search

see AdvancedSearch example in stories

* dbeaver/pro#6283 refactor: use strict comparison

* dbeaver/pro#6283 refactor: replace fuzzy search with standard string search

* dbeaver/pro#6283 refactor: simplify Combobox component

* dbeaver/pro#6283 feat: add value formatter for ComboboxInput

It might be useful for cases when value is not in user friendly format. Combobox doesn't support such transformations from the box

Updated examples, added valueFormatter to advanced search, added MultiSelect example

* dbeaver/pro#6283 feat: sync styles with select

* dbeaver/pro#6283 fix: formatter

* dbeaver/pro#6283 fix: respect the user's reduce motion preference

* dbeaver/pro#6283 refactor: simplify component

remove search context,
use some built-in features for input value manipulations and for auto selection of the first item

* dbeaver/pro#6283 refactor: use tailwind for Field styles

* dbeaver/pro#6283 fix: should open all options on first interaction with any value

* dbeaver/pro#6283 refactor: strip Combobox component

Due to difficulties with items and search value managing in Combobox using only native combobox store, it was decided to move all that logic to CloudBeaver combobox component.

This commit removes all the logic from UIKit Combobox and partially restores it in Cloudbeaver Combobox

* dbeaver/pro#6283 feat: show no results when no items

* dbeaver/pro#6283 feat: restore input to the last valid value

* dbeaver/pro#6283 refactor: simplify restore input logic

* dbeaver/pro#6283 refactor: reset input value on blur

* dbeaver/pro#6283 refactor: don't sent input value on item click

* dbeaver/pro#6283 refactor: remove getComputed for filteredItems

getComputed will not work as expected for not primitive values( for example, for arrays)

* dbeaver/pro#6283 refactor: remove getComputed for filteredItems

* dbeaver/pro#6283 style: update z-index for  ComboboxPopover component

our backdrop component has 999 z-index(weird?), we need more to show popover in modals

* dbeaver/pro#6283 feat: put CB Combobox near the component, fix layers issue

* dbeaver/pro#6283 fix: radio title wrap

* dbeaver/pro#6283 fix: use the same letter spacing as in other inputs

* dbeaver/pro#6283 fix:combobox item styles

* dbeaver/pro#6283 fix: clear value on click

this fix is for situation when user started to type a word, found an option and clicked on it. Previously we didn't clear value and just setSelectedValue on click. This fix clears value as it happens onBlur and we use the value from selectedItem.

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-08-11 23:07:28 +08:00
Sychev AndreyandEvgenia 7acbbfe4ec dbeaver/pro#5968 refactor: update dark theme styles (#3639)
* dbeaver/pro#5968 refactor: update dark theme styles

introduces new theme variable link-color which with a color which is used for coloring anchor elements in our app
adjust this color in dark theme to have better contrast with a background, use this color in secondary button for the same reasons

* dbeaver/pro#5968 fix: adjust dark theme color values for improved contrast

* dbeaver/pro#5968 fix: update negative color in dark theme

* dbeaver/pro#5968 fix: update negative color in dark theme

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-11 18:03:31 +08:00
7e0ad33fa4 dbeaver/pro#6243 add permissions for executing and updating results (#3634)
* dbeaver/pro#6243 add permissions for executing and updating results

* feat: support special method for dataset execution

* fix: disable sql editor screen when permission is not granted

---------

Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-11 11:55:51 +02:00
Alexander SkoblikovandDaria Marutkina d9d30a0e35 dbeaver/pro#6561 fix origin in provider (#3648)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-11 10:35:08 +02:00
Ruslan MusaevandDaria Marutkina 94e70f2d16 dbeaver/pro#6284 read validate function from pref (#3643)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-11 09:30:45 +02:00
9ee4701fd0 dbeaver/pro#6298 refactor: useResource (#3635)
* dbeaver/pro#6298 refactor: useResource

* fix: CachedResource isOutdated logic

* fix: linting

* fix: resource isOutdated tracking

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-11 13:35:33 +08:00
Serge RiderandMashaKorax 9395659666 dbeaver/pro#6543 AI scripts processing (#3642)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-08-08 17:22:22 +02:00
Alexander Skoblikovandkseniaguzeeva 13a6dc9da7 dbeaver/pro#6216 fix missing errors (#3645)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-08-08 16:09:02 +02:00
36071c244e dbeaver/pro#6449 make default panel width bigger (#3633)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-08-08 15:10:46 +02:00
3e722ce3b7 5679 cb execute gql requests via cli (#3644)
* dbeaver/pro#5679 wip

* dbeaver/pro#5679 wip

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-08-08 11:41:21 +02:00
Sychev AndreyandDaria Marutkina 3c9ddcdee0 dbeaver/pro#6061 [CB] Welcome Page Improvements (#3638)
* dbeaver/pro#6061 fix: remove extra comma in ru l10n

* dbeaver/pro#6061 fix: make Cell component accessible

* dbeaver/pro#6061 fix: use proper product doc page

* dbeaver/pro#6061 fix: Cell component layout

* dbeaver/pro#6061 refactor: split Cell component interface for better dx

* Revert "dbeaver/pro#6061 refactor: split Cell component interface for better dx"

This reverts commit 812414f0f1.

* Revert "dbeaver/pro#6061 fix: make Cell component accessible"

This reverts commit 09aff9b08a.

* dbeaver/pro#6061 refactor: restrict using onClick on Cell component

force to use composition instead

* dbeaver/pro#6061 feat: generate a link to specific product version docs

* dbeaver/pro#6061 fix: use arg in all l10n files

* dbeaver/pro#6061 refactor: extract version handling logic for documentation URLs

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-08 17:35:06 +08:00
Sychev AndreyandDaria Marutkina 0b589734e8 dbeaver/pro#6537 fix: render SelectPopover in portal by default (#3641)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-07 20:24:30 +08:00
serge-rider b8db43573b Merge remote-tracking branch 'origin/devel' into devel 2025-08-07 12:26:07 +02:00
serge-rider 7c1535a95a Revert "5679 cb execute gql requests via cli (#3599)"
This reverts commit 0a50d841d0.
2025-08-07 12:20:17 +02:00
sergeyteleshevandmr-anton-t 900be41734 [CB] Bump NPM dependencies (#3628)
* dbeaver/pro#5764 updates current dependencies

* migrates to zod 4

* updates deps

* lint fix

* pr fixes

* reverts connection changes

* reverts connection changes 2

* fix types for screen service

* reverts changes for screen service

* reverts string boolean refactor

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-08-07 18:03:31 +08:00
0a50d841d0 5679 cb execute gql requests via cli (#3599)
* dbeaver/pro#5679 wip

* dbeaver/pro#5679 wip

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-08-07 11:01:06 +02:00
sergeyteleshevandDaria Marutkina 00b214b8bc [CB] Rename the Enable HTTPs mode on server config (#3631)
* dbeaver/pro#6469 corrects enable https mode translation and switch position in server config form

* adds link for proxy configuration article

* fixes punctuation for ru locale

* updates description translations

* removes extra dot in ru locale

* adds advanced documentation link

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-08-06 16:12:04 +08:00
Sychev AndreyandEvgenia ea6c960353 dbeaver/pro#6444 refactor: fix Radio component (#3632)
removes RadioGroupContext(radio group/radio use their own provider)
removes all the logic of state changing from Radio component since it's creating a wrong understanding of how these components should be used together with RadioGroup. Radio still can be controllable, but it should be used in most scenarios only with RadioGroup which is controlling the state.
simplify styles by removing extra class

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-06 16:11:13 +08:00
Viktor Kirst 44c0cfe856 Dbeaver/pro#2951 Show message about disabling user (#3624)
* dbeaver/pro#2951 Emit WSUserDisabledEvent after disabling a user

* dbeaver/pro#2951 Close user sessions on WSUserDisabledEvent

* dbeaver/pro#2951 Unify session termination logic for deleted and disabled users
2025-08-05 18:32:27 +02:00
Ainur 470d64718b dbeaver/pro#6214 invert feature and enable by default (#3615) 2025-08-05 13:43:10 +00:00
Evgenia 0c0669f0c7 dbeaver/pro#6457 Update README file (#3630) 2025-08-04 19:43:21 +02:00
2a012d600c dbeaver/pro#6382 feat: add bind session to ip combobox in server config (#3626)
* dbeaver/pro#6382 feat: add bind session to ip combobox in server config

* dbeaver/pro#6382 use select for bindSessionToIP setting instead of combobox

* dbeaver/pro#6382 bind session ip to dbeaver's hosts

* dbeaver/pro#6382 feat: add placeholder for bindToIp setting

* dbeaver/pro#6382 fix: defaultServerConfig

* dbeaver/pro#6382 refactor: remove l10n from CE

* dbeaver/pro#6382 debug log

* dbeaver/pro#6382 remove debug logs

---------

Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-08-04 16:37:56 +02:00
Alexander Skoblikovandkseniaguzeeva 0b2370d414 dbeaver/pro#6467 ignore default ports (#3622)
* dbeaver/pro#6467 ignore default ports

* dbeaver/pro#6467 check port

* dbeaver/pro#6467 fix ip host parsing

* dbeaver/pro#6467 debug log

* dbeaver/pro#6467 remove debug logs

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-08-04 13:47:18 +02:00
sergeyteleshev a0def9f3ae [CB] write unit tests (#3621)
* dbeaver/pro#6436 initializes unit tests for common-react

* installs common-react in the scripts

* adds @dbeaver/react-tests

* setups @dbeaver/react-test into tests-runner

* implements react-testing library into @dbeaver/react-tests

* removes unused deps

* adds test for frontend build github action
2025-08-04 18:45:22 +08:00
alex 13cf2911e0 dbeaver/pro#6470 remove pre commit hook dep from deps list (#3623) 2025-07-30 21:55:41 +08:00
Serge Rider c0c3594633 dbeaver/pro#6457 25.1.5 version bump 2025-07-29 21:41:44 +03:00
180ec65dd9 dbeaver/pro#5552 new gql api (#3579)
* dbeaver/pro#5552 new gql api

* dbeaver/pro#5552 fixes

* adds available hosts fields

* adds warnings for the https mode

* adds default host for domain manager + fixes some translations

* reverts server URL for domain manager

* fixes description for available hosts

* separates available hosts by new line in textarea

* removes dots

* removes http, https from examples for available hosts field

* dbeaver/pro#5552 validate request's host

* dbeaver/pro#5552 review fixes

* dbeaver/pro#5552 update default configs

* refactors availableHosts -> supportedHosts

* review fix

* dbeaver/pro#5552 fix build

* refactor: supportedHosts - array -> string

* cleanup

* reverts serverConfigurationInfoForm interfaces

* refactors secureCookies -> forceHttps (frontend)

* dbeaver/pro#5552 rename secureCookies param to forceHttps

* dbeaver/pro#5552 rename secureCookies param to forceHttps

* dbeaver/pro#5552 rename secureCookies param to forceHttps

* dbeaver/pro#5552 enable https for old deployments

* fixes translations, readonly state & hosts examples for TE

* dbeaver/pro#5552 fixes

* dbeaver/pro#5552 redirect from http to https

* dbeaver/pro#5552 redirect to https

* dbeaver/pro#5886 use scheme from origin

* dbeaver/pro#5552 exclude special servlets

* dbeaver/pro#5552 saml test

* dbeaver/pro#5552 remove slashes from hostname

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-07-29 19:04:14 +02:00
79d5702744 dbeaver/pro#5957 save lock state in sm controller (#3576)
* dbeaver/pro#5957 save lock state in sm controller

* dbeaver/pro#5957 fix read config

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-29 18:10:32 +02:00
603b94c551 dbeaver/pro#5241 [CB] Screen reader does not read some fields in the application (#3585)
* dbeaver/pro#5241 fix: input doesn't create label wrapper if label is not provided

* dbeaver/pro#5241 fix: link label to input inside InputFieldBase

* dbeaver/pro#5241 fix: make required field asterisk invisible for assistive technologies

* dbeaver/pro#5241 fix: link FieldLabel to textarea with generated id and add aria-label for accessibility

even with linked label, voiceOver doesn't pronounce label when focusing textarea, that's why aria-label is used there

* dbeaver/pro#5241 refactor: force aria-label for input field

* dbeaver/pro#5241 refactor: change role for snackbar

aria-live polite works with aria regions which initially empty and then dynamically populated with some data. If we want assistive technologies read initial content, we need to use alert role.

also hide icon from assistive technologies (no additional information from that)

* dbeaver/pro#5241 refactor: remove aria-label from input

use native htmlFor

* dbeaver/pro#5241 refactor: remove aria-label from Textarea component

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-29 23:09:05 +08:00
Alexey PotsetsuevandEvgenia ad6973d069 dbeaver/pro#6337 fix: sql editor dnd insertion (#3620)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-29 19:53:03 +08:00
sergeyteleshevandmr-anton-t 231da5b0b8 6056-cb-impelement-ui-kit-select-in-combobox (#3557)
* dbeaver/pro#6056 adds boilerplate for new combobox ui kit

* removes unused code

* refactors layout

* fixes theme styles

* fixes styles

* fixes search value

* implements ui kit store instead of menu

* reverts search value changes

* fixes search

* cleanup

* adds ellipsis on select items

* selectField supports required for form validations

* adds types for functions

* adds disabled styles

* removes hover border-color for disabled select

* removes popoverProps

* moves some styles from kit select to combobox + fixes some styles

* fixes for QA

* adds custom paddings as it was before refactoring

* fixes item styles, placeholder, title errors

* fixes focus styles for input

* fixes expanded state focus

* splits to Select and Combobox

* removes unused code for select

* pr fixes

* replaces arrow icon + opens select on label click

* fixes click on label

* Revert "fixes click on label"

This reverts commit 772c988b28.

* reverts select label

* removes 1/3 width for preferences

* removes border radius from top of the navigation tab

* fixes selection element

* removes double select border

* qa fixes

* fixes border-radius and outline-offset for select

* fixes outline

* fixes colors

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-29 19:52:34 +08:00
Alexander Skoblikovandkseniaguzeeva 57e77b7cd1 dbeaver/pro#6303 do not remove default user team (#3609)
* dbeaver/pro#6303 do not remove default user team

* dbeaver/pro#6303 throw error

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-07-29 13:17:09 +02:00
Alexey Potsetsuev 58c4744aa7 dbeaver/pro#6417 chore: update deps (#3616) 2025-07-28 22:49:30 +08:00
Sychev AndreyandEvgenia 39c7346e0a dbeaver/pro#5720 feat: add Script button for tables w/o identifier (#3608)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-28 22:46:51 +08:00
131b1e13f4 dbeaver/pro#6109 add void type (#3603)
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-27 15:17:41 +02:00
Sychev AndreyandDaria Marutkina 3914461f55 dbeaver/pro#5161 fix: show confirmation message if there is unsaved changes in teams form (#3605)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-25 15:30:37 +02:00
Sychev Andrey 5dc6e5ca38 dbeaver/cloudbeaver#3569 fix: don't show new connection button (#3604) 2025-07-25 15:27:52 +02:00
alex c747c30063 dbeaver/pro#6399 do not check executable feature (#3610) 2025-07-25 14:54:31 +02:00
ad225404f4 dbeaver/pro#6124 Add audit log cleanup job (#3591)
* dbeaver/pro#6124 Add audit log cleanup job

* dbeaver/pro#6124 fixes

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-07-24 17:47:12 +02:00
sergeyteleshev d9fe873bb5 dbeaver/pro#6383 reverts stylus stub (#3606) 2025-07-24 12:08:09 +02:00
sergeyteleshev 0193e67f72 dbeaver/pro#6372 adds stub for stylus lib (#3601) 2025-07-23 15:44:17 +02:00
8ebf7eba9c dbeaver/pro#5886 core api for permission management (#3519)
* dbeaver/pro#5886 new permissions api

* dbeaver/pro#5886 new permissions api

* dbeaver/pro#5886 test + forgotten commit

* dbeaver/pro#5886 test + forgotten commit, review fixes

* dbeaver/#5886 test + forgotten commits

* dbeaver/pro#5886 clean up CE repos

* dbeaver/pro#5886 gql api for global perms

* dbeaver/pro#5886 new perms validation

* dbeaver/pro#5886 remove unused class

* dbeaver/pro#5886 new api

* chore: update permission key

* dbeaver/pro#5087 feat: permissions management

* feat: check permission for query execution

* fix: override only restrictive permissions

* fix: permissions layer

* fix: status gutter duplication

* fix: script execution error message display

* fix: hide not available script execution actions

* dbeaver/pro#5886 anon perms fix, default value for global perms

* fix: hide settings groups only for specific settings

* feat: restore permissions

* refactor: after review

* fix: merge conflicts

* fix: type import

* fix: merge conflicts

* fix: linting

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-07-23 03:56:43 +02:00
AnastasiyaandDaria Marutkina 848b95113a dbeaver/cloudbeaver#3590 update DuckDB driver till version 1.3.2 (#3592)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-22 11:32:41 +02:00
sergeyteleshevandmr-anton-t d4c304f725 [CB] write unit tests (#3593)
* dbeaver/pro#6312 adds unit tests for helpers

* updates yarn locks

* lint fix

* restores mock

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-22 09:41:08 +02:00
sergeyteleshev 444ff0d672 [CB] fix unit tests issue with console mocking (#3589)
* dbeaver/pro#6288 adds init for console mocks

* test fix 2

* test fix 3

* test fix 4

* resetets deprecated settings
2025-07-22 09:33:33 +02:00
Daria Marutkina bf49a94642 dbeaver/pro#6275 Update README file (#3596) 2025-07-21 11:11:39 +02:00
JeremyandEvgenia 3a2e41fa69 feat: upgrade databend-jdbc to v0.3.9 (#3540)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-21 08:59:53 +02:00
Alexey PotsetsuevandEvgenia 36e8d1fac9 dbeaver/pro#6201 feat: ai chat query insertion (#3578)
* dbeaver/pro#6201 feat: ai chat query insertion

* chore: remove confusing comment

* chore: query execution and replacement

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-18 23:44:17 +08:00
sergeyteleshev dcc13811e8 [CB] fix frontend linter to pass the github action (#3588)
* dbeaver/pro#6272 initial commit to see errors

* removes func-call-spacing from rules

* removes func-call-spacing from rules 2

* fixes flat file for stylistic

* try to update stylistic

* Revert "try to update stylistic"

This reverts commit 459bf77714.

* reverts rule

* tries function-call-spacing

* test linter rule

* Revert "test linter rule"

This reverts commit 0b0fb66b69.
2025-07-18 19:51:16 +08:00
Serge Rider 2ba910386f dbeaver/pro#6275 25.1.4 version bump 2025-07-15 20:21:32 +03:00
Serge Rider a7c5d53f0a dbeaver/pro#6275 25.1.4 version bump 2025-07-15 20:20:39 +03:00
Ainur 59f0da9caa dbeaver/pro#5399 fix merge conflict (#3587) 2025-07-15 19:08:33 +02:00
4d5c58316c dbeaver/pro#5399 Add new completion engine to cloudbeaver (#3535)
* dbeaver/pro#5399 Add new completion engine to cloudbeaver

* dbeaver/pro#5399 Fixes and update icon references

* dbeaver/pro#5399 Add new completion engine to cloudbeaver

* dbeaver/pro#5399 add sync config with desktop

* dbeaver/pro#5399 fix fallback to default engine

* dbeaver/pro#5399 feat: add labels for content assistant setting

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
2025-07-15 18:43:43 +02:00
bae21e5b2e Dbeaver/pro#5864 add audit logging (#3556)
* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 Add audit logging

* dbeaver/pro#5864 fix review

* dbeaver/pro#5864 fix review

* dbeaver/pro#5864 fixes

* dbeaver/pro#5864 add file name upload logging

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-07-15 16:11:37 +02:00
5ce5f6e10d dbeaver/pro#6042 get node features from feature provider (#3581)
Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
2025-07-15 12:27:42 +02:00
sergeyteleshevandEvgenia db28b2ad2c dbeaver/pro#6251 moves settings to interface + fixes border-size for selected tab (#3584)
* dbeaver/pro#6251 moves settings to interface + fixes border-size for selected tab

* applies borders only for navigation tabs

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-15 17:48:12 +08:00
Sychev AndreyandDaria Marutkina d58b3e14a2 dbeaver/pro#6105 fix: form validation fails on test in GCP (#3583)
Removed active state from Options component resources because it unload resources when we switch to other tabs which leads to broken connection form state and entails data inconsistency.

For example, the check driver?.useCustomPage fails because driver resource has been unloaded and the component renders standard Parameters from instead of custom taking state from the wrong destination.

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-15 17:47:34 +08:00
Alexander Skoblikovandkseniaguzeeva c476a56661 dbeaver/pro#5816 link websession with address (#3564)
* dbeaver/pro#5816 link websession with address

* dbeaver/pro#5816 flag to disable ip binging

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-07-14 19:06:52 +02:00
79804619d3 dbeaver/pro#4863 Add column description to data editor (#3573)
* dbeaver/pro#4863 Add column description to data editor

* adds description for columns + settings

* alignes description with column name

* pr fixes

* adds skip to the settings test

* makes header more compact

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-14 21:25:58 +08:00
Sychev AndreyandDaria Marutkina 1c7300cdf1 dbeaver/pro#5455 Feat: add repeat password field in easyconfig (#3570)
* dbeaver/pro#5455 feat: add repeat password field in configuration wizard

* dbeaver/pro#5455 refactor: connect repeat password field with form validation via state

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-14 17:26:24 +08:00
9b2cb7cc92 [CB] Multiple tabs row support (#3563)
* dbeaver/pro#5904 adds navigation multiple tabs support

* adds tabs box container

* fixes bug with invisible object viewer tabs

* cleanup

* Revert "cleanup"

This reverts commit a519421bb0.

* Revert "fixes bug with invisible object viewer tabs"

This reverts commit 03b8e7b1cc.

* Revert "adds tabs box container"

This reverts commit c6f247ed64.

* removes extra pixels for border

* adds more proper setting description

* removes extra dots

* skips tests

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
2025-07-11 20:51:05 +08:00
Ruslan MusaevandDaria Marutkina 5022c01468 dbeaver/pro#4739 Fix losing context execution after node refreshing (#3572)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-10 16:44:50 +02:00
Sychev AndreyandAlexey Potsetsuev 60fb6c5a3b dbeaver/pro#4990 feat: add SSL configuration documentation (#3575)
* dbeaver/pro#4990 feat: add SSL configuration documentation

* dbeaver/pro#4990 refactor: use proper product name

* dbeaver/pro#4990 fix: use sm icon for SSL docs link

* dbeaver/pro#4990 fix: extra space in l10n string

---------

Co-authored-by: Alexey Potsetsuev <wrouds@gmail.com>
2025-07-10 17:54:17 +08:00
sergeyteleshev 6889b51ab6 dbeaver/pro#6221 skips settings test (#3580)
* dbeaver/pro#6221 skips settings test

* lint fix

* lint fix 2

* lint fix 3

* lint fix 4

* reverts all lint fixes
2025-07-10 17:52:05 +08:00
a7e09b5e16 dbeaver/pro#5558 license user management from app (#3504)
* dbeaver/pro#5558 license user management from app

* dbeaver/pro#5558 fixes after test

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-07-10 04:11:22 +02:00
Dmitrii BarnukovandMatvey16 0746a7a2c4 dbeaver/pro#4025 Downgrade db2 default driver version to 11.5.9 (#3574)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2025-07-10 04:01:26 +02:00
Alexey Potsetsuevandmr-anton-t f5380093ca dbeaver/pro#5763 chore: update deps (#3571)
* dbeaver/pro#5763 chore: update deps

* fix: linting

* chore: fix gql client

* chore: force version upgrade

* fix: gql error catching

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-10 03:09:19 +08:00
alexandDaria Marutkina dd4691c650 dbeaver/pro#6150 sync options part (#3577)
* dbeaver/pro#6150 sync options part

* dbeaver/pro#6150 reset unsaved properties properly

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-10 03:08:46 +08:00
55db159560 dbeaver/pro#6075 remove commit hooks (#3548)
* dbeaver/pro#6075 remove commit hooks

* dbeaver/pro#6075 do not run pre-commit hooks on merge and rebase

* dbeaver/pro#6075 reuse logic

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-09 02:12:20 +08:00
Alexander Skoblikov dcdea93687 dbeaver/pro#6148 add x-origin header support (#3565) 2025-07-08 11:40:27 +00:00
sergeyteleshevandEvgenia 54b5db9480 [CB] SQL Editor - container blinks when changing scheme (#3562)
* dbeaver/pro#6008 fixes blink on schema change

* fixes update for execution context so mobx catch it right

* Revert "dbeaver/pro#6008 fixes blink on schema change"

This reverts commit be1e828511.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-07 20:32:46 +08:00
Daria Marutkina aa84d79e93 dbeaver/pro#6147 Update README file (#3567) 2025-07-07 11:23:32 +02:00
sergeyteleshev 9bc28083fd dbeaver/pro#3558 removes unused code (#3561) 2025-07-03 23:08:19 +08:00
Serge Rider cb03b507b3 dbeaver/pro#6147 25.1.3 version bump 2025-07-01 21:20:43 +03:00
Ruslan MusaevandAinur 9ffa5088db dbeaver/pro#6137 Fix png cache images (#3560)
* dbeaver/pro#6137 Fix png cache images

* dbeaver/pro#6137 Fix png cache images

---------

Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-07-01 18:02:19 +02:00
Ruslan MusaevandEvgenia e7dcc93706 Dbeaver/pro#5266 extract data export file limit parametr to preference (#3529)
* dbeaver/pro#5266 Extract dataExportFileLimit parameter to preference

* Revert "dbeaver/pro#5266 Extract dataExportFileLimit parameter to preference"

This reverts commit 7f1c5920dc.

* dbeaver/pro#5266 Remove dataExportFileLimit parameter

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-07-01 18:02:06 +02:00
alexandDaria Marutkina ad3ae4547c dbeaver/pro#5486 use new pointer events instead of mouse (#3549)
* dbeaver/pro#5486 use new pointer events instead of mouse

* dbeaver/pro#5486 reset hover on menu close

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-01 21:36:59 +08:00
dce7797bba [CB] move radio button to ui-kit #6031 (#3533)
* dbeaver/pro#6031 replaces old radio button with ui-kit one

* lint fix

* Update webapp/packages/core-blocks/src/FormControls/RadioGroup.tsx

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* pr fixes

* adds labelledby for options configType

* adds gap:0 for vertical radio group

* pr fixes

* cleanup

* radio button fixes for dark theme

* nowrap for radio button words

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-07-01 21:36:37 +08:00
AlexeyandDaria Marutkina 7c0d666b0a dbeaver/pro#5122 fix: settings alias resolving (#3544)
* dbeaver/pro#5122 fix: settings alias resolving

* chore: skip failing tests

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-07-01 19:57:28 +08:00
Tsimafei LabanovichandMatvey16 c5a2bcdcbf dbeaver/pro#4800 Update db2 driver version (#3460)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2025-07-01 13:17:40 +02:00
sergeyteleshev 85a242bf34 dbeaver/pro#6113 fixes clientActivity wrong spying on SetTimeout (#3559) 2025-06-30 18:10:54 +08:00
2117840e40 [CB] 'Same as device' theme setting #5445 (#3555)
* dbeaver/pro#5445 adds system theme

* cleanup

* adds queries to consts

* fix: review

* fixes bugs with subscriptions + translations + cleans up

* adds settings keys type

---------

Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-30 16:39:16 +08:00
ShadelessFoxandmr-anton-t 9fec1ce5a5 dbeaver/pro#6039 Migrate to SVG icons (#3542)
* dbeaver/pro#6039 Migrate to SVG icons

* dbeaver/pro#6039 SVG content type fix

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-30 08:31:38 +02:00
Ainurandmr-anton-t 88ef237566 dbeaver/pro#5813 add description for graphql queries (#3496)
* dbeaver/pro#5813 add description for graphql queries

* dbeaver/pro#5813 do not use deprecated word in the description

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-27 15:39:16 +02:00
Sychev AndreyandDaria Marutkina cb84409701 dbeaver/pro#5998 Fix: can't copy the whole table selected with the corner cell (#3550)
* dbeaver/pro#5998 fix: selectAll index header cell

* dbeaver/pro#5998 fix: removed OrderButton from tabbing order, add sorting on space/enter when header column cell is in focus

* dbeaver/pro#5998 feat: add onHeaderKeyDown handler to DataGrid and HeaderCellContentRenderer

we lost ability to copy data grid cells' data when one of the header cells is focused, because the header cell renderer was not handling keydown events. This commit utilizing gridSelectedCellCopy.onKeydownHandler inside HeaderCellContentRenderer keydown event handler

* dbeaver/pro#5998 style: change onKeyDown to a named function

* dbeaver/pro#5998 refactor: simplify OrderButton and update sorting logic in HeaderCellContentRenderer

* dbeaver/pro#5998 refactor: rename container class to clickAreaOverlay in TableIndexColumnHeader, remove z-index

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-27 18:23:37 +08:00
Sychev AndreyandDaria Marutkina 69330aa0fe dbeaver/pro#6038 fix: can't click on checkbox in OutputLogMenu (#3539)
* dbeaver/pro#6038 fix: can't click on checkbox in OutputLogMenu

* dbeaver/pro#6038 refactor: update menu item and tree node styles

replace theme-ripple classname with in-place styles  for hover and active states

* dbeaver/pro#6038 refactor: move pointer events none in MenuItemIcon class

* Revert "dbeaver/pro#6038 refactor: update menu item and tree node styles"

This reverts commit 2c2fdc2e8d.

* dbeaver/pro#6038 revert changes made in this branch and #5997, #5989

previous manipulations with theme-ripple class has broken our UI in several places. this PR returns to the state before #5989 when only CloudExplorerTree was broken

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-27 18:23:20 +08:00
Sychev AndreyandEvgenia 76fab9d179 dbeaver/pro#5242 Fix: make the expand tree button focusable from keyboard in the admin part (#3551)
* dbeaver/pro#5242 refactor: update TableItemExpand component

replace a div with IconButton and clean up CSS

* dbeaver/pro#5242 refactor: adjust outline offset for icon button

Usually icon buttons are used inside other components or in small places, so they tend to overflow over their container with a standard button outline offset. I believe that offset 0 is the better default for the IconButton.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-26 23:57:00 +08:00
Sychev AndreyandDaria Marutkina feed398b6d dbeaver/pro#5820 fix: value panel truncate text (#3554)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-26 23:31:05 +08:00
8422e695ea dbeaver/pro#5538 AI chat (#3520)
* dbeaver/pro#5538 add ai message chunk event

* dbeaver/pro#5538 add events to schema

* dbeaver/pro#5538 add general delete message

* dbeaver/pro#5538 add date time for conversation and fix api

* dbeaver/pro#5538 add change connection executor

* dbeaver/pro#5538 add error event model and rename type

* dbeaver/pro#5538 save metadata param in user preferences

* dbeaver/pro#5538 revert connection change executor

* dbeaver/pro#5538 add className to alert comp

* dbeaver/pro#5538 add connect listener

* dbeaver/pro#5538 add executeEditorQuery method to navigator service

* dbeaver/pro#5538 merge fixes

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-26 16:26:49 +02:00
7fd2548c9c [CB] implement ui-kit spinner #6017 (#3532)
* dbeaver/pro#6017 adds new ui spinner to loader

* removes unused code

* pr fixes

* changes loader animation

* dbeaver/pro#6017 fix: remove class names that don't exist

* dbeaver/pro#6017 fix: remove cloudbeaver spinner animation adjustments

* dbeaver/pro#6017 feat: introduce animation delay variable for spinner

Make the initial appearance of the spinner better by starting from semi-filled circle, not the tine dot which is crucial on fast loads.

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Sychev Andrey <nukemoore@gmail.com>
2025-06-26 22:26:36 +08:00
Sychev AndreyandEvgenia dc8407ad35 dbeaver/pro#4745 Use new tree for cloud explorer (#3523)
* dbeaver/pro#4745 fix: useTreeFilter UX bug

When a user searched for a term (e.g., 're') and found a matching node in the middle of the tree, the user expected to expand that node and see all its children.
But the filter was also being applied to the children, hiding non-matching children. This created a confusing experience where expanding a found node might show empty or partially empty results

In new implementation Tree shows ALL children without filtering if parent node matches filter.

* dbeaver/pro#4745 refactor: update children prop type and usage in AuthenticationProvider

* dbeaver/pro#4745 refactor: replace Loader with Spinner in TreeNodeExpand

* dbeaver/pro#4745 refactor: update typography styles with global typography styles

* dbeaver/pro#4745 feat: add naive tree selection functionality with useTreeSelection hook

* dbeaver/pro#4745 feat: enhance tree selection with loading state management

* dbeaver/pro#4745 feat: add indeterminate selection state management in tree component

* dbeaver/pro#4745 feat: add multiple selection prop in tree component

* dbeaver/pro#4745 refactor: improve indeterminate state management in tree selection

* dbeaver/pro#4745 feat: add expandOnSelect prop to tree and selection hooks

* dbeaver/pro#4745 refactor: adjust padding in CommonDialogHeader styles and fix formatting

* dbeaver/pro#4745 refactor: implement tree selection context for improved node selection management

* dbeaver/pro#4745 style: update padding-left to use CSS variable for treeNodeNested

* dbeaver/pro#4745 refactor: remove redundant state update for empty child nodes in expandNode

It make no sense to close just expanded node if there is no children. User will lost the information about that and could try to open it again later. It's better to keep expanded state to show that this node is empty.

* dbeaver/pro#4745 style: fix lint

* dbeaver/pro#4545 fix: remove useLayoutEffect with focus in TreeNodeControl

This auto focus behavior entailed several bugs like stealing focus from filter input or breaking custom node elements like menu on hover. Decided to remove.

* dbeaver/pro#4745 refactor: make useTreeSelection hook public

* dbeaver/pro#4745 refactor: update tree selection logic and remove unused properties

* dbeaver/pro#4745 refactor: remove async

* dbeaver/pro#4745 refactor: remove duplicated typography styles

* dbeaver/pro#4745 refactor: update selection

* dbeaver/pro#4745 refactor: simplify selection state management in useTreeSelection

* dbeaver/pro#4745 refactor: optimize selection  logic in useTreeSelection

* dbeaver/pro#4745 fix: revert children type

* dbeaver/pro#4745 style: lint

* dbeaver/pro#4745 refactor: expose process action from tree node context

* dbeaver/pro#4745 refactor: remove optional showInFilter property from INodeState interface

* dbeaver/pro#4745 refactor: simplify indeterminate state updates and optimize child selection handling

* dbeaver/pro#4745 fix: bug with bad selection state when select with filters

* dbeaver/pro#4745 refactor: update selection context and method names in tree selection

* dbeaver/pro#4745 feat: add disabled prop to Node component

* dbeaver/pro#4745 refactor: remove disabled prop from Node interface

clean unused TreeNodeSelect code

* dbeaver/pro#4745 add action.bound for processAction

* dbeaver/pro#4745 fix: close/deselect node if loading failed

* dbeaver/pro#4745 feat: enhance tree filter functionality with expanded state management

parent nodes are expanded if node matches with filters. When filters are cleared, the tree restores it's unfiltered expand state

* dbeaver/pro#4545 feat: integrate notification service to show errors on load

* dbeaver/pro#4745 fix: don't  select empty folders

* Revert "dbeaver/pro#4545 feat: integrate notification service to show errors on load"

This reverts commit c1fd855a94.

* dbeaver/pro#4745 feat: add state transformer to tree filter for expanded state management

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-26 21:30:41 +08:00
Mikhailov Grigorii 4379ba8ce7 dbeaver/pro#6036 Added apt-get dist-upgrade to upgrade current packages in ubuntu and fix CVEs (#3553) 2025-06-26 14:51:54 +02:00
sergeyteleshevandEvgenia eaeb493d6b [CB-6221] Add a Clear button to the Output log #4410 (#3547)
* dbeaver/pro#4410 adds clear button for output logs

* pr fixes

* pr fixes

* lint fix

* removes logs only for specific context

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-26 19:05:29 +08:00
mayer 9de5f9508f dbeaver/dbeaver-devops#1924 use stable java base image instead of latest (#3546) 2025-06-25 12:12:27 +02:00
Alexander Skoblikov 93cbaa673f dbeaver/pro#6076 remove debug logs (#3543) 2025-06-25 08:32:01 +00:00
Sychev AndreyandEvgenia 646ec5c901 dbeaver/pro#6018 fix: context menu disappears on cells with an intera… (#3538)
* dbeaver/pro#6018 fix: context menu disappears on cells with an interactive formatter

add menu visibility handling to cell formatters

* dbeaver/pro#6018 refactor: rename handleStateSwitch to handleCellMenuStateSwitch for clarity

* dbeaver/pro#6018 refactor: rename menu visibility properties for clarity

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-24 17:57:35 +08:00
sergeyteleshevandEvgenia beecc84d14 [CB] SQL editor - ctrl+z during autosave scrolls the script to the top #5645 (#3470)
* dbeaver/pro#5645 removes scroll to top for sql editor

* removes floating second scroll bar on ctrl+z

* removes cursor jumping + removes scrolling to top

* reverts layout scroll behavior

* reverts layout scroll behavior 2

* removes unneeded cursorOffset

* removes offset and unused code

* reverts has insert property behavior

* remembers previous cursor position from history

* adds mobx action

* reverts insert property logic

* fixes cursor position during ctrl+z

* Revert "fixes cursor position during ctrl+z"

This reverts commit d1aac8e750.

* dbeaver/pro#5645 sets cursor in sync with code mirror onChange event

* eslint fix

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-23 19:44:18 +08:00
Evgenia ab0df706bb Update README.md - 25.1.1 RN (#3541) 2025-06-23 13:16:12 +02:00
Tiandong Qiu 5edd0142af #38420 P2 repo link fix (#3537) 2025-06-23 12:04:35 +02:00
serge-rider 3c49650bc3 Type check fix 2025-06-20 10:59:02 +02:00
serge-rider f286ab4b3c Overflow fix 2025-06-20 10:22:12 +02:00
serge-rider 7dc9a9daa7 dbeaver/pro#6010 25.1.2 version bump 2025-06-17 20:13:59 +02:00
7f353e9169 dbeaver/pro#5127 Send event if driver config was updated (#3516)
* dbeaver/pro#5127 Send event if driver config was updated

* dbeaver/pro#5127 add topic to graphql

* dbeaver/pro#5127 add topic to graphql

* adds workspace config event handler + handles drivers list

* adds workspace config event handler to connection info resource

* cleanup

* fixes bug for event handlers so it subscribes on topic

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-17 17:58:28 +02:00
sergeyteleshev 33757a96e8 dbeaver/pro#5997 reverts ripple styles for tree elements + allows to point under it (#3530) 2025-06-17 21:43:56 +08:00
Alexander Skoblikov 47a6ba4632 dbeaver/pro#4404 fix origin form k8s headers (#3527) 2025-06-17 10:40:37 +02:00
Alexey 507aa096dd dbeaver/pro#5123 feat: add welcome screen & update react-data-grid (#3513) 2025-06-17 01:03:28 +08:00
sergeyteleshevandmr-anton-t c28af2a722 dbeaver/pro#5989 removes unused styles for cloud explorer checkbox (#3525)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-16 21:57:51 +08:00
sergeyteleshevandEvgenia 1d01db34ff dbeaver/pro#5975 normalizes chunk ids (#3524)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-16 21:57:02 +08:00
Alexander Skoblikovandkseniaguzeeva 6d70e03a9e dbeaver/pro#4404 dynamic server url (#3379)
* dbeaver/pro#4404 wip

* dbeaver/pro#4404 get origin from user request

* dbeaver/pro#4404 dynamic server url

* dbeaver/pro#4404 dynamic server url

* dbeaver/pro#4404 update after merge

* dbeaver/pro#4404 fixes after devel changes

* dbeaver/pro#4404 get origin url from headers

* dbeaver/pro#4404 fix referer

* dbeaver/pro#4404 support forward headers

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-06-16 14:51:02 +02:00
serge-rider d69eb04b11 Merge remote-tracking branch 'origin/devel' into devel 2025-06-14 16:57:35 +02:00
serge-rider f891c26ee2 dbeaver/pro#5982 Remove redundant Bundle-ClassPath 2025-06-14 16:55:46 +02:00
12ef593bd7 [CB] Integrate UIKit Checkbox to Cloudbeaver #5797 (#3493)
* dbeaver/pro#5797 adds boilerplate for checkboxes (needs styles setting for CB)

* reverts ui-kit checkbox behavior

* adjusts styles

* removes _checkbox.scss

* incapsulates styles into checkboxMarkup so it does not affect ui kit checkbox

* removes unused styles

* tunes styles: margin + disabled checkbox state

* moves caption layout inside checkboxmarkup

* adds sizes styles

* сleanup

* removes unused checkbox ref + fixes styles for menu checkbox items

* adds className prop to nav bar menus

* cleanup

* moved datagrid styles to boolean formatter

* Revert "adds className prop to nav bar menus"

This reverts commit fc1cdb2f0b.

* adds approach of reusing checkbox styles (module/non-module)

* cleanup

* removes secondary from menu item renderer checkbox

* fixes checkbox bug with datagrid styles conflict

* adds BEM methodology naming for checkboxes classNames

* pr fixes

* adds checkbox sizes in booleanFormatter

* test fixes

* fixes styles for users

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-14 00:16:45 +08:00
AnastasiyaandEvgenia 3f17ec4abc dbeaver/pro#5942 update AWS update link (#3521)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-13 21:56:30 +08:00
Alexey f0010494fa dbeaver/pro#5889 fix: unit tests win (#3522) 2025-06-13 17:33:06 +08:00
5c17cc660d dbeaver/pro#5673 Add search ability for the value panel (#3511)
* dbeaver/pro#5673 feat: add search panel component and integrate search functionality

* dbeaver/pro#5673 feat: enhance search panel layout styles

* dbeaver/pro#5673 feat: reactive search panel

* dbeaver/pro#5673 refactor: separation of concerns

* dbeaver/pro#5673 refactor: make outline thinner in search panel

* dbeaver/pro#5673 feat: Add new SVG icons for match word, regex, and replace functionalities

* dbeaver/pro#5673 feat: add Icon component with customizable properties and documentation

* dbeaver/pro#5673 feat: update OrderButton and SearchPanel to use new Icon component

* dbeaver/pro#5673 feat: refactor SearchPanel layout

* dbeaver/pro#5673 refactor: remove redundant reexport

* dbeaver/pro#5673 refactor: convert SearchPanel to a MobX observer component

* dbeaver/pro#5673 refactor: remove unused searchOptions from IDefaultExtensions interface

* dbeaver/pro#5673 refactor: use useImperativeHandle for focus handling

To exclude the chance of manipulating input unexpectedly outside of the component.

* dbeaver/pro#5673 refactor: adjust padding and margin in search panel styles

* dbeaver/pro#5673 refactor: update SVG icon import to use react component

* dbeaver/pro#5673 build: update dependencies in yarn.lock

* dbeaver/pro#5673 fix: regexp

* dbeaver/pro#5673 fix: correct translation for 'No found' to 'Not found'

* dbeaver/pro#5673 refactor: remove extra regex check

* dbeaver/pro#5673 refactor: fix styles

* dbeaver/pro#5673 fix: swap arrow icons for find next and find previous buttons

* dbeaver/pro#5673 fix: adjust flex-basis for search panel matches container

* dbeaver/pro#5673 feat: add isReadOnly prop to SearchPanel

* dbeaver/pro#5673 feat: add placeholder color variables for input fields

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-13 17:22:38 +08:00
JeremyandEvgenia 41ff7485d5 feat: Add Driver for Databend (#3488)
* feat: Add Driver for Databend

* remove idea dir

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-06-13 10:12:25 +02:00
Sychev Andreyandmr-anton-t fbdb5cd49a dbeaver/pro#5800 refactor: InputFieldBase (#3492)
* dbeaver/pro#5800 refactor: InputFieldBase

update InputField by swapping native input by Input from ui-kit, replace inner action icons to IconButton components, and replace Loader with Spinner component

* dbeaver/pro#5800 fix: enforce border and min-height styles in InlineEditor

* dbeaver/pro#5800 feat: add size prop to Filter component for responsive input sizing

* dbeaver/pro#5800 feat: add UiInput tokens for input component

removes hover effect on inputs by using the same token as for default border

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-12 17:21:29 +08:00
AlexeyandDaria Marutkina c920f84e13 dbeaver/pro#4910 fix: tooltip for disabled context menu items (#3503)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-11 23:42:29 +08:00
AlexeyandDaria Marutkina 84d85ea28e dbeaver/pro#5898 chore: update navigator icons (#3497)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-10 23:10:05 +08:00
sergeyteleshevandmr-anton-t dd060e8b42 [CB] spread new ConnectionInfoResources across the app #5412 (#3501)
* dbeaver/pro#5412 removes includeAuthProperties from ConnectionInfoResource

* dbeaver/pro#5412 removes customIncludeOptions from ConnectionInfoResource

* dbeaver/pro#5412 removes includeNetworkHandlersConfig from ConnectionInfoResource

* dbeaver/pro#5412 removes includeProviderProperties from ConnectionInfoResource

* dbeaver/pro#5412 removes includeAuthNeeded & includeCredentialsSaved from ConnectionInfoResource

* dbeaver/pro#5412 removes includeProperties from ConnectionInfoResource

* cleanup

* moves some auth properties to ConnectionInfoAuthPropertiesResource

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-10 22:38:04 +08:00
Alexey 786babc988 dbeaver/pro#5889 fix: unit tests (#3515) 2025-06-10 20:33:53 +08:00
9739ab3b46 dbeaver/pro#5218 fix: limit websocket connection retry to 4 attempts (#3502)
* dbeaver/pro#5218 fix: limit websocket connection retry to 4 attempts

* Update README.md - update contribution info (#3505)

* dbeaver/pro#5910 fix: sorting only for result sets (#3506)

* dbeaver/pro#5910 fix: sorting only for result sets

* dbeaver/pro#5910 fix: require result set constraints only when needed

* dbeaver/pro#5915 Delete legacy name service API usage + code style (#3510)

* dbeaver/pro#5842 add validation for unset value (#3483)

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>

---------

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-10 19:58:46 +08:00
Serge Riderandmr-anton-t ab31ddda40 dbeaver/pro#5936 P2 repos endpoints (#3512)
* dbeaver/pro#5936 P2 repos endpoints

* dbeaver/pro#5936 Switch to new P2 repo

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-06-10 11:45:57 +02:00
alexandDaria Marutkina 08d65c4410 dbeaver/pro#5842 add validation for unset value (#3483)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-06-09 22:45:45 +08:00
Serge Rider f7cd98ae4e dbeaver/pro#5915 Delete legacy name service API usage + code style (#3510) 2025-06-06 09:38:06 +02:00
Alexey 419f8b562e dbeaver/pro#5910 fix: sorting only for result sets (#3506)
* dbeaver/pro#5910 fix: sorting only for result sets

* dbeaver/pro#5910 fix: require result set constraints only when needed
2025-06-04 22:23:19 +08:00
Anastasiya 927ba55dff Update README.md - update contribution info (#3505) 2025-06-04 13:26:44 +02:00
mayer 28aea99a3b dbeaver/dbeaver-devops#1943 base image upgrade removed (#3500) 2025-06-03 16:26:19 +02:00
Serge Rider e7c6c11342 dbeaver/pro#5738 Migrate to Tycho 4.0.12 and JDK 21 (#3494) 2025-06-03 11:56:26 +02:00
Serge Rider d2d915a8ea dbeaver/pro#5826 QM service model refactoring (#3490) 2025-06-02 16:12:03 +02:00
ShadelessFox 6b8bcfbc1a dbeaver/pro#5774 Correctly handle current working directory (#3462) 2025-06-02 13:46:28 +02:00
Daria MarutkinaandAnastasiya 31be26e167 dbeaver/pro#5832 Update README file (#3491)
* dbeaver/pro#5832 Update README file

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
2025-06-02 12:46:28 +02:00
sergeyteleshev 9c788a56cd [CB] Use UIKit Button component for SplitControls implementation #5799 (#3489)
* dbeaver/pro#5799 moves split control to the button component

* applies ui kit css

* makes styles not moduled + cleanup

* uses theme colors + fixes prop for button

* removes unused button styles

* build fix

* build fix 2
2025-06-02 16:09:41 +08:00
Serge Rider 5bc1734cb6 dbeaver/pro#5832 25.1.1 version bump 2025-05-27 19:37:07 +02:00
aba27cf9d3 dbeaver/pro#5711 Add validation for team id (#3459)
* dbeaver/pro#5711 Add validation for team id

* dbeaver/pro#5711 Add validation for user id

* dbeaver/pro#5711 add user name and team id validation

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-27 17:53:09 +02:00
sergeyteleshev a098db62c3 [CB] hotkeys with "/" and "\" dont work after hotkeys library version upgrade #5781 (#3478)
* dbeaver/pro#5781 fixes shortcuts with slashes symbols + correctly translates it in the shortcut tips section

* moves display logic in SHORCUTS_DATA helpers

* adds replace all for shorcuts to consider sequential shorcuts cases

* adds formatShortcutKeys helper

* removes useless code

* adds alt -> option conversion

* refactors formatKey logic to switch

* cleanup

* cleanup

* cleanup

* switch with lowerCaseCode

* moves shortcut helpers to core-utils + uses it everywhere

* Revert "moves shortcut helpers to core-utils + uses it everywhere"

This reverts commit b4eeda5adf.
2025-05-27 17:50:17 +02:00
c4886127a6 dbeaver/pro#5821 Style fixes (#3479)
* dbeaver/pro#5821 fix: add cursor pointer to icon button

* dbeaver/pro#5821 refactor: change view button type

* dbeaver/pro#5821 feat: add UiSpinner styles for theme integration

* dbeaver/pro#5821 fix: update button class

* dbeaver/pro#5821 fix: improve buttons in driver management

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-27 17:49:05 +02:00
Alexander Skoblikovandkseniaguzeeva 343d671575 dbeaver/pro#5778 custom certs folder in conf folder (#3477)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-05-27 16:14:11 +02:00
AlexeyandEvgenia 06a0411f84 dbeaver/pro#5200 feat: fast connection / folder creation in the explorer (#3464)
* dbeaver/pro#5200 feat: fast connection / folder creation in the explorer

* chore: update icons

* chore: update icons

* chore: remove important from style

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-27 21:33:23 +08:00
ffe3d45017 dbeaver/pro#5789 replace Buttons styles (#3468)
* dbeaver/pro#5789 refactor: add ButtonIcon component instead of Button.Icon

* dbeaver/pro#5789 refactor: button components across whole application to use UIKit button and UIKit variables

- Rewrite Button.css(former button.module.css) file to define button styles for better maintainability and scalability
- Added props to the Button component for Icons: 'size' and 'placement', currently used only in PropertiesTable (Add property)
- Changed button modifiers to 'variant' swapping unelevated mod to primary(default one, so mod just deleted) and outlined mod to variant secondary.
- In one case changed raised mod to danger variant (deleting a license)

* dbeaver/pro#5789 refactor: fix Button component styling and removed redundant css file

* dbeaver/pro#5789 style: clean up button formatting across multiple components

* dbeaver/pro#5789 refactor: update Tailwind CSS import to use layer directive

* dbeaver/pro#5789 refactor[kit]: add disabled state styles for buttons

* dbeaver/pro#5789 refactor: enhance button styles for disabled state

* dbeaver/pro#5789 fix button problems

* dbeaver/pro#5789 fix: change layer name from theme to base in color styles

* dbeaver/pro#5789 refactor: update button padding from 16px to 15px

* dbeaver/pro#5789 refactor: adjust button gap and update InputFiles button props

* dbeaver/pro#5789 style: center align button in SSHKeyUploader component

* dbeaver/pro#5789 fix: update button classes to use inline-flex for better alignment

* dbeaver/pro#5789 fix: remove initial background from tab styles

* dbeaver/pro#5789 fix: move cursor pointer rule to button container

* dbeaver/pro#5789 fix: update checkbox SVG fill property for proper rendering

* dbeaver/pro#5789 fix: add variant prop to Button component for styling options

* dbeaver/pro#5789 fix: add InlineEditor to CSS layer to compete with theme Important! border-color

* dbeaver/pro#5789 fix: add min-width to button styles for consistency

* dbeaver/pro#5789 refactor: adjust margin for trigger element in context menu

first of all it's done to fix autotests and the second reason is to visually balance the cell with menu

* dbeaver/pro#5789 fix: make boolean great again

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-05-27 16:59:01 +08:00
ElizabethandDiana 16005be3e6 dbeaver/dbeaver#37602 Add the setting for column names completion (#3474)
* dbeaver/dbeaver#37602 Add the setting for column names completion

* dbeaver/dbeaver#37602 Fix formatting

---------

Co-authored-by: Diana <31996417+uslss@users.noreply.github.com>
2025-05-27 06:20:47 +02:00
alexandEvgenia 005adb10ce dbeaver/pro#5215 track close event on layout close (#3472)
* dbeaver/pro#5215 track close event on layout close

* dbeaver/pro#5215 support old close behaviour

* dbeaver/pro#5215 add event data check to user form

* dbeaver/pro#5215 change naming

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-27 00:39:06 +08:00
Sychev Andrey 0a7d9e6a25 dbeaver/pro#5814 fix: wrap checkbox styles in base layer (#3473)
* dbeaver/pro#5814 ашч: wrap checkbox styles in base layer

* dbeaver/pro#5814 style: wrap disabled styles in base layer
2025-05-26 21:24:09 +08:00
Ainur 0edfb29851 dbeaver/pro#5523 add reason for enable user log (#3463) 2025-05-26 08:31:34 +00:00
52f567fded dbeaver/pro#5553 Add Sorting functionality to base grid (#3456)
* dbeaver/pro#5553 feat: add column sorting functionality to DataGrid

* dbeaver/pro#5553 feat: enhance column sorting functionality to support multiple selection

* dbeaver/pro#5553 feat: add keyboard navigation to order button

* dbeaver/pro#5553 feat: add constraints handling logic for column sorting in DataGrid

* Revert "dbeaver/pro#5553 feat: add constraints handling logic for column sorting in DataGrid"

This reverts commit 6028a48b13.

* dbeaver/pro#5553 feat: add icon generation script to UIKit, add sample icons

* dbeaver/pro#5553 refactor: use inner react-data-grid API for column sorting

* dbeaver/pro#5553 feat: add IconCross component and update icon-related files

* dbeaver/pro#5553 feat: replace Button with IconButton in OrderButton component

* dbeaver/pro#5553 style: update foreground color variables for IconButton component

* dbeaver/pro#5553 refactor: add normalization rules to layers, use IconButton in Common DialogHeader

checked if new IconButton works well in light and dark mode by using in CommonDialogHeader

* dbeaver/pro#5553 style: format code and update dependencies in CommonDialogHeader and DataGridTable components

* dbeaver/pro#5553 style: move onColumnSort prop to correct position in DataGridTable component

* dbeaver/pro#5553 refactor: remove icons component generation, use svg sprite

* dbeaver/pro#5553 refactor: update OrderButton component and inline icons sprite in Body

we decided to go with this solution for now just adding icons to a sprite and use them by id. Imports by ?url  don't work in VSCode if try to use them in <use> href, so we need to find another solution or stick to that approach.

* dbeaver/pro#5553 refactor: update column sorting and sortable logic in DataGrid components

* dbeaver/pro#5553 style: format whitespace in Body component

* dbeaver/pro#5553 feat: add new sorting icons for ascending, descending, and unsorted states

* dbeaver/pro#5553 refactor:styling for header cell and order button components

* dbeaver/pro#5553 refactor: update sorting logic in DataGrid and OrderButton components

* dbeaver/pro#5553 refactor: value deps

* dbeaver/pro#5553 feat: update sorting icons for ascending, descending, and unsorted states

* dbeaver/pro#5553 style: update aria-label and title for OrderButton component

* dbeaver/pro#5553 fix: double focus

* dbeaver/pro#5553 fix: after merge

* dbeaver/pro#5553 refactor: removed outline offset for sort button

* dbeaver/pro#5553 refactor: update Tailwind CSS import to use layer directive

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
2025-05-24 00:21:37 +08:00
Ainur 116b1a3be8 dbeaver/pro#5160 check length of meta param values (#3471) 2025-05-23 16:01:09 +02:00
AlexeyandDaria Marutkina 84cc6fcf60 dbeaver/pro#5753 feat: react-dnd (#3454)
* dbeaver/pro#5753 feat: react-dnd

* chore: fix after review

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-23 18:52:22 +08:00
1f4266ec95 dbeaver/pro#5745 [CB] Bump NPM dependencies #5745 (#3457)
* dbeaver/pro#5745 updates frontend deps

* updates graphql-request

* updates yarn locks for common-typescript, common-react

* updates engines node version

* react-hotkeys-hook + fixes hotkeys so it continues to work

* code cleanup for parseHotKey

* uses fixed version of tailwindcss

* adds 4.0.6 versions for tailwindcss with resolutions

* reverts tailwind 4.0.6 version for yarn.lock

* removes redundant resolutions for tailwindcss

* Update readme.md with new NodeJS version

* Update README.md with correct nodejs version according to our documentation

* updates talewindcss version 4.0.7

* fix: hotkeys types

---------

Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-05-23 17:31:13 +08:00
Alexey c85b3ccd24 dbeaver/pro#5779 fix: external app plugin naming (#3467) 2025-05-22 17:05:18 +02:00
Ruslan MusaevandEvgenia 7687943ecf dbeaver/pro#5649 Do not send update event if a user teams are same (#3453)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-22 11:14:21 +02:00
alexandEvgenia 587d25bb40 dbeaver/pro#5709 close panel before deleting user (#3458)
* dbeaver/pro#5709 close panel before deleting user

* dbeaver/pro#5709 bump licence year

* dbeaver/pro#5709 remove unnecessary resource hook

* dbeaver/pro#5709 remove unused import

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-22 16:48:42 +08:00
5561d37ce8 dbeaver/pro#4888 Ldap support ssl (#3438)
* dbeaver/pro#4888 Ldap support ssl

* dbeaver/pro#4888 Ldap support ssl

* dbeaver/pro#4888 Ldap support ssl

* dbeaver/pro#4888 Ldap support ssl

* dbeaver/pro#4888 fix connection on TE

* dbeaver/pro#4888 ldaps fix

* fix: check configuration id for auth token

* dbeaver/pro#4888 one authentication per provider and configuration

* dbeaver/pro#4888 one authentication per provider and configuration

* Revert "fix: check configuration id for auth token"

This reverts commit 517cc717a8.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
2025-05-21 12:26:11 +02:00
alexandkseniaguzeeva fffbea22af dbeaver/pro#5458 add toggleDisabled setting (#3455)
* dbeaver/pro#5458 add toggleDisabled setting

* dbeaver/pro#5458 change setting name

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-05-21 17:39:50 +08:00
Ainur 934d45617a dbeaver/pro#4372 add new attribute for a property group (#3461) 2025-05-20 18:13:38 +02:00
Ainur ccb6f2208c dbeaver/pro#5404 add complex auth servlet handler (#3418) 2025-05-20 14:33:40 +00:00
alexandDaria Marutkina d9e4383b22 dbeaver/pro#5382 fallback undefined to false (#3452)
* dbeaver/pro#5382 fallback undefined to false

* dbeaver/pro#5382 bump year

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-20 16:34:18 +08:00
Ruslan MusaevandEvgenia cbd8458776 dbeaver/pro#5638 Multi team mapping (#3441)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-20 10:32:59 +02:00
Ruslan MusaevandEvgenia 3352b66a26 dbeaver/pro#5694 Fix auth providers init (#3442)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-20 10:32:27 +02:00
Ruslan MusaevandEvgenia 9b5ceed501 dbeaver/pro#5693 Fix ldap bruteforce protection (#3446)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-20 10:32:02 +02:00
alexandDaria Marutkina 3687a0807d dbeaver/pro#5678 use new api command (#3440)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-19 15:29:30 +02:00
sergeyteleshevandDaria Marutkina bda9966330 dbeaver/pro#5561 removes tiny style from checkboxes for AuthModelCredentialsForm (#3445)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-19 19:39:19 +08:00
Sychev Andreyandmr-anton-t f0be7b6af6 dbeaver/pro#5554 [CB] [UI kit] create IconButton component (#3424)
* dbeaver/pro#5554 feat: first iteration of IconButton

* dbeaver/pro#5554 refactor: css var changes

* dbeaver/pro#5554 feat: add loading state to IconButton component

* dbeaver/pro#5554 style: update background color for loading state in IconButton

* dbeaver/pro#5554 feat: separate icon button styles and loader variables

* dbeaver/pro#5554 refactor: extract ButtonRoot component to use as a base for Button and IconButton components

That approach lets us use common logic (loading) but don't mixup styles and tokens and have better control

* dbeaver/pro#5554 refactor: update loading state styles for IconButton component

* dbeaver/pro#5554 refactor: ButtonRootProps

* dbeaver/pro#5554 refactor: remove opacity from loading state in Button and IconButton components

* dbeaver/pro#5554 refactor: create content wrapper, move general styles there, add loader wrapper

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-05-19 19:38:30 +08:00
serge-rider 3b0f0ddf1e Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2025-05-19 11:44:14 +02:00
serge-rider 85526b45dd Revert "dbeaver/dbeaver#37928 Downgrade ClickHouse driver to 0.7.2 (#3447)"
This reverts commit 7a48102df4.
2025-05-19 11:42:15 +02:00
Daria Marutkina a6a7aeb97f dbeaver/pro#5684 Update README file (#3451)
* dbeaver/pro#5684 Update README file
2025-05-19 11:14:21 +02:00
serge-rider edf54d3b72 dbeaver/pro#5668 Annotations 2025-05-18 10:07:17 +02:00
ShadelessFox 7a48102df4 dbeaver/dbeaver#37928 Downgrade ClickHouse driver to 0.7.2 (#3447) 2025-05-17 05:14:19 +02:00
Ruslan Musaev a16d03d5a6 dbeaver/pro#5695 Revert "Add Driver for Databend (#3174)" (#3443) 2025-05-15 11:12:01 +02:00
serge-rider 8410df4fa9 dbeaver/pro#5684 25.1.0 version bump 2025-05-13 19:23:55 +02:00
295fcf8701 dbeaver/pro#5087 feat: gql api (#3400)
* dbeaver/pro#5087 Add role settings

* dbeaver/pro#5087 feat: gql api

* dbeaver/pro#5087 feat: gql api

* dbeaver/pro#5087 Add role settings

* feat: user role settings

* chore: add tailwind intellisense

* chore: remove mock data

* dbeaver/pro#5087 Add role settings

* dbeaver/pro#5087 Add role settings

* dbeaver/pro#5087 Add role settings

* fix: update roles enum

* feat: settings restore and set status

* dbeaver/pro#5087 fix roles

* chore: hide single settings tab, allow reset for settings that doesn't support full reset

* chore: remove `isSet` method from settings API

* refactor: extract repeatable logic

* chore: add server setting

* chore: better settings grouping

* dbeaver/pro#5087 fixes

* fix: review

* chore: remove roles related code

* chore: hide spreadsheet hiding setting

* dbeaver/pro#5087 Removed everything related with authRole

* chore: hide some settings from UI

* chore: hide per-setting reset

* fix: selecting empty settings groups

---------

Co-authored-by: Ruslan <pupkinvasya7000@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-14 00:01:08 +08:00
Ruslan MusaevandDaria Marutkina ba4f1c9db7 Dbeaver/pro#5652 add security to endpoints (#3435)
* dbeaver/pro#5652 add security to endpoints

* dbeaver/pro#5652 add security to endpoints

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-13 23:59:39 +08:00
Sychev AndreyandDaria Marutkina bde5c93740 dbeaver/pro#5599 refactor: simplify manualChunks function (#3436)
* dbeaver/pro#5599 refactor: simplify manualChunks function by removing async and circular dependency check

* Revert "dbeaver/pro#5599 refactor: simplify manualChunks function by removing async and circular dependency check"

This reverts commit a8faed50fa.

* dbeaver/pro#5599 fix: configure Vite to prevent CSS code splitting

* dbeaver/pro#5599 refactor: move splitting setting to plugin, add comment

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-13 20:49:39 +08:00
Pat BuxtonandDaria Marutkina 2421e4806a dbeaver/cloudbeaver#3174 Add Driver for Databend (#3175)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-13 12:59:02 +02:00
27a9cf3d58 dbeaver/pro#4958 Add default catalog and default schema (#3420)
* dbeaver/pro#4958 Add default catalog and default schema

* dbeaver/pro#4958 add catalog and schema

* dbeaver/pro#4958 remove field duplication

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-13 12:56:12 +02:00
sergeyteleshev cddbb1c876 dbeaver/pro#5377 adds redownload button for drivers installation (#3432) 2025-05-12 22:21:42 +08:00
sergeyteleshevandEvgenia 2ab9d2f450 dbeaver/pro#5405 adds autosave for scripts (#3427)
* dbeaver/pro#5405 adds autosave for scripts

* fixes russian locale

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-12 22:21:21 +08:00
alex 750d66c4ae dbeaver/pro#4405 return version update styles (#3434)
* dbeaver/pro#4405 return version update styles

* dbeaver/pro#4405 fix styles in docker instruction
2025-05-12 22:21:04 +08:00
Ainur 844c01dc75 Revert "dbeaver/pro#5214 get timestamp with calendar fix (#3423)" (#3431)
* Revert "dbeaver/pro#5214 get timestamp with calendar fix (#3423)"

This reverts commit 7b0c6ebe66.

* Revert "dbeaver/pro#5214 set timestamp with utc calendar fix (#3404)"

This reverts commit 0095cc8d37.
2025-05-08 16:25:14 +02:00
154082e6bd vietnamese-localization (#3395)
* vietnamese-localization

* dbeaver/pro#3395 remove extra files

* dbeaver/pro#3395 remove tokens duplication

* dbeaver/pro#3395 fix formatting

* dbeaver/pro#3395 add locale on the backend

* dbeaver/pro#3395 add hardcoded ordering

---------

Co-authored-by: hanhvd <hanhvd@gmail.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2025-05-08 16:21:35 +02:00
sergeyteleshevandDaria Marutkina 5d90858fa3 prevents default behavior if shortcut executed in it is own scope #3402 (#3417)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-08 14:43:10 +02:00
Sychev AndreyandEvgenia 0ae505fd32 dbeaver/pro#5497 fix: update disabled state logic in BooleanFormatter (#3425)
* dbeaver/pro#5497 fix: update disabled state logic in BooleanFormatter

* dbeaver/pro#5497 style: format disabled state logic

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-08 19:34:39 +08:00
AinurandDaria Marutkina 7b0c6ebe66 dbeaver/pro#5214 get timestamp with calendar fix (#3423)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-08 11:50:02 +02:00
Sychev AndreyandDaria Marutkina 591083435d 5490 cb create spinner UI kit component (#3415)
* #5490 feat: create basic spin component

* #5490 refactor: use new Spin component in button loading state

* #5490 refactor: add tokens to Spin component

add SpecialLoader story to show how to change Spin appearance for special use cases

* #5490 fix: reverts f4d9b6b101

Element should not get focus visible after mouse interactions

* 5490 fix: lost dash

* #5490 refactor: rename Spin to Spinner

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-07 16:23:06 +02:00
d23959a9b5 dbeaver/pro#5460 Add redirect field to provider creation form (#3409)
Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-07 15:33:36 +02:00
Ruslan MusaevandEvgenia 1799768389 dbeaver/pro#5542 change ldap uuid to cn or login (#3410)
* dbeaver/pro#5542 change ldap uuid to cn or login

* dbeaver/pro#5542 fixes

* dbeaver/pro#5542 fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-05-07 15:14:18 +02:00
Alexey 250547f329 dbeaver/cloudbeaver#3402 fix: yarn.lock (#3422) 2025-05-07 16:10:58 +08:00
Georgii 4f52c445fc dbeaver/pro#4075 fix naming (#3416)
* dbeaver/pro#4075 fix naming

* dbeaver/pro#4075 fix rmnio

* dbeaver/pro#4075 fix test launch

* dbeaver/pro#4075 fix test launch
2025-05-06 20:48:40 +02:00
0c70890258 dbeaver/pro#4066 run cli client from launcher, add cli server to CB (#3352)
* dbeaver/pro#4066 run cli client from launcher, add cli server to CB

* dbeaver/pro#4066 special scripts to execute cli commands

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-05-06 20:47:36 +02:00
Sychev AndreyandAlexey bc656de886 #3389 docs: update cb webapp readme (#3399)
* #3389 docs: update cb webapp readme

* #3389 docs: add part about node.js

* #3389 docs: add section about VSCode

* #3389 docs: add OS-specific instructions

---------

Co-authored-by: Alexey <wrouds@gmail.com>
2025-05-06 23:06:37 +08:00
alexandDaria Marutkina fb6e6f6f13 dbeaver/pro#5593 move property value getter to common place (#3414)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-06 22:26:19 +08:00
a0d79ff9b1 dbeaver/pro#5480 Fixed unauthorized access to ldap (#3381)
* dbeaver/pro#5480 Fixed unauthorized access to ldap

* dbeaver/pro#5480 Unauthorized attempt to fetch ldaps groups

* dbeaver/pro#5480 unauthorize attempt to fetch ldaps groups

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mayer <57711367+mayerro@users.noreply.github.com>
2025-05-06 14:25:06 +02:00
f5dfd8726a dbeaver/pro#5312 chore: update typescript sdk (#3407)
* dbeaver/pro#5312 chore: update typescript sdk

* dbeaver/pro#5312 chore: update eslint config

* dbeaver/pro#5312 chore: delete unused file

* dbeaver/pro#5572 remove deprecated annotations (#3405)

* Markup fix (#3408)

* dbeaver/pro#5588 25.0.5 version bump

* #5509 fix: checkbox doesn't get focused on click (#3406)

* dbeaver/pro#5588 Update README file (#3412)

---------

Co-authored-by: Alexander Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: serge-rider <serge@dbeaver.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-06 18:09:45 +08:00
AinurandDaria Marutkina 0095cc8d37 dbeaver/pro#5214 set timestamp with utc calendar fix (#3404)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-05-06 10:04:00 +02:00
Daria Marutkina 16fcc21346 dbeaver/pro#5588 Update README file (#3412) 2025-05-05 11:27:23 +02:00
Sychev Andrey f5e4f14159 #5509 fix: checkbox doesn't get focused on click (#3406) 2025-05-05 15:24:34 +08:00
serge-rider 0c1d47ef10 dbeaver/pro#5588 25.0.5 version bump 2025-05-05 07:33:25 +02:00
Serge Rider 2d82e85491 Markup fix (#3408) 2025-04-30 12:27:09 +02:00
Alexander Skoblikov 87e9c79e43 dbeaver/pro#5572 remove deprecated annotations (#3405) 2025-04-30 08:31:20 +00:00
Serge Rider c3042d5aa4 dbeaver/pro#5588 25.0.5 version bump 2025-04-29 19:43:34 +02:00
Ruslan Musaev d06575af9c dbeaver/pro#5249 Migrate authUpdateStatus to websocket (#3369) 2025-04-29 16:36:55 +00:00
Ainur 90eb0520a7 CB-3798 poc api for visibility of properties (#3311) 2025-04-29 14:54:03 +00:00
ShadelessFox dd2869f4bd dbeaver/dbeaver#37727 Update Clickhouse driver to 0.8.5 (#3401) 2025-04-29 14:41:10 +02:00
07e0c63b6a #5362 refactor: move blob formatter to shared codebase (#3374)
* #5362 refactor: move blob formatter to shared codebase

* #5362 refactor: remove value prop from BlobFormatter

* #5362 refactor: move some of result set value checkers to common

* #5362 feat: update some result set api methods

make value type for safe using unknown instead of any,
added string fallback representation for complex values

* fix: getStringFallbackForComplexValue

* #5362 fix: getStringFallbackForComplexValue always cast to string

* #5362 fix: format

* #5362 chore: update deps

* #5362 fix: double imports

* #5362 fix: yarn lock

* chore: update yarn

* fix: reset yarn lock to devel state

* #5362 ci: change chunking

Previous implementation couldn't handle cyclic dependencies correctly. We noticed it in that ticket because we started to move some logic to common packages and changed existing packages connections. I tried many options to organize chunks from very simple(just putting everything to one bundle) to very complex(by adding helper to find circular deps between modules and putting them to one chunk) but none of them looked ideal. Complex solution is prone to errors, especially with vendor packages. I find this solution at least bearable until Vite ships Rolldown, then we can rethink it one more time.

* #5362 fix: arrow-body-style

* fix: improve chunk splitting

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-29 16:39:06 +08:00
alexandmr-anton-t 4253c640cf dbeaver/pro#5550 fallback to checked state first (#3398)
* dbeaver/pro#5550 fallback to checked state first

* dbeaver/pro#5550 check for boolean type

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-28 14:49:30 +08:00
alexandEvgenia 298ce286f1 dbeaver/pro#5406 use more specific resource (#3397)
* dbeaver/pro#5406 use more specific resource

* dbeaver/pro#5406 use new resource to get flag

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-25 21:21:51 +08:00
34c377a17e dbeaver/pro#5438 case-insensitive ws headers (#3393)
* dbeaver/pro#5438 case-insensitive ws headers

* dbeaver/pro#5438 update ping timeout

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-04-25 11:59:13 +02:00
9551beca7a CB-5465 fixes checkbox defaultChecked wrong behavior (#3384)
* CB-5465 fixes checkbox defaultChecked wrong behavior

* fix: after review

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-24 12:56:56 +02:00
dfbb2846a5 Dbeaver/pro#5168 avoid leakage of lincense (#3343)
* dbeaver/pro#5168 avoid leakage of license

* dbeaver/pro#5168 avoid leakage of license

* dbeaver/pro#5168 avoid leakage of license

* dbeaver/pro#5168 avoid leakage of license

* CB-5168 fix schema

* [#113] Add clsx dependency to UI kit (#3335)

* chore: add clsx dependency to ui-kit

* chore: import clsx from ui-kit

* refactor: use clsx for class management in Button

* refactor: use clsx in Checkbox

* refactor: use clsx in Input component

* feat: use clsx in radio and radiogroup

* feat: use clsx in Select component

* feat: reexport VisuallyHidden and Focus trap components from ariakit

* CB-5839 fix: resource blocking (#3199)

* CB-5839 fix: resource blocking

* CB-5839 fix: unlock nav resources

* fix: connections loading

* feat: select new folder or connection

* chore: localization

* chore: revert improvements

* fix: load connections list for connection selector

* fix: error

* fix: wrong action handler

* CB-5839 fix: resources tree validation

* fix: reaction concurrency

* CB-5839 fixes build for new CellFormatter (ObjectMenuCell) after merge conflicts

* СB-5839 changes delay for menu item loaders

* CB-5839 fix: keys intersection detection in resources

* CB-5839 fix: keys intersection detection in resources

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>

* CB-6308 fix: grid auto-size (#3298)

* CB-6308 fix: grid auto-size

* CB-6308 fix: grid auto size

* CB-6308 fix: icons sizing in grid

* CB-6308 fix: grid header

* CB-6308 fix: types

* fix: min-width for columns

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>

* CB 6296 Delete row shortcut not working (#3340)

* CB-6296 fix: delete keystroke marks selected row for deletion

* CB-6296 fix: focus first element on load, remove extra handler

It was noticed that just after the open, onKeyDown event doesn't reach DataGrid, because focus was not in sync with lib.
Also fixes CB-6229 since they have the same root problem with encountered bag

* CB-6286 refactor: change onCellKeyDown handler interface inside DataGridProps

* CB-6296 refactor: set initial focus differently

* CB-6296 refactor: remove manual scroll control

We use grid inner scrollToCell method and don't need additional native scrolling

* refactor: don't expose inner data-grid type

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>

* CB-5168 fix

* CB-5168 fix schema

* dbeaver#pro5168 hide product config for anonym

* dbeaver/pro#5168 avoid leakage of lincense

* dbeaver/pro#5168 avoid leakage of lincense

* dbeaver/pro#5168 avoid leakage of lincense

---------

Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
2025-04-24 12:55:53 +02:00
873861c759 CB-5774 add connection brute force protection (#3337)
* CB-5774 add connection brute force protection

* CB-5774 api for additional info of disabled user

* CB-5774 fix deserialization

* CB-5574 adds disabled user info in editing user form

* CB-5774 save all connect errors to db

* CB-5774 resolve conflicts

* CB-5774 resolve conflicts

* CB-5574 fixes userId

* CB-5774 fix fetch user and test

* CB-5774 resolve conflicts

* CB-5774 handle brute force on desktop

* CB-5774 fix send event for killing user sessions

* CB-5774 build fix

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Wroud <wrouds@gmail.com>
2025-04-23 14:08:23 +02:00
d4e8329528 CB-5790 remove template plugin (#3339)
* CB-5790 remove template plugin

* dbeaver/pro#5038 Remove connection template

* CB-5790 update yarn lock

* CB-5790 fix

* CB-5790 remove templates

* CB-5790 remove template field from fragment

* CB-5790 return access tab

---------

Co-authored-by: Ruslan <pupkinvasya7000@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-23 12:34:53 +02:00
Alexey 08346ebc12 dbeaver/pro#5494 feat: refactor tests (#3388)
* dbeaver/pro#5494 feat: refactor tests

* chore: update yarn.lock

* chore: strict build script

* fix: review
2025-04-23 18:18:13 +08:00
d093301983 dbeaver/pro#4245 avoid workspace not initialized warning spam (#3353)
* dbeaver/pro#4245 avoid workspace not initialized warning spam

* dbeaver/pro#4245 use workpsace path from app

* dbeaver/pro#4245 avoid workspace not initialized warning spam

* dbeaver/pro#4245 use workpsace path from app

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-04-22 17:56:50 +02:00
Daria Marutkina 8dcc92f7b6 dbeaver/pro#5485 Update README file (#3391) 2025-04-22 09:26:22 +03:00
Serge Rider d29550667b dbeaver/pro#5503 OSGI manifests fix 2025-04-17 17:58:57 +02:00
mayerro 3c2e4fb646 removed wget from java-base-image 2025-04-17 11:27:42 +02:00
alex f286926526 dbeaver/pro#4412 remove license files from locales (#3385) 2025-04-17 16:52:42 +08:00
Alexey 9dc0863e3a dbeaver/pro#5417 feat: table statistics (#3383) 2025-04-16 22:50:16 +08:00
63f31d0a08 Cb 6160 ldap user provisioning (#3354)
* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap provisioning

* CB-6160-ldap-user-provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning

* CB-6160 ldap user provisioning. Added copyrights

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-16 12:18:15 +02:00
Serge Rider 8bce3f2357 dbeaver/pro#5485 25.0.4 version bump 2025-04-15 19:02:17 +02:00
f06b769cfc Dbeaver/pro#5141 improve logging (#3367)
* dbeaver/pro#5141 Improve logging

* dbeaver/pro#5141 Improve logging

* dbeaver/pro#5141 improve logging

* dbeaver/pro#5141 improve logging

* dbeaver/pro#5141 improve logging

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-15 18:10:53 +02:00
Anastasiya 2aca70043e dbeaver/pro#4266 fix templates (#3380)
* dbeaver/pro#4266 Update tickets templates, add config file

* dbeaver/pro#4266 remove Feature commit
2025-04-15 15:01:00 +02:00
Alexander Skoblikov bcbaae3fb4 dbeaver/pro#4353 shutdown executor service (#3332) 2025-04-15 12:16:45 +00:00
AinurandDaria Marutkina bc4d83cbbb dbeaver/pro#5473 show only error message for driver properties (#3378)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-15 13:50:28 +02:00
alexandDaria Marutkina dd1947beaa dbeaver/pro#5255 scroll into view only if there is a cursor and (#3376)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-15 18:39:18 +08:00
sergeyteleshevandmr-anton-t 4aa6ccf495 CB-5472 adds to chunks files from lib directory (#3377)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-15 16:43:42 +08:00
4dd8ddbefd CB-4067 Migrate Connection form to form template (#3288)
* CB-4067 adds connection form state, service and options part

* CB-4067 adds connection origin info tab to new form

* CB-4067 adds SSH part

* CB-4067 adds driver properties part

* CB-4067 changes driverId and submitType location for connection form

* CB-4067 adds SSL part

* CB-4067 adds connection form access part

* CB-4067 uses new form parts for connection form

* CB-4067 resets form on open

* CB-4067 fixes configure case for connection form

* CB-4067 adds selected driver on edit mode form

* CB-4067 reloads form when it is needed

* CB-4067 adds button actions for the form

* CB-4067 adds notifications on form save/error

* CB-4067 fixes form ssl saving and driver properties

* CB-4067 refactors some parts

* CB-4067 refactors form options part so it works fine

* CB-4067 fixes driver properties part

* CB-4067 fixes SSH part

* CB-4067 fixes SSL part

* CB-4067 fixes Access part

* CB-4067 refactors origin tab

* CB-4067 refactors shared credentials part

* CB-4067 fixes: secret providers, SSH, SSL, test - features

* CB-4067 removes refactor postfix for new state, service and types

* CB-4067 fixes connection test

* CB-4067 cleanup

* CB-4067 gets back ask credentials window and removes connectionCredentialsStateContext

* CB-4067 adds translation to test connection success message

* CB-4067 fixes ssh and ssl adding to networkHandlers. also fixes extra request for driver properties

* CB-4067 fixes host and port for switching connections

* CB-4067 removes redundant code

* CB-4067 fixes exception error on retest connection + fixes SSH field key saved incorrect prop

* CB-4067 cleanup testContext info

* CB-4076 fixes SSH and SSL ask credentials and parameters saving for both: test and submit connection create/edit action

* CB-4067 fixes access tab reminder

* CB-4067 fixes handling of info message for cloud connection origin tabs

* CB-4067 fixes checkboxes behavior for TE shared credentials feature

* CB-4067 fixes create connection template popup SSH form

* CB-4067 fixes notification for closing ask credentials popup if before we had an error of test submit

* CB-6115 adds dispose API for forms

* CB-6115 adds git workspace helper extension for repo recommendations

* CB-4067 cleanup

* CB-6115 pr fixes

* CB-4067 gets back behavior with dispose connection form state

* CB-4067 cleanup

* СB-4067 splits states to ui and form part in access form part

* СB-4067 pr fixes

* CB-4067 removes config from form state

* CB-4067 removes console warnings + clean up

* CB-4067 moves synchronization mechanisms from ConnectionFormState to ConnectionOptionsFormPart

* CB-4067 fixes bug with incorrect host or port during search or changing driverId during connection creation

* CB-4067 fixes opening connection forms from different entry points so it shows consistent initial data

* СB-4067 brings back saving the form

* CB-4067 fixes logic of showing popup askCredentials

* CB-4067 fixes origin tab name so it shows correctly + fixes unneeded loaders of resources

* CB-4067 reverts isOutdated

* CB-4067 fixes loading of driver properties

* CB-4067 cleanup for connection access part

* Revert "CB-4067 reverts isOutdated"

This reverts commit ecb195ee2a.

* CB-4067 adds isOutdated to the parts

* CB-4067 fixes origin tab info message

* CB-4067 fixes driver properties state + origin info status message shows on load

* CB-4067 fixes password autofill during form save

* CB-4067 fixes linter

* CB-4067 fixes linter

* CB-4067 cleanup + fixes bug with search database host,name fields

* CB-4067 linter fix

* CB-4067 pr fixes

* CB-4067 removes unused post handler for formstate loaded task

* CB-4067 small pr fixes

* CB-4067 adds setDriver + handles name autocomplete

* chore: review

* CB-4067 connection part correct loading

* CB-4067 adds formState.state.connectionId default value

* refactor: pr review

* CB-4067 fixes bug with infinite loading of the origin info details

* CB-4067 fix: allows askCredentials to edit fields + does not affects part state

* CB-4067 resets driver properties if changed driverId

* CB-4067 updates yarn lock for common-react

* CB-4067 lint fix

* CB-6265 fix: do not include index files for import/export eslint rules

* CB-4067 fixes behavior for aksCredentials so it acts correctly during testing/saving/editing inputs for the form

* CB-4067 cleanup

* CB-4067 fixes connection templates initial loaded state

* CB-4067 pr fixes: dialog credentials; adds todo to the ssh tab; eslint revert; cleanup

* CB-4067 makes askCredentials to be part state independent

* CB-4067 qa fixes: test translation + removes db name form connection name

* CB-4067 adds readonly state for connection form

* CB-4067 fixes application freezes on disconnect

* CB-4067 fixes empty properties when switching cloud connections

* CB-4067 connection is created -> connection was created

* CB-4067 connection is updated -> connection was updated

* CB-4067 fixes outdated logic for parts

* CB-4067 build fix

* CB-4067 fix: do not show askCredential popup for drivers with only anonymous access

* CB-4067 removes includeCredentialsSaved

* CB-4067 removes includeAuthProperties

* CB-4067 removes customIncludeOptions

* CB-4067 removes includeProperties

* CB-4067 removes includeProviderProperties

* CB-4067 removes includeNetworkHandlers

* CB-4067 refactors isOutdated for originInfoPart and AccessPart

* CB-4067 removes savedCredentials resource + updates CustomOptionsResource + reuses new include resources in connection form components

* CB-4067 reverts spreading of new connectionInfoResources

* CB-4067 fixes sharedCreds checkbox default value on form switch

* CB-4067 closes connection form when layout closes

* CB-4067 disposes connection form on change

* CB-4067 handles closing of the connection form correctly

* Revert "CB-4067 handles closing of the connection form correctly"

This reverts commit 3a6f1a6a0a.

* CB-4067 handles closing of the connection form correctly [2]

* CB-4067 fits info messages in one line

* CB-4067 presaves isChanged state for form part before applying initialState to prevent bugs

* CB-4067 fixes length of the error message for connection form top bar

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-15 00:35:27 +08:00
08e6d9631f dbeaver/pro#5440 feat: display boolean as checkbox in grid (#3372)
* dbeaver/pro#5440 feat: display boolean as checkbox in grid

* #5440 refactor: make checkboxes disabled inside grid

It's a very strange UX when checkbox is inside a cell of a table and behaves like a real one. It's much more expected when only cell takes focus and checkbox only represents the value in a way we want without acting like a real input. Moreover, using Focusable component enables smooth toggling between all 3 states of a boolean cell from a keyboard.

* #5440 fix: remove inline padding

* #5440 feat: add hover effect for boolean formatter

* #5440 refactor: revert full width

* #5440 refactor: split onClick and onKeyDown interfaces

* #5440 fix: return onClick

---------

Co-authored-by: Andrey Sychev <nukemoore@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-14 22:42:44 +08:00
sergeyteleshev 143cbb0d88 Cb 6265 Return front unit tests after migration (#3338)
* СB-6265 sets up vitest instead of jest

* CB-6265 gets back core-utils tests

* СB-6265 gets back react-testing-library tests

* СB-6265 gets back some tests from another plugins

* CB-6265 renames dist -> lib in each plugin + removes all jest from the repo

* CB-6265 disables watch mode so build can go on

* CB-6265 extends tests types for react-testing-library

* CB-6265 reverts dist->lib rename cause it contains other assets also

* CB-6265 moves setupFiles to the vitest.config.ts

* CB-6265 pr fixes

* CB-6265 fixes tests run for Windows

* CB-6265 removes global: true in config + uses jest-dom/vitest lib to have extended expect types

* CB-6565 removes unused deps

* СB-6265 improves performance of the test x10 times

* CB-6265 gets back renderInApp, fixes vitest setup reset config for mocks, cleans up

* CB-6265 reset -> restore all mocks

* CB-6265 fixes unit tests

* CB-6265 vitest.setup.ts cleanup

* CB-6265 timestamp to date shows military time both: on unix and windows (win tests fix)

* CB-6265 improves tests running (sequential run instead of parallel)

* CB-6265 cleanup

* CB-6265 eslint fix

* CB-6265 eslint fix 2

* CB-6265 reverts useCombined handler

* CB-6265 reverts some tests

* CB-6265 removes all redundant timer configs

* Merge branch 'devel' into CB-6265-return-front-unit-tests-after-migration

* CB-6265 pr fixes

* CB-6265 fixes time for windows

* CB-6265 removes default fake timers before each test
2025-04-14 18:48:33 +08:00
alexandEvgenia efec971177 dbeaver/pro#5234 mark children nodes as deleted (#3370)
* dbeaver/pro#5234 mark children nodes as deleted

* dbeaver/pro#5234 make getParent optional

* dbeaver/pro#5234 pass default value before make observable

* dbeaver/pro#5234 move default value outside of component

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-14 18:41:13 +08:00
Ainur edc671f428 dbeaver/pro#5375 normalize table names in one place (#3349) 2025-04-14 09:52:38 +00:00
7f91dbc207 CB-5303 [CB] Driver form has the wrong state after download jar from repo (#3371)
* CB-5303 covers edge case with initial state changed by other tab during outdate part process

* СB-5303 loaded = true on any load result

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-11 22:10:37 +08:00
Alexander Skoblikov 1cc6f6f308 dbeaver/pro#4319 global provider config type (#3330) 2025-04-10 09:19:59 +00:00
Ruslan Musaev 02a8226196 Cb 5875 creating schemas only for pro (#3324) 2025-04-10 09:06:09 +00:00
Sychev AndreyandDaria Marutkina 42da37830f #5140 (CB-6127) the cell values are duplicated when adding multiple rows to the read only table (#3368)
* #5140 fix: duplicate hotkeys should work in tables without primary key

* #5140 fix: force update table data on save if model doesn't have element identifier

* #5140 refactor: move refresh model logic to datasource saveData method

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-10 17:00:55 +08:00
Ainur 3714d7d3a5 dbeaver/pro#5164 remove disabled drivers from core config (#3363) 2025-04-10 08:30:37 +00:00
alexandEvgenia b51ac6bd38 dbeaver/pro#5237 do not dispatch transaction if cursor and main in sync (#3361)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-09 15:23:40 +08:00
Sychev AndreyandDaria Marutkina e819af4f90 #5258 fix: See permission error after finish easy config (#3350)
* #5258 fix: don't skip auth dialog for anonymous

* #5258 refactor: use isAuthenticated

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-09 15:20:29 +08:00
Ruslan MusaevandDaria Marutkina 584b27eea2 dbeaver/pro#5272 Do not return private project if they are disabled (#3347)
* dbeaver/pro#5272 Do not return private project if they are disabled

* dbeaver/pro#5272 Do not return private project if they are disabled

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-09 15:20:13 +08:00
Alexeyandmr-anton-t 9c3cc17bd9 dbeaver/pro#5394 feat: null and boolean formatter for base grid (#3359)
* dbeaver/pro#5394 feat: null and boolean formatter for base grid

* feat: reuse base grid formatters

* chore: try to adjust workflow concurrency

* chore: trigger workflow

* chore: trigger workflow cancel

* chore: fix label styles

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-09 15:06:32 +08:00
alexandDaria Marutkina e1a05496cb dbeaver/pro#5192 adjust loading state process (#3360)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-04-08 15:51:03 +08:00
Sychev Andrey 947dcb367e #3355 cloudbeaver typescript path resolution problem (#3365)
* #3355 fix: add yarn sdks to git

* #3355 fix: offer to use workspace version of typescript
2025-04-07 21:28:37 +08:00
Daria MarutkinaandAnastasiya b4557ae3a2 dbeaver/pro#5379 Update README file (#3364)
* dbeaver/pro#5379 Update README file

* Update README.md

---------

Co-authored-by: Anastasiya <45152336+LonwoLonwo@users.noreply.github.com>
2025-04-07 14:19:40 +02:00
alexandEvgenia 63acb114df dbeaver/pro#5155 omit " when compare display strings (#3351)
* dbeaver/pro#5155 omit " when compare display strings

* dbeaver/pro#5155 add semicolon

* dbeaver/pro#5155 fix eslint

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-04-04 15:05:54 +02:00
Sychev Andrey a3d8e92b5c fix: wrap input styles in base layer (#3358) 2025-04-03 18:00:51 +08:00
Serge Rider 8681d5f5f5 dbeaver/pro#5379 25.0.3 version bump 2025-04-01 19:57:24 +02:00
Sychev Andrey 3a4a4c53ae #5265 fix: no icons for users and connections on permission tables ( (#3345)
* #5265 fix: no icons for users and connections on permission tables (CB-6373)

* #5265 refactor: remove redundant width prop
2025-04-01 23:10:47 +08:00
600833c068 CB-6372 No 'Set to null' option in cell's context menu (#3331)
* CB-6372 fix: set null for applicable cells in context menu

* CB-6372 fix read-only for cells

CB-6367: don't let activate cell inline editor by double click if model is read-only

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-04-01 22:05:54 +08:00
164b59b37a CB 6296 Delete row shortcut not working (#3340)
* CB-6296 fix: delete keystroke marks selected row for deletion

* CB-6296 fix: focus first element on load, remove extra handler

It was noticed that just after the open, onKeyDown event doesn't reach DataGrid, because focus was not in sync with lib.
Also fixes CB-6229 since they have the same root problem with encountered bag

* CB-6286 refactor: change onCellKeyDown handler interface inside DataGridProps

* CB-6296 refactor: set initial focus differently

* CB-6296 refactor: remove manual scroll control

We use grid inner scrollToCell method and don't need additional native scrolling

* refactor: don't expose inner data-grid type

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
2025-03-28 23:01:58 +08:00
b8952c87b8 CB-6308 fix: grid auto-size (#3298)
* CB-6308 fix: grid auto-size

* CB-6308 fix: grid auto size

* CB-6308 fix: icons sizing in grid

* CB-6308 fix: grid header

* CB-6308 fix: types

* fix: min-width for columns

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-03-28 22:52:46 +08:00
e961d7cda7 CB-5839 fix: resource blocking (#3199)
* CB-5839 fix: resource blocking

* CB-5839 fix: unlock nav resources

* fix: connections loading

* feat: select new folder or connection

* chore: localization

* chore: revert improvements

* fix: load connections list for connection selector

* fix: error

* fix: wrong action handler

* CB-5839 fix: resources tree validation

* fix: reaction concurrency

* CB-5839 fixes build for new CellFormatter (ObjectMenuCell) after merge conflicts

* СB-5839 changes delay for menu item loaders

* CB-5839 fix: keys intersection detection in resources

* CB-5839 fix: keys intersection detection in resources

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-03-27 20:03:37 +08:00
Sychev Andrey 348d6b3161 [#113] Add clsx dependency to UI kit (#3335)
* chore: add clsx dependency to ui-kit

* chore: import clsx from ui-kit

* refactor: use clsx for class management in Button

* refactor: use clsx in Checkbox

* refactor: use clsx in Input component

* feat: use clsx in radio and radiogroup

* feat: use clsx in Select component

* feat: reexport VisuallyHidden and Focus trap components from ariakit
2025-03-27 20:02:00 +08:00
Alexander SkoblikovandMashaKorax 9ab000d604 dbeaver/pro#4118 separate limits for service auth (#3322)
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-03-26 16:06:18 +01:00
Alexander SkoblikovandMashaKorax a4532dd430 dbeaver/pro#3896 migrate auth process to websockets (#3315)
* dbeaver/pro#3896 new auth flow

* dbeaver/pro#3896 wip

* dbeaver/pro#3896 websocket authentication

* dbeaver/pro#3896 send error info

---------

Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-03-25 17:52:07 +01:00
Serge Rider 1d21c677ab 3122 dynamic classpath (#3323)
* dbeaver/pro#3122 Driver loader model

* dbeaver/pro#3122 Driver loader model
2025-03-25 17:24:58 +01:00
Daria Marutkina d330b60f35 dbeaver/pro#4354 Update README file (#3336) 2025-03-24 11:46:40 +01:00
Sychev Andrey 584e5bb260 103 create radio and radio group components (#3313)
* refactor: rename css variable in order to be more descriptive and stick to the naming convention

* refactor: unify controls, add new global control css variables

* feat: add radio component

* docs: add radio stories

* docs: add input docs story

* docs: add simple form story

* refactor: change default radio dot size

* refactor: change class name for radio children wrapper

* refactor: don't reexport inner radio elements

* refactor: simplify RadioGroup interface by removing items props, make label(any) required

The radiogroup must have an accessible name either by a visible label referenced by aria-labelledby or has a label specified with aria-label.
https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/radiogroup_role

* refactor: use label wrapper for input component to simplify structure

* refactor: add classname for radio group container
2025-03-21 18:52:39 +08:00
sergeyteleshev 71f77186c4 CB-6369 fixes onFinish during easy config for Server Configuration Form (#3328) 2025-03-19 21:32:41 +08:00
Alexander Skoblikov fe6174755b fix ldap version (#3326) 2025-03-18 20:08:25 +00:00
serge-rider d9ba55df54 dbeaver/pro#4354 25.0.2 version bump 2025-03-18 19:32:21 +01:00
serge-rider 70381f38f9 dbeaver/pro#4354 25.0.2 version bump 2025-03-18 19:29:35 +01:00
d9a5ea053b CB-6115 Add dispose to FormState instances (#3317)
* CB-6115 adds dispose API for forms

* CB-6115 adds git workspace helper extension for repo recommendations

* CB-6115 pr fixes

* CB-6115 adds dispose methods to tables

* CB-6115 eslint fix

* CB-6115 fixes dispose leaks for freshly created states

* CB-6115 fixes infinite loading of state

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-03-18 18:27:23 +01:00
Ainur 06e2aa9f0e CB-6346 add api for read only data sources (#3321) 2025-03-18 17:26:53 +00:00
alexandDaria Marutkina 219ab7c22d CB-6363 return cross button width (#3325)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-03-18 21:39:57 +08:00
Sychev Andrey cdb65a8caa fix: rename default localization property from core.localization.localization to core.localization.language (#3319)
It seems like it was a misspelling initially, because we have never read such key in source code.
2025-03-18 17:07:10 +08:00
Sychev Andrey bd6b4112b0 fix: serve assets relatively with Vite (#3318) 2025-03-18 09:43:23 +01:00
34f4063114 CB-6271 add timeout of inaction in configuration mode (#3289)
* CB-6271 add timeout of inaction in configuration mode

* CB-6271 add timeout of inaction in configuration mode

* CB-6271 add timeout of inaction in configuration mode

* CB-6271 add timeout of inaction in configuration mode

* CB-6271 fix insecure default configuration set timeout to 2 mins

* CB-6271 fix insecure default configuration set timeout to one min

* CB-6271 handle configuration error properly

* CB-6271 catch unhandled error on validation step

* CB-6271 add return type

* CB-6271 fix insecure default configuration set timeout to one min

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
2025-03-18 06:21:27 +01:00
AinurandDaria Marutkina 6c44f8c432 CB-5440 extract abstract class for internal db models (#3303)
* CB-5440 extract abstract class for internal db models

* CB-5440 code style fix

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-03-17 12:21:05 +01:00
alexandmr-anton-t 34ff5a34cb Cb 6263 lefthook (#3291)
* CB-6263 migrate to lefthook

* CB-6263 remove old pre-commit

* CB-6263 specify how to execute lefthook

* CB-6263 add config file

* CB-6263 get license from configuration file

* CB-6263 remove old script

* CB-6263 remove old license

* CB-6263 add locales check

* CB-6283 fix vscode commit msg

* CB-6263 filter staged files on lib level

* CB-6263 do not run hooks sync in CI

* CB-6263 change script

* CB-6263 revert postinstall

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-03-17 16:07:16 +08:00
Ainur cb350cc56e CB-6294 read initial data config file before connecting db (#3300) 2025-03-13 10:27:48 +00:00
alexandDaria Marutkina 6dc0b6d8a4 CB-6042 extend sync dep (#3309)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-03-12 20:37:19 +01:00
655613ccf1 CB-6089 write file stream directly to http response (#3301)
* CB-6089 write file stream directly to http response

* CB-6089 write file stream directly to http response

* CB-6089 write file stream directly to http response

* CB-6089 write file stream directly to http response

* CB-6089 write file stream directly to http response

* CB-6089 remove deprecated method

* CB-6089 change ParquetExporter buffer size

* CB-6089 remove extra async

* CB-6089 add info text

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-03-11 17:45:24 +01:00
Ruslan Musaev e87e3397e2 CB-6033 fix message type for cb session log updated ws event (#3310) 2025-03-11 17:29:05 +01:00
Alexander Skoblikovandkseniaguzeeva 3c1766cd14 dbeaver/pro#4204 move file lock logic to dbeaver (#3287)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-03-11 12:46:07 +01:00
alexandmr-anton-t 039407b9db CB-6207 add order to setting group (#3306)
* CB-6207 add order to setting group

* CB-6207 use method instead of const value

* CB-6207 remove const

* CB-6207 sort on tree level

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-03-10 16:44:51 +01:00
serge-rider e02300e34d Logging fix 2025-03-10 14:17:23 +01:00
alexandmr-anton-t 295ce2d46a CB-6286 add className prop (#3297)
* CB-6286 add className prop

* CB-6286 fix virtualisation

* CB-6286 remove extra prop

* CB-6286 fix prop order

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-03-07 23:39:44 +08:00
Sychev Andrey 36102cdee5 88 create select component (#3302)
* feat: add simple select

* feat: add items states vars and popover animation

* feat: add SelectField component

* feat: select field uses getters to get value/label/selected value, update stories to demonstrate

* docs: update select stories

* refactor: remove margin top because we use gutter in SelectField and for reexported aria popover we don't want to setup such default

* fix: select field - set not the very first value by default, but the first not disabled value

* refactor: add popover height variable, remove padding to look more like select in cloudbeaver by default

* feat: add styles for Select Field description

* refactor: rename properties

* refactor: remove redundant docs for props, remove placeholder props because it's not how aria select is supposed to work, you need to use extra select item to create a placeholder

* refactor: remove support for property path, keep only support for property name or custom getter in sake of simplicity and ease of maintenance

* fix: story for key getters

* fix: return type

* fix: don't set disabled value if all items are disabled

* fix: controlled mode, respect value prop over selectedValue

* refactor: remove width property

* refactor: typesafe key getter

The type iterates through every property key in ItemType.
For each property key, it evaluates whether the property's type is assignable to ValueType and creates a union type of all keys that passed the type check

* refactor: fixes after merge and item hover variable

* fix: input

* feat: add custom arrow icon prop

* refactor: remove ability to use object keys as getters, rename options to items in all places

* fix: rename token
2025-03-06 23:32:41 +08:00
c532298eba 87 create checkbox component (#3294)
* refactor: remove --dbv-kit-color-text variable in favor of --dbv-kit-color-foreground, add --dbv-kit-control-disabled-opacity to use for all controls, remove --dbv-kit-btn-disabled-opacity, update docs

* refactor: add ControlSize type

* feat: create checkbox component

* docs: add checkbox stories, update button docs

* refactor: polish checkbox component, added some vars, add docs, change some defaults

* feat: add indeterminate state

* fix: prioritize check prop over inner state

* fix: button styles layer

* fix: comments

* fix: change checkbox checked style

* Revert "fix: change checkbox checked style"

This reverts commit eba1e21eb9.

---------

Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-03-05 15:25:55 +08:00
Daria Marutkina 254da45290 dbeaver/pro#4230 Update README file (#3299) 2025-03-03 14:17:38 +01:00
serge-rider 2c3b44cbdf Merge remote-tracking branch 'origin/devel' into devel 2025-02-27 11:25:27 +01:00
serge-rider 05b0cddab9 dbeaver/pro#4230 25.0.1 version bump 2025-02-27 11:23:59 +01:00
Alexander Skoblikov a118e1c33d CB-6305 throw error if no session for websocket (#3292) 2025-02-26 17:41:42 +00:00
Alexey cc2a8dab63 CB-6301 fix: grid styles (#3290) 2025-02-26 19:00:57 +08:00
Alexey 080317d710 dbeaver/dbeaver-vscode#83 refactor: data grid (#3265)
* dbeaver/dbeaver-vscode#83 refactor: data grid

* chore: try to fix build scripts

* chore: commit artifacts

* chore: update yarn.lock

* fix: adjust grid auto-sizing

* chore: fix prettier

* chore: add documentation about typescript crashes

* fix: cell menu

* fix: grid inline editor styles

* fix: cell menu styles

* fix: cell items alignment

* fix: data sync

* feat: support reactive values in grid

* chore: try to fix strange build bug

* chore: restore original file name

* fix: add specific to inline editor styles

* fix: remove delete row shortcut (not working)

* chore: enable common cache
2025-02-26 01:04:03 +08:00
Sychev Andreyandmr-anton-t a4102b28dd Feat/dbeaver/vscode#86/storybook integration (#3251)
* feat: add ui-kit package to common-react

* feat: add tailwind and ladle to ui-kit, use ui-kit in ce

* feat: create custom properties for button and checkbox using tailwind values as default

* feat: create simple button with 2 variants

* feat: create simple checkbox

* refactor: update after rebase

* feat: experiments with button and checkbox

* feat: add buttons sizes, adjust btn loader, add interactive story instead of many stories

* fix: add license

* fix: a11y issues with color contrast

* fix: mdx stories support

* feat: experiments with icons

* feat: try custom rendering

* docs: add small kinda docs for button

* refactor:  css layers

* chore: deps

* chore: remove buildinfo from git

* chore: remove tsbuildinfo from git

* fix: vertical tab overflow

* feat: use UIKit button as base for Cloudbeaver button

* fix: box-sizing problems

* refactor: button styles use BEM model

* refactor: separate base tokens from aliases

* refactor: add some defaults, write all properties in snake case

* refactor: rename button classes, add ui-kit prefix

* refactor: remove redundant story, omit a couple of props, add example to ladle

* refactor: add general sizes tokens, update license

* feat: add scaffold for input component

* refactor: update deps

* refactor: remove links

* refactor: change props naming, add prefixes in checkbox, removes validation nodes in input

* refactor: partially revert "feat: use UIKit button as base for Cloudbeaver button" to keep the old Button interface without changes

Original commit SHA: 62bb1fe9a0.

* Revert "refactor: update deps"

This reverts commit f7d6533967.

* refactor: update deps once again

* refactor: rename ui-kit prefix

* chore: update deps

* refactor: Button Icon Interface

* refactor: use JSDoc for placement comment

* refactor css custom props for Button

* refactor: introduce opacity custom property, fix icon margin property

* fix: button text should not wrap;

* fix: tailwindcss version

* fix: tailwindcss version

* refactor: remove checkbox styles, keep only wireframe

* refactor: move input-related css variables to the dedicated folder

* refactor: remove unused input props

* refactor: btn loader animation

* refactor: use nesting for states, refactor classnames using BEM delimiters

* refactor: introduce btn-border-width prop, removed redundant btn-padding-block since we use fixed heights

* refactor: input and button

* fix: input

* chore: deps

* chore: deps

* chore: add vite as dev dep

* refactor: button variants

* chore: yarn install

* fix: loading button should not react on hover

* docs: add stories about tokens

* chore:  remove lint command

* refactor: add prefix to css variables

* refactor: add base border-radius and border-width for controls

* fix: don't import tailwind in style files

* fix: add tailwindcss import for ladle

* fix: base radius variable

* refactor: rename css var

* refactor: add tw prefix for tailwind classes and vars

* fix: styles in easy-config

* fix: after tailwind reset paddings don't in width anymore, compensate

* fix: don't show outline on mouse click

* refactor: change btn state classes, remove not loading for hover because it's strange that button reacts on click when in loading state, but not on hover.

* fix: icons

* fix: add letter-spacing to normalize to prevent tailwind reset it with inherit value

* fix: welcome page selector

* fix: button outline uses a variable for width,  proper loading state in aria, icon class name

* feat: add global styles for UI-kit ladle

* docs: refactored stories composition, added stories

* refactor: simplify loader, enable custom loaders, introduced token for btn loader, fix class names, updated stories

* docs: add global styles for ladle

* feat: use custom loader in cloudbeaver

* refactor: use oklch color space for color mixing in loaders

* docs: add readme

* fix: tsconfig, format ladle config

* docs: add short command for ladle, update readme

* fix: module export

* build: add vite plugin

* fix: remove aria-label for loading

* fix: yarn

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-02-25 21:04:57 +08:00
serge-rider d40e46739a dbeaver/pro#4230 25.0.1 version bump 2025-02-24 19:37:57 +01:00
f4ba5065c0 CB-6255 Show message/notification for embedded drivers un-disabling (#3277)
* CB-6255 adds warning message for insecure embedded drivers on enabling in server config

* CB-6255 adds warning icon + fixes translations

* CB-6255 add safeEmbeddedDriver parameter to api

* CB-6255 adds safeEmbedded prop to the enabling drivers

* CB-6255 add since to safeEmbeddedDriver

* СB-6255 fixes translation and adds popup size setting

* CB-6255 eslint fix

* CB-6255 cleanup

* CB-6255 removes redundant component

* CB-6255 removes redundant useCallback

---------

Co-authored-by: Ruslan <pupkinvasya7000@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-02-24 15:31:42 +01:00
Alexander Skoblikovandkseniaguzeeva 50dc9121b6 dbeaver/pro#4207 do not create web session when trying to access static resources (#3284)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-02-24 14:25:41 +01:00
alexandDaria Marutkina 901854f9d1 CB-6284 remove extra symbol from labels (#3286)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-24 16:00:55 +08:00
alex d7d02f2c93 CB-6242 add tooltip for the connection (#3281) 2025-02-21 18:58:12 +00:00
Ainur 12ff40361d CB-6236 fix checking read only status for a column with invalid key identifier (#3276) 2025-02-21 17:05:30 +00:00
Ainur 8d7165b47b CB-4874 api for updating results data using async function (#3280) 2025-02-21 16:59:29 +00:00
sergeyteleshevandEvgenia c7e19a5780 CB-6249 No icons in the app for windows builds (#3267)
* CB-6249 fixes adding assets to the build for windows machines

* СB-6249 fixes the path for windows

* CB-6249 normalizes paths for build assets

* CB-6249 adds comment for assets

* CB-6249 normalizes paths to posix format

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-21 22:47:13 +08:00
alexandDaria Marutkina 0ac2bc7346 CB-6279 revert combobox z-index (#3285)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-21 13:52:48 +01:00
AinurandEvgenia 5a7b84c075 CB-6227 fix npe (#3261)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-21 10:15:40 +01:00
sergeyteleshevandDaria Marutkina 377a77dd58 CB-6264 Filter field hint list is shown when filter is added manually and focus is out of the field (#3278)
* CB-6264 adds ability to where filter to consider only typed text for suggestions

* CB-6264 adds case with tab

* CB-6224 cleanup

* CB-6264 add fix with focus check

* Revert "CB-6264 add fix with focus check"

This reverts commit 152f38a5c4.

* CB-6264 adds fix via isFocused

* CB-6264 cleanup

* CB-6264 resets state on proposal submission/cancelling

* CB-6264 adds resetState on any replacement case

* CB-6264 adds reset state on menu being invisible

* CB-6264 reverts outside click

* CB-6264 adds resetState on press Tab button

* CB-6264 cleanup

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-21 16:26:49 +08:00
sergeyteleshevandDaria Marutkina 2561583021 CB-3771 Incorrect autocomplete of the Host field while connecting to the local db in the local env (via Search) (#3266)
* CB-3771 loads host form searchDatabases for connections

* CB-3771 fixes overlap for connection host and port values

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-20 21:24:08 +08:00
Ruslan MusaevandEvgenia 4a2c4749f2 CB-6223 enable flat files drive by default (#3256)
* CB-6223 enable flat files drive by default

* CB-6223 enable flat files driver by default

* CB-6223 enable flat files driver by default

* CB-6223 enable flat files driver by default

* CB-6223 enable flat files driver by default

* CB-6223 enable flat files driver by default

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-20 14:08:33 +01:00
ShadelessFoxandMatvey16 179c73424a dbeaver/pro#3964 Refactor document (de-)serialization (#3275)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2025-02-19 20:07:05 +01:00
alexandDaria Marutkina 0b924da666 CB-6171 show alert instead of icon (#3263)
* CB-6171 show alert instead of icon

* CB-6171 change locales

* CB-6171 add missing dep

* CB-6171 add flag check

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-19 23:12:36 +08:00
alexandDaria Marutkina 24117dbf3f CB-4013 fix action trigger (#3268)
* CB-4013 fix action trigger

* CB-4013 revert ctrl

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-19 22:18:32 +08:00
Ainur bb23a2d587 CB-6069 grouping panel fix for a complex data type (#3271) 2025-02-19 12:42:35 +00:00
Ainur e93a3d1e62 CB-6102 add event listener filter for a session global project (#3259) 2025-02-19 12:14:10 +00:00
Alexander Skoblikovandkseniaguzeeva 0f7477e2b6 dbeaver/pro#4072 fix missing TE event (#3262)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-02-19 12:18:46 +01:00
alexandDaria Marutkina df49cef865 CB-6208 adjust z index (#3270)
* CB-6208 adjust z index

* CB-6208 adjust z index to menus

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-19 11:08:01 +01:00
sergeyteleshevandEvgenia 356950bb78 CB-5612 JSON view - filter is cleared after switching to JSON tab (#3264)
* CB-5612 sets where filter on context menu filter actions

* CB-5612 cleanup

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-19 17:47:36 +08:00
sergeyteleshevandDaria Marutkina 0aafa78926 CB-5863 Redirect to the Server Configuration page when refreshing the Identity Providers page (#3257)
* CB-5863 loads administration items loaders before redirects

* CB-5863 removes redirect blockers for administration routes

* CB-5863 loads route loaders on route change

* CB-5863 cleanup

* CB-5863 reverts administration.tsx changes

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-19 17:46:57 +08:00
sergeyteleshevandDaria Marutkina d3ed80219e CB-6135 Database objects do not open after disconnecting (#3254)
* CB-6135 allows to reconnect to the table

* CB-6135 fixes linter issues

* CB-6135 reverts freeze logic

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-19 17:46:13 +08:00
04388a7cfe CB-5834 fixes shrinking for properties table (#3260)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
2025-02-19 17:45:20 +08:00
sergeyteleshevandEvgenia 0fea710705 CB-5698 allows to create user with 1 character in username (#3249)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-19 17:44:31 +08:00
Vladimir Ivanov 56d296558e dbeaver/tech-docs#674 README.md (upd deploy link) (#3274) 2025-02-18 17:25:32 +03:00
Evgenia 87b0087e52 Merge pull request #3272 from dbeaver/dariamarutkina-patch-1
dbeaver/pro#4166 Update README file
2025-02-18 12:52:26 +03:00
Daria Marutkina b79287d327 dbeaver/pro#4166 Update README file 2025-02-18 10:20:06 +01:00
4cdfa5b07f Cb 6041 system information (#3245)
* CB-6041 add system information plugin

* CB-6041 api for system information

* CB-6041 api for system information

* CB-6041 api for system information

* CB-6041 simplify system info ui

* CB-6041 remove extra props

* CB-6041 api for internal database information

* CB-6041 remove hint

* CB-6041 add missing field

* CB-6041 use categories for database info

* CB-6041 add categories

* CB-6041 add category to copy info

* CB-6041 code style fix

* CB-6041 fix get property ids

* CB-6041 updates react version to 19

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
Co-authored-by: Alexander Skoblikov <aleksandr.skoblikov@dbeaver.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-02-12 12:44:07 +01:00
Serge Rider f542534fdc dbeaver/pro#4166 25.0.0 version bump 2025-02-11 21:17:35 +01:00
Serge Rider b06f28bd83 dbeaver/pro#4166 25.0.0 version bump 2025-02-11 21:16:19 +01:00
2fc1ee9e1b CB-6203 api for flat files connection (#3238)
* CB-6203 api for flat files connection

* CB-6203 api for flat files connection

* CB-6203 change font style to italic for temp connections

* CB-6203 add copy action

* CB-6203 fixes

* CB-6203 fixes

* CB-6203 fixes

* chore: update vite assets plugin

* CB-6203 expand node on file open

* CB-6203 fixes naming

* CB-6203 update license snippet

* CB-6203 fixes naming

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Wroud <wrouds@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-11 19:51:13 +01:00
a818a6b6dd CB-6200 disconnect data source on changing config (#3240)
* CB-6200 disconnect data source on changing

* CB-6200 correctly checks if connection is connected on updated connection resource event

* Revert "CB-6200 correctly checks if connection is connected on updated connection resource event"

This reverts commit 45485a02d6.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-02-11 18:56:55 +01:00
7919ec8bda dbeaver/pro#3943 check that folder cannot be moved inside itself (#3253)
* dbeaver/pro#3943 check that folder cannot be moved inside itself

* dbeaver/pro#3943 fix

---------

Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-02-11 18:42:22 +01:00
a76dc9cdbf CB-6219 refactor: migrate to react 19 (#3252)
* CB-6219 refactor: migrate to react 19

* chore: tune backend build

* chore: fix loaders

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-02-12 00:55:20 +08:00
alexandDaria Marutkina 6af85da676 CB-6119 await promise (#3235)
* CB-6119 await promise

* CB-6119 move loading logic to the parent component

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-11 20:57:42 +08:00
Mikhailov Grigorii 676b192434 dbeaver/dbeaver-devops#1774-fix-chown-non-root-user Changed chown to pwd/workspace (#3247) 2025-02-11 11:18:34 +01:00
sergeyteleshevandEvgenia 71231c3a76 CB-6153 Fix 'Enables' in settings (#3250)
* CB-6153 fixes translations

* CB-6153 adds new translation fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-11 17:53:49 +08:00
60e41367f6 dbeaver/pro#4117 Fix session management (#3248)
* dbeaver/pro#4117 Fix session management

* dbeaver/pro#4117 Fix comments

---------

Co-authored-by: Ivan Gagarkin <gagarkin@Ivans-MacBook-Pro.local>
Co-authored-by: MashaKorax <84867187+MashaKorax@users.noreply.github.com>
2025-02-10 18:25:22 +01:00
0048ad88e4 CB-6131 get loaders from all tabs, not only visible (#3210)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-10 18:18:57 +01:00
Alexander Skoblikovandkseniaguzeeva c85974c9f5 dbeaver/pro#3978 init workspace before configuration, support temp fo… (#3236)
* dbeaver/pro#3978 init workspace before configuration, support temp folder in services

* dbeaver/pro#3978 fix tests

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-02-10 17:06:57 +01:00
alexandEvgenia 9e9ec13db0 CB-6128 add tooltips to tabs (#3221)
* CB-6128 add tooltips to tabs

* CB-6128 add project to the tooltip

* CB-6128 remove code duplication

* CB-6128 change file name

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-10 21:48:35 +08:00
sergeyteleshev 2271433992 CB-5327 makes admin panel items not flickery (#3243) 2025-02-10 19:06:18 +08:00
sergeyteleshev 97411d2a3e CB-6215 makes object viewer linking feature be registered again (#3244) 2025-02-08 01:25:04 +08:00
sergeyteleshevandEvgenia 8e4ae5ed6a CB-1371 keeps focus in the input field for where filter after the saving (#3239)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-08 01:23:47 +08:00
Ainur b9322d8087 CB-5931 add ability to read cell info from single row table (#3218) 2025-02-06 16:25:18 +00:00
alexandEvgenia 408565ee64 CB-5212 adjust readonly behaviour (#3237)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-06 19:31:17 +08:00
Sychev AndreyandEvgenia 107436a8c0 CB-6181 fix: show save/cancel buttons in json docs (#3222)
* CB-6181 fix: show save/cancel buttons in json docs

* CB-6181 refactor: change condition for SAVE/CANCEL buttons

The problem is that for select 1 in TE we get different result from other product, because in CE/EE we use ResultSetFooterMenuService, while for TE we use regular TableFooterMenuService. model.source.isReadOnly flag doesn't return true anymore since we extracted hasRowIdentifier flag from it, so we get redundant buttons in tables like that in TE.

Since the only difference is products where we are executing this script, it's quite hard to detect it inside a component. I decided to check editor's features, they are empty in this case (select 1) in all products, so we can be 100% sure that if there are no features, we don't need any buttons.

The other problem that for Document type of data format we also don't have features (and we use the same footer menu service). If it's not read-only, we need to have those buttons to save/cancel edits. The first solution is to check data format is Document (or check the editor type or to try get action with needed type). The other solution that I used is to check hasRowIdentifier flag(hasElementIdentifier) because editable documents will have it true, while datasets like select 1 don't have them. It looks more generic for me and should work in more cases in future

* СB-6181 refactor: update isReadonly flag for resultset

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-06 19:30:57 +08:00
Ruslan MusaevandEvgenia 4388491db1 CB-5873 add logging server url (#3231)
* CB-5873 add logging server url

* CB-5873 add logging server url

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-05 12:21:19 +01:00
DenisSinelnikov 4bf0e72d77 CB-6136. LDAP userID change attribute (#3217) 2025-02-05 11:15:39 +00:00
Alexey fbe4c7fcbb dbeaver/dbeaver-vscode#77 fix: eslint (#3233)
* dbeaver/dbeaver-vscode#77 fix: eslint

* chore: update jdk version to 21
2025-02-05 18:50:35 +08:00
2fc9c72908 dbeaver/dbeaver-vscode#77 refactor: yarn & vit migration (#3229)
* dbeaver/vscode#77 refactor: yarn & vit migration

* chore: configure eslint & typescript & prettier

* fix: chunk splitting & assets loading

* fix: enable corepack

* refactor: dev environment

* chore: remove corepack enable from build scripts

* chore: make script executable

* fix: SSL check in vite dev

* chore: update debug launch configs

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-05 00:20:23 +08:00
Elizabethandkseniaguzeeva 14be13ba96 dbeaver/pro#4032 Update SQLite driver version to the latest one (#3225)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-02-04 16:17:21 +01:00
07de3cd668 CB-6174 feat: inverse overlay (#3215)
* CB-6174 feat: inverse overlay

* CB-6174 change icon

* CB-6174 adjust height

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-02-04 21:32:17 +08:00
AnastasiyaandEvgenia f1c8f10dc1 CB-6189 Update MariaDB driver to the latest version 3.5.1 (#3223)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-02-04 09:43:33 +01:00
Daria Marutkina ad467c3d22 dbeaver/pro#4033 Update README file 2025-02-03 11:12:46 +01:00
Alexander Skoblikovandkseniaguzeeva 5b20474470 dbeaver/pro#3868 update cloud configs by event (#3219)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-01-31 14:03:36 +01:00
alex a1a92d513c CB-6195 hide component if not supported (#3226) 2025-01-30 16:17:08 +01:00
serge-rider dc71e65bf9 dbeaver/pro#4033 Add redundant folders to gitignore 2025-01-30 09:16:22 +01:00
Alexander Skoblikovandkseniaguzeeva 538a433198 CB-6168 map user role by team (#3214)
* CB-6168 map user role by team

* CB-6168 review fix

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-01-29 21:28:18 +01:00
Serge Rider 7e512fe5ed dbeaver/pro#4033 24.3.5 version bump 2025-01-28 19:51:01 +01:00
2199883eb9 CB-6132 Read only connection setting (#3213)
* CB-6132 feat: add read-only setting to connection's expert block

* CB-6132 refactor: add readonly property for the new field

* CB-6132 set read only param for data source container

* CB-6132 refactor: add locales

* CB-6132 refactor: change eng message

* CB-6132 fix read only for creating connection

---------

Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2025-01-28 18:11:54 +01:00
19c4ec49bd CB-3753-1809-fr-add-field-hints-in-the-filter-field (#3151)
* CB-3753 adds base for input autocomplete

* CB-5373 adds InputAutocompletion base

* CB-3753 removes unneeded code + fixes bugs with current word selection

* CB-3753 replaces with existing menu

* CB-3753 refactor

* CB-3753 fixes menu visibility

* CB-3753 adds autocomplete for where filters from result set column names

* CB-3753 cleanup

* CB-3753 cleanup

* CB-3753 adds base hints

* CB-3753 fixes bug with not available arrow option selection

* CB-3753 cleanup

* CB-3753 pr fixes

* CB-3753 removes redundant useEffect with visibility logic

* Revert "CB-3753 removes redundant useEffect with visibility logic"

This reverts commit 92e67143a7.

* CB-3753 adds fuzzy search with Fuse.js library

* CB-3753 cleanup

* CB-3753 adds context input ref

* CB-3753 fixes bugs

* CB-3753 removes unused lib in core-utils

* CB-3753 pr fixes

* CB-3753 replaces fuse.js with minisearch

* CB-3753 fixes styles for menu

* CB-3753 moves InputAutocompletionMenu out of the InlineEditor

* CB-3753 adds positioning to the contextInput suggestions via button anchor

* CB-3753 cleanup

* CB-3753 fixes jumping menu

* CB-3753 cleanup

* CB-3753 fixes bug with incorrect replacement

* CB-3753 cleanup

* CB-3753 adds useSearch hook

* CB-3753 cleanup

* CB-3753 pr fixes

* CB-3753 adds contextMenuPosition instead of mouseContextMenu + makes AutocompleteMenu use this context

* CB-3753 pr fixes

* CB-3753 cleanup

* CB-3753 cleanup

* CB-3753 cleanup

* CB-3753 cleanup

* Revert "CB-3753 cleanup"

This reverts commit 732ca111d0.

* CB-3753 pr fixes

* CB-3753 cleanup

* CB-3753 pr fixes

* CB-3753 pr fixes

* CB-3753 pr fixes

* CB-3753 cleanup

* CB-3753 adds word separator + few new DB keywords to suggestions

* CB-3753 fixes filter when applying autocomplete

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-01-28 18:08:50 +01:00
AinurandDaria Marutkina c0aca0a032 CB-6123 fix updating driver libraries in config file (#3194)
* CB-6123 fix updating driver libraries in config file

* CB-6123 fix connection error on init

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-28 18:04:07 +01:00
Sychev AndreyandEvgenia 1bf783537b CB-5992 fix: limit maximum fraction digits in chart legend (#3216)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-01-28 17:20:06 +01:00
f6ae6ecdfe CB-4066 Migrate Team form to form template (#3196)
* CB-4066 refactors team structure

* CB-4066 refactors Team form to use new API

* CB-4066 adds TeamProjects form part to the TeamsForm

* CB-4066 cleanup

* CB-4066 cleanup

* CB-4066 pr fixes

* CB-4066 pr fixes

* CB-4066 fixes title and error key for team creation

* CB-4066 qa fixes

* CB-4066 qa fixes

* CB-4066 fixes bug with team editing

* CB-3753 pr fixes

* CB-4066 fixes validation error with wrong teamId

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-01-27 20:34:58 +03:00
Sychev AndreyandEvgenia 8fe583d9ae CB-6152 restrict editing bool and hide actions in datasets (#3209)
* CB-6152 fix: Restrict editing BOOL in read-only tables

* CB-6152 fix: add condition for actions

* CB-6152 chore: update TS references

* CB-6152 fix: don't show extra button for not editable tables

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-01-27 20:33:32 +03:00
Sychev AndreyandDaria Marutkina ef8eb7b8d8 CB-5126 fix: focus init button in SqlEditorOverlay (#3193)
* CB-5126 fix: use useFocus hook

* CB-5126 use updateFocus

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-27 16:41:42 +03:00
Mikhailov GrigoriiandDaria Marutkina 529186df41 dbeaver/dbeaver-devops#1630 Added if for root and non-root users (#3180)
* dbeaver/dbeaver-devops#1630 Added if for root and non-root users

* dbeaver/dbeaver-devops#1630 Added creating dir /home/dbeaver

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-27 11:26:21 +01:00
3ceac40016 dbeaver/pro#3977 ability to load self-signet cert from a specific folder (#3201)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
2025-01-24 17:51:32 +01:00
Georgii b7bbf4e65f dbeaver/dbeaver-infra#187 fix generator not adding junit (#3207) 2025-01-24 16:14:09 +01:00
mayer 909d3fb668 dbeaver/dbeaver-devops#1701 java 21 as default (#3208) 2025-01-24 14:10:55 +01:00
serge-rider d8107fabaa Merge remote-tracking branch 'origin/devel' into devel 2025-01-24 11:46:53 +01:00
Ainurandmr-anton-t ade04708a3 CB-6109 fix deadlock and keep filter only in global project (#3195)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2025-01-24 11:25:24 +01:00
serge-rider b6b28d5f65 Merge remote-tracking branch 'origin/devel' into devel 2025-01-24 11:13:19 +01:00
serge-rider fb3daa0145 dbeaver/pro#4016 File datasources folder. Azure and GCP directory detection fix. File details property page. 2025-01-24 11:10:33 +01:00
alexandDaria Marutkina bfd435dc5e CB-5798 remove hardcoded max width (#3206)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-24 11:44:49 +03:00
alexandEvgenia 8831ad05fa CB-5968 export user form (#3198)
* CB-5968 export user form

* CB-5968 bind method

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-01-23 16:04:06 +03:00
alexandEvgenia 254635d5b0 CB-6090 add new types (#3197)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2025-01-22 21:47:16 +03:00
alex 636ec28312 CB-6129 add tooltips (#3202)
* CB-6129 add tooltips

* CB-6129 simplify syntax
2025-01-22 21:46:14 +03:00
DenisSinelnikov cd7dcb40c8 CB-5574. Added new api for get manager, added flap in server configur… (#3161) 2025-01-22 15:12:45 +00:00
Georgii 82753268e6 dbeaver/dbeaver-infra#187 PRO osgi test runner (#3190)
* dbeaver/dbeaver-infra#187 PRO osgi test runner

* dbeaver/dbeaver-infra#187 working CBEE & WIP DC runners

* dbeaver/dbeaver-infra#187 code cleanup & fix maven runs

* dbeaver/dbeaver-infra#187 code cleanup

* dbeaver/dbeaver-infra#187 don't asyncLaunch desktop apps
2025-01-22 15:44:29 +01:00
Daria Marutkina a6da7124e8 dbeaver/pro#3956 Update README file (#3200) 2025-01-20 14:33:06 +01:00
AinurandDaria Marutkina 6514cbe66f CB-5152 fix data source config if credentials were saved for current session (#3191)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-20 10:18:06 +01:00
serge-rider e708c1b810 dbeaver/pro#3956 24.3.4 version bump 2025-01-14 19:31:04 +01:00
3b0a4e7d33 CB-6063 feat: add ability to import data without PK (#3188)
* CB-6063 feat: add ability to import data without PK

* CB-6063 feat: add ability to insert rows to tables w/o PK using actions

removes isImportAllowed flag, adds hasRowIdentifier, uses it in place of forbidden actions

* CB-6063 refactor: use only false value for hasRowIdentifier flag

* CB-6063 fix: revert logic in hasRowIdentifier

* CB-6063 refactor: rename property

* CB-6063 fix: return lock icon back for tables w/o identifier

* CB-6063 fix: hasRowIdentifier in getResult

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-01-14 19:23:32 +01:00
7a83252490 CB-5369. Added API for transaction log for commits (#3183)
* CB-5369. Added API for transaction log for commits

* CB-5369. Refactor after review

* CB-5369 add transaction logs table

* CB-5369. Added id for data

* CB-5369 fix typo

* CB-5369. Added event for get count

* CB-5369. Refactor event

* CB-5369. Refactor event

* CB-5369. Refactor after review

* CB-5369. Refactor after review

* CB-5369. Added connectionId to event

* CB-5369 support count event

* CB-5369. Rename eventId

* CB-5369 adjust count styles

* CB-5369 format time

* CB-5369 add missing deps

* CB-5369 remove extra important flags

* CB-5369 review fixes

* CB-5369 remove extra import

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-14 19:12:10 +01:00
f6800b5911 CB-5461. Added compare ldap group and user team (#3189)
* CB-5461. Added compare ldap group and user team

* CB-5461. Fixed codestyle

* CB-5361. Fixed to create new ldap user with full dn

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2025-01-14 17:06:25 +01:00
Ainur 1d4c00e5fb CB-6051 ability to download drivers (#3155) 2025-01-14 15:42:02 +00:00
12cfcbc199 dbeaver/pro#3885 UPD: switch to web sockets (#3169)
* dbeaver/pro#3885 Make CBSessionManager.createWebSessionImpl public

* dbeaver/pro#3885 Check that the feature is enabled upon connection

---------

Co-authored-by: Ivan Gagarkin <gagarkin@Ivans-MacBook-Pro.local>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2025-01-14 14:02:10 +01:00
Sychev AndreyandDaria Marutkina c3fcf37b3f CB-5756 redesign user profile (#3184)
* CB-5756 feat: redesign user profile

* CB-5756 refactor: return disabled prop to UserProfileFormInfo

* CB-5756 feat: add confirmation dialog

When closing panel with unsaved password changes, add localization for that case.

* CB-5756 fix: onChange handler and comparing the state

* CB-5756 fix: build

* CB-5756 refactor: change useState to useObservableRef

* CB-5756 refactor: swap logError to logException

* CB-5756 refactor: use built-in inputs onChange

* CB-5756 refactor: swap useService to useResource hook

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-13 17:10:19 +03:00
AinurandDaria Marutkina e259d7da59 CB-5457 fix applying specific events for non-admin users (#3186)
* CB-5457 fix applying specific events for non-admin users

* CB-5457 add annotations

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-13 14:14:22 +04:00
alexandDaria Marutkina 06f8b448ca CB-5867 show objects description (#3170)
* CB-5867 show objects description

* CB-5867 add description only to the connection tree

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-10 20:43:17 +03:00
AinurandDaria Marutkina 5f87ef177f CB-5923 add env variables for product settings (#3179)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-10 11:53:28 +01:00
Anastasiya f4b0a15b70 Fix incorrect punctuation in the Russian localization (#3187) 2025-01-09 14:01:17 +01:00
Joel Wetzell e124f41943 fix typo (#3178) 2025-01-09 13:54:16 +01:00
sergeyteleshev afc8d7c52b CB-6060 makes tree selection resource more universal + fixes scripts bug with disabled folder creation (#3181) 2025-01-09 14:39:18 +03:00
Sychev AndreyandDaria Marutkina fa1b07ee6b CB-6097 Fix: The Show duplicates button in the Grouping panel does not work (#3176)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-07 12:48:24 +03:00
Sychev AndreyandDaria Marutkina de6f9b7dae CB-5832 Add SQL editor shortcut to save script (#3167)
* CB-5832 feat: add shortcut for save as script action

* CB-5832 feat: add info about a shortcut to Shortcuts modal

* CB-5832 fix: ru localization

* CB-5832 refactor: use SqlEditorView for action registration

* CB-5832 refactor: use SqlEditorView for action registration

* CB-5832 refactor: check action in handler

* CB-5832 refactor: bind function in constructor

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2025-01-07 12:47:52 +03:00
Daria Marutkina 60d90b9e73 dbeaver/pro#3921 Update README file (#3177) 2025-01-06 14:13:12 +03:00
serge-rider 4ced9189e1 dbeaver/pro#3921 24.3.3 version bump 2024-12-30 18:13:05 +01:00
Serge Riderandkseniaguzeeva 827865a973 dbeaver/pro#3911 AI and SQL control commands (#3166)
* dbeaver/pro#3911 AI and SQL control commands

* dbeaver/pro#3911 AI and SQL control commands

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-12-30 17:26:51 +01:00
AnastasiyaandEvgenia 70b6fc25a9 CB-6088 fix upper cases in localization; add localization (#3168)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-30 16:46:47 +01:00
sergeyteleshevandEvgenia efd0be6a1a Cb 5448 sql assist doesnt work after alias with enabled use long object names (#3140)
* CB-5448 adds replacementOffset logic to autocomplete so we have table long names setting

* CB-5448 cleanup

* CB-5448 cleanup

* CB-5448 pr fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-30 11:41:30 +01:00
DenisSinelnikov 3bcbf342c6 Merge pull request #3164 from dbeaver/CB-6085-fix-regex-in-web-sql-file-loader-servlet
Cb 6085 fix regex in web sql file loader servlet
2024-12-27 21:09:11 +04:00
DenisSinelnikov 882979e8c0 Merge branch 'devel' into CB-6085-fix-regex-in-web-sql-file-loader-servlet 2024-12-27 21:01:06 +04:00
ca83a1f167 CB-5734 return template configuration for auth provider (#3162)
* CB-5734 return template configuration for auth provider

* CB-5734 feat: fetch templateConfiguration

---------

Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: Andrey Sychev <nukemoore@gmail.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-27 17:58:15 +01:00
DenisSinelnikovandDaria Marutkina 92ee21d136 CB-5609. Added validate name for renaming s3 files (#3163)
* CB-5609. Added validate name for renaming s3 files

* CB-5609. Refactor after review

* CB-5609. Refactor after review

* CB-5609. Refactor after review

* CB-5609. Remove symbol

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-27 17:52:10 +01:00
Daria Marutkina 3eba6945dd Merge branch 'devel' into CB-6085-fix-regex-in-web-sql-file-loader-servlet 2024-12-27 16:03:39 +01:00
3c73cb2aa8 CB-4756 feat: save grouping panel state between remounts (#3158)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2024-12-26 11:00:55 +01:00
Ainur 543d175a6f CB-6085 blob upload validate only uuid 2024-12-26 10:40:15 +01:00
Ainur 3dace0d676 CB-6085 blob upload validation fix 2024-12-26 10:13:57 +01:00
Alexander SkoblikovandDaria Marutkina bd851433e7 dbeaver/pro#3739 event registry (#3159)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-25 20:30:58 +01:00
DenisSinelnikovandAinur 46fedc0198 CB-5954. Added logic for login by login attribute (#3148)
* CB-5954. Added logic for login by login attribute

* CB-5954. Added logic for login by login attribute

* CB-5954. Added exception for additional login

* CB-5954. Fixed if bind DN not filled

* CB-5954. Refactor after review

* CB-5954. Refactor after review

* CB-5954. Fixed localization

* CB-5954. Fixed localization

* CB-5954. Fixed localization

* CB-5954. Fixed localization

* CB-5954. Fixed checkstyle

* CB-5954. Changed tooltips

---------

Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-12-25 17:47:24 +01:00
sergeyteleshevandDaria Marutkina 8f61321169 CB-5978 api token change description (#3160)
* CB-5978 hides API Token provider during configuration wizzard

* CB-5978 hides API token only for config mode (fix)

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-25 16:15:48 +01:00
aa778e0f94 CB-6059 create team with uppercase fix (#3142)
* CB-6059 create team with uppercase fix

* CB-6069 fixes error with team creation with teamId in upper case

* CB-6059 fix potential npe

---------

Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-25 12:36:53 +01:00
398f9b775e Cb 5988 plugin template (#3136)
* CB-5988 generate plugin template

* CB-5988 add add plugin script

* CB-5988 review fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2024-12-24 14:20:08 +01:00
78aafaf9aa CB-3508 create events for session async tasks (#3036)
* CB-3508 create events for session async tasks

* CB-3508 remove redundant events

* CB-3508 update async web task event logic

* CB-6000 refactor: migrate AsyncTask code to core-root package

* CB-6000: fix

* CB-3508 use only update async task event

* CB-3508 add result info to async task event

* CB-6000 feat: change the way of updating task state

* CB-6000 refactor: rename type and property

* CB-6000 fix: use id from server

* CB-3508 do not have results in task info event

* CB-6000 changes after BE update

* CB-6000 fix: set only status on status update

* CB-3508 fixes after review

* CB-6000 refactor: task id

return back task id generation and saving on creation. Added second map filled on running and linking backend Id and frontend Id. Added helper method to get task

* CB-6000 refactor: handle race condition

add pending events map to save last status if it's came earlier than we saved the task

* CB-6000 refactor: AsyncTask creation

* CB-3508 fixes build

* CB-6000 fix: retry update task info later if locked

* CB-6000 refactor: add a comment about delayed update

---------

Co-authored-by: Andrey Sychev <nukemoore@gmail.com>
Co-authored-by: Sychev Andrey <44414066+SychevAndrey@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-24 13:45:16 +01:00
ShadelessFox 449b66f6eb dbeaver/pro#3659 Convert OSGI localization bundles to UTF-8 (#3144) 2024-12-23 18:56:37 +01:00
Alexander Skoblikov 2f03486b49 dbeaver/pro#3807 jakarta websocket (#3141)
* dbeaver/pro#3807 jakarta websocket

* dbeaver/pro#3807 fix timeout

* dbeaver/pro#3807 fix test deps
2024-12-23 14:43:40 +01:00
Daria Marutkina d798fd627b dbeaver/pro#3857 Update README file (#3149) 2024-12-23 13:40:57 +01:00
Serge Rider 48e0cda85d dbeaver/pro#3857 24.3.2 version bump 2024-12-17 20:52:08 +01:00
AinurandDaria Marutkina 7f13f70b26 CB-6044 do not save api token on auth (#3138)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-17 20:16:16 +01:00
8d0b0e1c65 CB-5807. Implemented logic to get localized text by locale, translate… (#3117)
* CB-5807. Implemented logic to get localized text by locale, translated global prefer and part of identity provider on en/ru

* CB-5807. Refactor after review

* CB-5807. Refactor after review, move logic to base class

* CB-5807. Refactor after review, move logic to base class

* CB-5807. Added new translation for IP

* CB-5807. Refactor after review

* CB-5807. Refactor after review

* CB-5807. Refactor after review

* CB-5807. Fixed typo in ru locale

* CB-5807. Refactor after review

* CB-5807. Revert

* CB-5807. Remove comment

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-12-17 18:14:24 +01:00
855d5914ef CB-5074 fix: temporary fix of setting undefined as locale (#3139)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2024-12-17 16:43:53 +01:00
Elizabeth 71e03c7bf2 dbeaver/dbeaver#36415 Add support for composite values to the grouping panel for DBeaver (#3137) 2024-12-17 16:09:09 +01:00
sergeyteleshevandEvgenia eada3fddb5 CB-5955 Add create connection/folder actions in navigator tree (#3130)
* CB-5955 adds create menu (connection, folder)

* CB-5955 hides folder creation for non authorized users

* CB-5955 fixes label

* CB-5955 disable new connection

* CB-5955 shows create actions only for folders and connections nodes

* CB-5955 cleanup

* CB-5955 Add handler to hide create menu when no items are available

* CB-5955 Refactor handler to directly bind elementsTreeActionHandler for folder creation

* CB-5955 pr fixes

* CB-5955 creates connection according to the selected in tree project + tree selection refactor

* CB-5955 reverts old behavior with Generate SQL submenu for connections

* CB-5955 cleanup

* CB-5955 adds connection via menu into any folder

* CB-5955 updates TS references

* CB-5955 cleanup

* CB-5955 pr fixes

* CB-5955 pr fixes

* CB-5955 pr fixes

* CB-5955 cleanup

* CB-5955 fixes bug with dissapeared create connection button at top bar

* CB-5955 pr fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-16 17:01:32 +01:00
alex 92c7cef0c6 CB-6039 prevent click through menu (#3134)
* CB-6039 prevent click through menu

* CB-6039
2024-12-16 14:02:43 +03:00
Alexander Skoblikovandmr-anton-t 522620e20d Dbeaver/pro#3726 parameters provider (#3128)
* dbeaver/pro#3726 wip

* dbeaver/pro#3726 create datasource descriptor only via registry

* dbeaver/pro#3726 cloudbeaver fixes

* dbeaver/pro#3726 initial test

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-12-13 12:33:48 +01:00
alexandEvgenia ea342f058b Cb 4071 data grid context menu (#3114)
* CB-5831 migrate data grid context menu

* CB-5831 use switch instead of return

* CB-5831 migrate save actions

* CB-5831 apply primary color

* CB-4071 simplify logic

* CB-4071 simplify logic

* CB-4071 change naming

* CB-4071 review fixes

* CB-4071 add items based on condition

* CB-4071 remove old context menu

* CB-4071 pass handlers to panel

* CB-4071 add gap to the menu

* CB-4071 check data source

* CB-4071 support prev behaviour

* CB-4071 make context more strict

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-12 18:50:21 +03:00
alexandEvgenia db9df1f810 Cb 5831 refresh whole tree (#3129)
* CB-5831 outdate children when refresh node

* CB-5831 freeze resource until tree is constructed

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-12 14:20:16 +03:00
Sychev AndreyandDaria Marutkina 2f80d1ce13 CB-3332 shortcuts improvements (#3126)
* CB-3332 refactor: data-viewer shortcuts

move them to the plugin folder, make them IKeyBinding shape to use in transformKeys

* CB-3332 refactor: change ctrl hotkey to mod

* CB-3332 refactor: use new DATA_VIEWER_SHORTCUTS, don't replace backspace

* CB-3332 refactor: remove redundant shortcuts, update naming

* CB-3332 feat: introduce new shortcuts for rows managing

In order to let mac users use shortcuts, Insert key was changed to KeyR

* CB-3332 feat: move shift key to the beginning of all shortcuts

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-12 14:19:34 +03:00
32e50c40f4 CB-5945. Mark deprecate for template (#3123)
* CB-5933. Fixed typo

* CB-5945. Refactor after review

* CB-5945. Refactor after review

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-12-12 11:33:18 +01:00
6830e34b2a CB-5933 Connection state is not synchronized with other resources triggering connection state (#3119)
* CB-5933. Added event for disconnect datasource

* CB-5933. Added to gql

* CB-5933 adds handlers for disconnected/connected events

* CB-5933. Rename topic

* CB-5933. Rename topic

* CB-5933. Added event for connect to database

* СB-5933 adds ConnectionDisconnectEventHandler

* CB-5933. Fixed typo

* CB-5933 fixes disconnect handler + adds connect handler for connections

* CB-5933 fix for connected event

* СB-5933 marks outdated connected/disconnected connections on event handling

* CB-5933 cleanup

* CB-5933 pr fixes

* CB-5933 pr fixes

* CB-5933. Refactor after review

---------

Co-authored-by: denis.sinelnikov <denis.sinelnikov@dbeaver.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-12 11:27:12 +01:00
Anastasiya 02e6b9c6de dbeaver/pro#3712 update contributors readme part (#3131) 2024-12-11 14:12:17 +03:00
22af3b1c5e CB-5935 removes perform update for changing connection view (#3124)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-11 13:16:09 +03:00
d09bb9bb58 CB-4070 Migrate Project form to form template (#3101)
* CB-4070 small layout issues problems from the ticket comments

* CB-4070 ux fixes for project create/edit behavior

* CB-4070 pr fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-12-11 11:05:27 +03:00
Alexander SkoblikovandEvgenia c2523a687b CB-6026 use nio api for deletion (#3125)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-12-11 09:04:49 +01:00
Georgii 4b2e1a9c05 dbeaver/dbeaver#36488 add missing lib-sql bundlepath (#3127) 2024-12-10 11:52:43 +01:00
Alexeyandsergeyteleshev 2357b0a0cf fix: dev server websocket proxy (#3122)
Co-authored-by: sergeyteleshev <iamsergeyteleshev@gmail.com>
2024-12-06 14:14:58 +03:00
Sychev Andreyandmr-anton-t a835f7e215 Cb 5860 bump versions (#3116)
* CB-5860 chore: bump versions

* CB-5860 chore: bump i18next

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-12-06 07:39:49 +03:00
Ainur 5e86e161b4 CB-6015 try to find user with uppercase (#3120) 2024-12-05 16:05:33 +00:00
0b5af36628 Dbeaver/dbeaver vscode#22 split core plugins (#3102)
* dbeaver/dbeaver-vscode#22 wip

* dbeaver/dbeaver-vscode#22 wip

* dbeaver/dbeaver-vscode#22 wip

* dbeaver/dbeaver-vscode#22 gql model fix

* dbeaver/dbeaver-vscode#22 missed class fix

* dbeaver/dbeaver-vscode#22 ce fixes

* dbeaver/dbeaver-vscode#22 fixes

* dbeaver/dbeaver-vscode#22 review fixes

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
Co-authored-by: Alexey <wrouds@gmail.com>
2024-12-04 08:20:06 +01:00
Daria Marutkina 7f1c9ceec0 Merge pull request #3108 from dbeaver/dariamarutkina-patch-2
dbeaver/pro#3712 Update README file
2024-12-03 16:25:34 +01:00
Mikhailov Grigorii c31416c7d7 dbeaver/dbeaver-devops#1553 Fixed chown in dockerfile (#3113) 2024-12-03 14:04:06 +01:00
Mikhailov Grigorii 03b0467c97 dbeaver/dbeaver-devops#1553 Reverted run as root user in dockerfile (#3106) 2024-12-02 16:36:07 +01:00
Daria Marutkina e689836a4e dbeaver/pro#3712 Update README file 2024-12-02 16:28:22 +01:00
74dbd50690 dbeaver/dbeaver-vscode#7 Driver downloads API (#3069)
* dbeaver/dbeaver-vscode#7 Driver downloads API

* dbeaver/dbeaver-vscode#7 Bring short driver ID into GQL

* #7 fix: make required fields required

* dbeaver/dbeaver-vscode#7 fix check driver maven library validation

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
2024-12-02 12:58:45 +01:00
alex 85bfcc0674 CB-4898 remove extra deps (#3100) 2024-11-28 12:04:47 +03:00
Alexander SkoblikovandAlexey ea8605eff8 dbeaver/dbeaver-vscode#45 server feature extension (#3075)
* dbeaver/dbeaver-vscode#45 server feature extension

* dbeaver/dbeaver-vscode#45 review fix

---------

Co-authored-by: Alexey <wrouds@gmail.com>
2024-11-26 18:18:16 +03:00
sergeyteleshev ff2cc51c11 CB-5872 adds instruction with link for AWS product updation (#3098) 2024-11-26 22:33:27 +08:00
Serge Rider 979cecff04 dbeaver/pro#3712 24.3.1 version bump 2024-11-25 23:25:38 +04:00
b2a0a88983 CB-5918 Add new plugin (#3081)
* CB-5918 add holidays plugin

* CB-5918 add plugin-holidays as a reference to product default

* CB-5918 fix holidays plugin, add icons

* CB-5918 fix: don't run many renders simultaneously

* CB-5918 fix: flakes respawn

previously flakes kept x position that looked weird especially when user resize the window making it bigger

* CB-5918 refactor: adjust flakes size and speed

make flakes bigger and a little bit slower, reduce amount of flakes

* CB-5918 refactor: make flakes look like flakes

add shape prop to create different shapes of snowflakes

add drawSnowflake to render snowflakes

* CB-5918 Extract Logo registration to separate plugin

In order to customize Logo for different occasions without creating circular dependencies with other plugins

* CB-5918 refactor: update exports in holiday plugin

* CB-5918 feat: make logo src a prop

use holidays service to set custom logo

* CB-5918 refactor: update logos

* CB-5918 refactor: snowflakes removing faster if more flakes

* CB-5918 refactor: reduce action icon rotation on click

* CB-5918 fix: deps

* CB-5918 fix: ts-config reference

* CB-5918 refactor: use debounce for resizing

* CB-5918 refactor: add throttle to handleMouseMove

* CB-5918 refactor: update logo

* CB-5918 fix: start date

* CB-5918 feat: add rotation to snowflakes

* CB-5918 fix: dep version

* CB-5918: refactor: split up app logo plugin to public and admin parts

* CB-5918 refactor: split holidays plugin up to two parts: admin and public

* CB-5918 refactor: avoid using anonymous functions in Christmas class

* CB-5918 refactor: HolidayActionButton

* CB-5918 refactor: IHoliday interface naming

* CB-5918 fix: update TS refs

* CB-5918 fix: legacy color notation and lost this

* CB-5918 refactor: remove redundant plugin bootstrap export

* CB-5918 refactor: rename private property

* CB-5918 refactor: use IconButton core block inside HolidayActionButton

* CB-5918 refactor: add check in addHoliday method

* CB-5918 refactor: simplify logoSrc condition

* CB-5918 refactor: remove redundant styles

* CB-5918 refactor: use descriptive names for plugins bootstrap

* CB-5918 refactor:  specify dep version

* CB-5918 refactor: improve Christmas class readability

* CB-5918 refactor: use lazy import for logo

* CB-5918 refactor: export lazy components properly

* CB-5918 fix: holiday end date

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-11-25 21:09:01 +03:00
alexandDaria Marutkina 285a216b4c CB-5125 do not trigger logo in configuration stage (#3096)
* CB-5125 do not trigger logo in configuration stage

* CB-5125 use publicDisabled field instead

* CB-5125 bind method

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-25 18:13:54 +01:00
alex 6a82a3155f CB-5506 support directional selections (#3095) 2024-11-25 18:18:26 +03:00
ShadelessFoxandkseniaguzeeva 19a5506229 dbeaver/pro#3700 Hide API token authentication method (#3093)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-11-25 13:55:34 +03:00
Ainur 51af88e3bc CB-5964 read only metadata delete fix (#3094) 2024-11-25 10:51:45 +00:00
Ainur f3660fa277 CB-5524 rm resource validation fix (#3091) 2024-11-25 10:50:44 +00:00
Ainur d2f592c8be CB-5971 do not show transactions button if not supported (#3092) 2024-11-25 10:36:53 +00:00
alexandDaria Marutkina bde31c3653 CB-5960 sort features (#3089)
* CB-5960 sort features

* CB-5960 sort providers

* CB-5960 sort on component level

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-22 17:59:15 +03:00
990fbe28f5 CB-5895. Added new parameter link to buy license for getProductInfo API (#3080)
* CB-5895. Added new parameter link to buy license for getProductInfo API

* CB-5951 add purchase field

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-11-22 13:16:41 +01:00
serge-rider 350136f797 CB-5584 VSC fix 2024-11-22 12:39:05 +01:00
ae1f0b7470 Devops#1553 root user fix (#3087)
* Reapply "dbeaver/dbeaver-devops#1553 Added user dbeaver in dockerfile cloudbeaver (#3067)"

This reverts commit a36a5550e0.

* dbeaver/dbeaver-devops#1553 updated base-java image with user

* dbeaver/dbeaver-devops#1553 fixed user usage and ownership applying

* dbeaver/dbeaver-devops#1553 changed  GID UID

* dbeaver/dbeaver-devops#1553 desc of chowner fixed

* dbeaver/dbeaver-devops#1553 fixed user creation

* dbeaver/dbeaver-devops#1553 Added creating dbeaver user in ce dockerfile

* dbeaver/dbeaver-devops#1553 Removed comment

* dbeaver/dbeaver-devops#1553 Removed comment

* dbeaver/dbeaver-devops#1553 Rewrited comment

* dbeaver/dbeaver-devops#1553 Replaced UID on user name

---------

Co-authored-by: Greg Miller <ggxedq@gmail.com>
Co-authored-by: Mikhailov Grigorii <49814763+ggxed@users.noreply.github.com>
2024-11-21 18:29:18 +01:00
DenisSinelnikovandEvgenia cd901b922f Cb 5584 provide more information in the debug log for auditing (#3061)
* CB-5584. Added more logs for gql and rest in RM. Added new parameter in global preferences for showing additional logs

* CB-5584. Added more logs for gql and rest in RM. Added new parameter in global preferences for showing additional logs

* CB-5584. Rename parameter

* CB-5584. Rename parameter

* CB-5584. Refactor after review

* CB-5584. Refactor after review

* CB-5584. Renamed parameter

* CB-5584. Added check variable for contains restricted variable

* CB-5584. Fixed showing wrong sessionId.

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-21 16:52:42 +01:00
alexandEvgenia 56b9eab16f CB-5919 avoid unnecessary navigations tasks (#3090)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-21 17:27:25 +03:00
Sychev AndreyandEvgenia 94aaf7bf5e CB-5703 refactor: optimize data grid onScroll handler (#3071)
handleScroll in DataGrid entails small performance degradation due to el.scrollTop, el.clientHeight, el.scrollHeight calls and hence reflow of layout, more on that here: https://gist.github.com/paulirish/5d52fb081b3570c81e3a/565c05680b27c9cfd9f5e971d295cd558c3e1843

What is done:
1. throttle added to not fire handleScroll on every render, because the main goal of that function is to detect when a user approaches the end of a page = reduce number of calls

2. Inside the handler the code was  refactored in a way that we get scrollTop only once to calculate toBottom and inverse the clause logic and replace early return (!A || !B) with a clause with (A && B) logic to not check B on every call which is also triggering reflow.

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-21 16:00:56 +03:00
DenisSinelnikovandEvgenia b816a6d8a0 CB-5695. Fixed npe when RP turned on, but not configured (#3077)
* CB-5695. Fixed npe when RP turned on, but not configured

* CB-5695. Fixed checkstyle

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-21 10:01:42 +01:00
alexandDaria Marutkina e56a298acc CB-5573 ask for commit confirmation on connection edit recconect (#3085)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-20 17:08:45 +01:00
serge-rider ff13d56d42 dbeaver/pro#3648 Maven resource plugin version 2024-11-20 16:06:48 +01:00
serge-rider a36a5550e0 Revert "dbeaver/dbeaver-devops#1553 Added user dbeaver in dockerfile cloudbeaver (#3067)"
This reverts commit 2cdc43a29f.
2024-11-20 14:25:19 +01:00
Mikhailov GrigoriiandDaria Marutkina 2cdc43a29f dbeaver/dbeaver-devops#1553 Added user dbeaver in dockerfile cloudbeaver (#3067)
* dbeaver/dbeaver-devops#1553 Added user dbeaver in dockerfile cloudbeaver

* dbeaver/dbeaver-devops#1553 Create dockerfile for cloudbeaver update

* dbeaver/dbeaver-devops#1553 Added dockerfile with upgrade script

* dbeaver/dbeaver-devops#1553 Fixed script path

* dbeaver/dbeaver-devops#1553 Fixed entrypoint

* dbeaver/dbeaver-devops#1574 Reworked script, added start process as dbeaver user

* dbeaver/dbeaver-devops#1574 Renamed script for launch container

* dbeaver/dbeaver-devops#1574 Added comments to script launch-products

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-20 12:19:01 +01:00
AnastasiyaandDaria Marutkina 21a70c33a3 CB-5947 fix server config descriptions (#3079)
* CB-5947 fix server config descriptions

* Update ru.ts change description

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-20 12:54:19 +03:00
4323578b03 СB-5796 Metadata/data editor - error when changing server settings (#3051)
* СB-5796 make no connection to db if it is already connected

* Revert "СB-5796 make no connection to db if it is already connected"

This reverts commit 4459891e06.

* CB-5796 adds extra checks to connection shield for proper connection

* CB-5796 fixes for case with table

* CB-5796 adds loader between switching from simple to advanced connection type

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-20 09:37:02 +03:00
Ruslan MusaevandMatvey16 58346aef65 dbeaver/pro#3484 Add statistic for cloud (#3068)
Co-authored-by: Matvey16 <82543000+Matvey16@users.noreply.github.com>
2024-11-20 04:39:48 +01:00
DenisSinelnikovandEvgenia 9d8e021e6c CB-5886. Fixed import number with float, without rounding (#3072)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-19 10:12:53 +01:00
Daria Marutkina 0144742878 dbeaver/pro#3641 Update README file (#3078) 2024-11-18 12:24:30 +01:00
Alexander SkoblikovandEvgenia 0943b80942 CB-5946 force lowercase userid (#3074)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-18 09:47:18 +01:00
Alexander Skoblikov 5293be4d4a CB-5939 do not send server information to a client side (#3070) 2024-11-15 11:14:29 +00:00
serge-rider 5bcef9278e dbeaver/pro#3643 Utils refactoring 2024-11-13 08:38:56 +01:00
Serge Rider bbe0e15370 dbeaver/pro#3641 24.3.0 version bump 2024-11-12 22:01:04 +01:00
Serge Rider f31be24a49 dbeaver/pro#3641 24.3.0 version bump 2024-11-12 21:56:10 +01:00
cee8f00b9e CB-5016 add disable import option to global config (#3058)
* CB-5016 add disable import option to global config

* CB-5016 refactor: move logic from DataViewerSettingService to DataImportSettingsService

* CB-5016 refactor: simplify

* CB-5016 refactor: move disable import locale token to data-import-plugin

* CB-5016 refactor: ru locale

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
2024-11-12 18:33:22 +01:00
Sychev AndreyandDaria Marutkina a23c2c2a55 CB-5775 refactor: make default group text aligned with other tabs (#3064)
* CB-5775 refactor: make default group text aligned with other tabs

* CB-5775: return accidentally removed gap prop

* CB-5775 refactor: return TextPlaceholder back

* CB-5775 refactor: make style important

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-12 18:27:15 +01:00
sergeyteleshev 110546a022 CB-5833 Fix e-mails recognition for SSO (#3019) 2024-11-12 16:17:49 +00:00
mayerandDaria Marutkina a779a0e95e dbeaver/dbeaver-devops#1590-changed-server-port-var (#3054)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-12 12:47:37 +01:00
sergeyteleshevandEvgenia 3b9275c00a CB-5891 User - error after disabling and deleting (#3056)
* CB-5891 on disable user changes form state according to its real state

* CB-5891 pr fixes

* CB-5891 cleanup

* CB-5891 pr fixes

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-11 14:27:04 +03:00
59c924c3d7 CB-5555 fix cursor going to the beginning on undo/redo (#3055)
This commit handles the situations and sets fallback when there are text changes but selection has not been set (for example, its position outside of the doc). It that case we set the cursor in the end of the result string. It helps us to keep the cursor position more consistent.

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-11-11 14:24:29 +03:00
sergeyteleshevandalex f1d1bb2bc2 CB-5691 AI prompt - add shortcut for Translate action (#3059)
* CB-5691 adds ctrl+enter submit for textarea in form

* CB-5691 removes unneeded prop: disableCtrlEnterSubmit

---------

Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
2024-11-11 14:23:27 +03:00
Sychev Andrey c9a87275db CB-3757 fix: change white-space prop (#3065) 2024-11-11 14:21:24 +03:00
Sychev AndreyandDaria Marutkina addeeb0c28 CB-5765 refactor: remove word local from the phrase (#3063)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-08 16:01:12 +01:00
alexandEvgenia 7735550544 CB-5743 add autoGenerated field to api (#3043)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-08 15:59:31 +01:00
Georgii b46bcce0a7 dbeaver/dbeaver-infra#155 add node-modules to exclude (#3057) 2024-11-08 10:51:11 +01:00
fec65a24ea CB-5725 hide desktop handlers in auth dialog (#3052)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-11-07 12:21:10 +01:00
alexandmr-anton-t f75caccb73 CB-5907 add labels to user and team form (#3049)
* CB-5907 add labels to user and team form

* CB-5907 fix structure

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-11-07 13:25:34 +03:00
Alexander Skoblikov 9f7c8bfc59 CB-5912 npe fix (#3053) 2024-11-06 12:37:47 +00:00
Sychev AndreyandDaria Marutkina 33c75c5ee4 CB-5878 add title for inline editor button (#3042)
* CB-5878 add title for inline button

* CB-5878 refactor: change reject to cancel, add other locales

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-11-06 14:41:55 +03:00
sergeyteleshevandEvgenia 30e4e6c9bf CB-5892 removes min fetch size setting (#3039)
* CB-5892 removes min fetch size setting

* CB-5892 edits min fetch to 10

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-06 14:38:57 +03:00
sergeyteleshevandEvgenia 7c8c506870 CB-5290 handles messages and closing for readonly scripts (#3034)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-11-06 14:37:25 +03:00
Serge Rider cd30b32c23 CB-5904 Global project fix (#3048) 2024-11-05 16:59:52 +00:00
Serge Rider 0013507cca dbeaver/dbeaver#23361 Deploy script fix 2024-11-05 14:33:06 +01:00
18cb9e5956 dbeaver/pro#3465 udbt reconnect improve (#3029)
* dbeaver/pro#3465 udbt reconnect improve

* dbeaver/pro#3465 Make use of `java.time.Duration` in `PeriodicJob`

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: ShadelessFox <yanuari.channel@gmail.com>
2024-11-05 14:20:06 +01:00
Alexey 22cfdb7b4b fix: vscode workspace launch conf (#3046) 2024-11-05 16:00:39 +03:00
Ainur 4380ac1f3c CB-5738 api for tokens (#3023) 2024-11-05 12:32:08 +00:00
Serge Rider 8d607b8a56 dbeaver/dbeaver#23361 libsql driver (#3044)
* dbeaver/dbeaver#23361 Dependencies

* dbeaver/dbeaver#23361 Add LibSQL to CB CE
2024-11-05 12:50:52 +01:00
DenisSinelnikovandAinur eacb1813a3 CB-5827. Fixed empty delimiter for reverse proxy, get default if empty parameter (#3035)
Co-authored-by: Ainur <59531286+yagudin10@users.noreply.github.com>
2024-11-05 12:12:10 +01:00
Serge Rider b7956830aa Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-11-05 07:57:58 +01:00
Evgenia 897c4e8913 Merge pull request #3041 from dbeaver/EvgeniaBzzz-patch-2
Update CB-2424 README.md
2024-11-04 19:14:05 +03:00
Evgenia 5922a5f7ad Update CB-2424 README.md
link fixed
2024-11-04 19:07:23 +03:00
Daria Marutkina 2af829cc2e CB_2424 update README, add release notes (#3040) 2024-11-04 15:13:43 +03:00
Alexey 80c757f25b dbeaver/dbeaver-vscode#38 feat: navigation tree (#3038)
* dbeaver/dbeaver-vscode#38 feat: navigation tree

* dbeaver/dbeaver-vscode#38 chore: code style

* dbeaver/dbeaver-vscode#38 chore: rename `navRefreshNode` -> `navReloadNode`
2024-11-04 14:36:25 +03:00
Serge Rider a51bb2f4dc dbeaver/pro#3537 24.2.5 version bump 2024-10-30 05:43:23 +01:00
Serge Rider e7359b76fe dbeaver/pro#3537 24.2.5 version bump 2024-10-29 23:33:18 +01:00
alexandDaria Marutkina 2f120d6a4f Cb 5819 administration tables redesign (#3033)
* CB-5819 add user panel

* CB-5819 redesign teams

* CB-5819 remove extra styles

* CB-5819 review fixes

* CB-5819 revert group title

* CB-5819 remove code duplication

* CB-5819 fix import

* CB-5819 move user table loader

* CB-5819 keep loader mounted

* CB-5819 truncate titles

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-29 20:43:36 +01:00
Ainur d3be30f55b CB-5623 fix npe (#3030) 2024-10-29 16:12:10 +00:00
alexandDaria Marutkina 2c7df05c45 CB-3446 add d3 imports (#3025)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-29 10:05:46 +03:00
Ainur 11167d5802 CB-5683 change password for disabled user fix (#3032) 2024-10-28 15:24:38 +00:00
sergeyteleshevandDaria Marutkina 4cfb27b33b CB-5645 [EE\AWS] Change the instruction in the Version update tab (#3017)
* CB-5645 adds core-links and GithubLinks

* CB-5645 adds BaseUpdate instruction to EE, TE, AWS

* CB-5645 pr fixes

* CB-5645 REVERT IT (need for tests)

* Revert "CB-5645 REVERT IT (need for tests)"

This reverts commit 6c53b907c7.

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-25 13:17:30 +03:00
sergeyteleshevandEvgenia 0126b204c0 CB-5566 fixes checkboxes for tables (#3026)
Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-24 18:34:41 +03:00
alexandDaria Marutkina 6dbcfe408e CB-5745 explicitly set word break on field description (#3027)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-24 14:31:02 +02:00
Serge Rider de2d9f029f CB-5732 Navigator filters fix for optional nodes (#3024) 2024-10-24 12:33:34 +02:00
Elizabeth 2f895f6dab dbeaver/pro#3419 Don't load additional info on typing with auto activation of completion (#3022) 2024-10-24 12:10:08 +02:00
sergeyteleshevandDaria Marutkina c7af629d8a CB-5712 adds loaders for administration menu items (#3011)
* CB-5712 adds loaders for administration menu items

* CB-5712 pr fixes

* CB-5712 pr fix for preloading serverConfigResource in constructor

* CB-5712 removes preload from AuthProviderResource

---------

Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-24 11:04:23 +03:00
sergeyteleshevandmr-anton-t 1782ce45a7 CB-5793 removes extra space for table cells (#3013)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-24 11:04:00 +03:00
51e0218682 CB-5575 pass column key along with row (#3004)
* CB-5575 pass column key along with row

* CB-5575 change arg

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-24 11:03:30 +03:00
Ainur e08353f13f CB-5792 add header for static content (#3018) 2024-10-23 15:46:26 +00:00
AinurandDenisSinelnikov 383952c60e CB-5838 check all row identifiers fix (#3014)
Co-authored-by: DenisSinelnikov <142215442+DenisSinelnikov@users.noreply.github.com>
2024-10-23 15:45:13 +00:00
alexandDaria Marutkina 5282175b7c CB-5701 allow to choose provider by keyboard (#3008)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-22 13:21:49 +03:00
alexandDaria Marutkina b4db34ea48 CB-5706 do not increase height (#3002)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-21 13:25:10 +03:00
Evgenia 9672e5b3b4 Merge pull request #3015 from dbeaver/EvgeniaBzzz-patch-1
Update README.md - CB RN 24.2.3
2024-10-21 12:27:20 +03:00
Evgenia 48a7a4f806 Update README.md - RN 24.3.2 2024-10-21 12:16:04 +03:00
Anastasiya cbceee6ec3 dbeaver/tech-docs#654 update gql comments, remove outdated info (#3012) 2024-10-18 18:38:56 +02:00
sergeyteleshev ffe0a18828 Cb 5757 unit tests for core utils and core blocks (#2961)
* CB-5757 adds unit tests for getDomainFromUrl helper

* CB-5757 adds unit tests for getTextFileReadingProcess helper

* CB-5757 adds unit tests for TextTools helper

* CB-5757 adds unit tests for downloadFromURL helper

* CB-5757 adds unit tests for Deferred and PromiseExecutor

* CB-5757 adds unit tests for core-blocks hooks

* CB-5757 fixes the tests
2024-10-18 08:34:19 +03:00
alex 115cfb3bde Cb 5753 u tests (#2964)
* CB-5753 add localization service test, fix grammar

* CB-5753 add test for the getDomainFromUrl

* CB-5753 add test for the client activity service

* CB-5753 add NodeManagerUtils tests

* CB-5753 add more cases

* CB-5753 pass args correctly
2024-10-18 08:33:39 +03:00
Serge Rider e62538b583 Merge remote-tracking branch 'origin/devel' into devel 2024-10-18 04:49:04 +02:00
sergeyteleshev 5255e9949d CB-5820 fixes frontend build script (#3006)
* CB-5820 fixes frontend build script

* CB-5820 fixes test for windows

* CB-5820 cleanup

* CB-5820 reverts back tests for package
2024-10-17 18:56:24 +03:00
Alexey 8e4faa5935 dbeaver/dbeaver-vscode#42 disable artifacts (#3007) 2024-10-17 14:52:18 +02:00
serge-rider 39ad2994b2 Manifests fix 2024-10-17 10:17:55 +02:00
Serge Rider 00788615e1 Merge remote-tracking branch 'origin/devel' into devel 2024-10-17 07:07:34 +02:00
ac937698bd dbeaver/pro#3393 Add "UDBT" feature (#3000)
Co-authored-by: Serge Rider <serge@jkiss.org>
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-10-16 10:33:25 +02:00
Alexey be88091950 dbeaver/dbeaver-devops#1525 update ci workflows (#2998)
* dbeaver/dbeaver-devops#1525 update ci workflows

* dbeaver/dbeaver-devops#1525 fix frontend lint

* dbeaver/dbeaver-devops#1525 move checkstyle config from dbeaver repo

* dbeaver/dbeaver-devops#1525 use own maven setup action

* dbeaver/dbeaver-devops#1525 reuse workflows

* dbeaver/dbeaver-devops#1525 fix concurrency

* dbeaver/dbeaver-devops#1525 fix concurrency
2024-10-16 10:28:44 +02:00
Serge Rider 9dcaec0c09 Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-10-16 07:01:46 +02:00
f677f48890 CB-5710 return anonymous user info (#2972)
* CB-5710 return anonymous user info

* CB-5710 support anonymous user

* CB-5710 anonymous access disabled active user fix

* CB-5710 simplify logic

* CB-5710 fix error messages

* CB-5710 review fixes

* CB-5710 add computed

* CB-5710 change getters to methods

* CB-5710 fixes after review

---------

Co-authored-by: naumov <iamemptyhuh@gmail.com>
Co-authored-by: alex <48489896+devnaumov@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: Serge Rider <serge@jkiss.org>
2024-10-16 07:01:37 +02:00
Serge Rider a44cadbb8a Merge branch 'devel' of https://github.com/dbeaver/cloudbeaver into devel 2024-10-16 06:46:59 +02:00
5c992dc8ee CB-5811 applies new design styles for selects, textareas with disabled or readonly prop (#2999)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-16 06:46:55 +02:00
Serge Rider 05f85db7e6 dbeaver/pro#3468 24.2.4 version bump 2024-10-15 20:37:32 +02:00
DenisSinelnikov 94ea41c2c9 CB-5234. Refactor after review, move logic for PRO products (#2990) 2024-10-15 10:00:58 +00:00
Ainur d49342ce48 CB-5713 fix action links (#2991) 2024-10-15 09:25:47 +00:00
Alexander Skoblikov 21fe547dcd CB-5424 QM cleanup job (#2987) 2024-10-15 09:25:12 +00:00
67c54d29eb CB-5205 fix: connection view switching (#2984)
* CB-5205 fix: connection view switching

* CB-5205 fix: tabs synchronization

* CB-5205 fix: connection sync

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-15 11:57:53 +03:00
alexandEvgenia 7427543b7f CB-5760 add title to driver manager form (#2995)
* CB-5760 add title to driver manager form

* CB-5760 move hotkeys hook to core-blocks

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-14 20:32:37 +03:00
sergeyteleshevandmr-anton-t 439c806020 CB-5810 fixes cell edit styles (#2996)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-14 16:51:16 +03:00
a4bb23b21e CB-5749 fix: metadata table loading (#2960)
* CB-5749 fix: metadata table loading

* CB-5749 fix: offset pagination range expand function

* CB-5205 fix: connection view switching

* Revert "CB-5205 fix: connection view switching"

This reverts commit e06c039fdd.

* CB-5749 fix: prevent page offset overflow

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-14 12:46:52 +03:00
sergeyteleshev fd711b055c CB-5806 The AWS switch does not work in the settings (#2994) 2024-10-12 00:23:22 +08:00
Ainur c6626f4364 CB-5802 fix build (#2993) 2024-10-11 11:58:42 +00:00
Ainur d44c9f3863 CB-5671 update db2-i driver (#2986) 2024-10-11 10:52:06 +00:00
Ainur ea055fde49 CB-5693 update protobuf version (#2958) 2024-10-11 10:49:59 +00:00
Alexey 3d8dc7d3d2 CB-5578 dm ability to remove custom certificate (#2975) 2024-10-11 09:35:49 +00:00
sergeyteleshevandmr-anton-t eb41e6156a Cb 5728 update frontend dependencies (#2970)
* CB-5728 updates dependencies without react-data-grid

* CB-5728 updates react-data-grid library

* CB-5728 updates dependencies after react-data-grid updation

* CB-5728 fixes align in cells for react-data-grid

---------

Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-11 11:54:13 +03:00
c7fa466509 CB-5707 Change font size in dialogs (#2973)
* CB-5707 increases text size to confirmation dialog title

* CB-5707 fixes headerTitle with composes styles

* CB-5707 fixes dialogBodyContent with composes styles

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-11 11:52:55 +03:00
Serge Rider f475c71311 Dbeaver/pro#3420 Use long for serialization of configs 2024-10-11 06:20:32 +02:00
Serge Rider 6220df4845 dbeaver/pro#3420 Gson refactoring (#2965) 2024-10-11 06:04:55 +02:00
sergeyteleshevandkseniaguzeeva 2e5b71e9dd CB-5563 [TE] Change credentials - 'save credentials' is not marked for auth even if it is saved (#2981)
* CB-5563 adds saveCredentials to config when loading DriverInfo during driver authorization

* CB-5640 fixes save creds checkbox state for SSL

* Revert "CB-5640 fixes save creds checkbox state for SSL"

This reverts commit e25fc3b5d4.

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-10-10 18:38:54 +03:00
sergeyteleshevandEvgenia 1a5192815c CB-5640-update-fileds-ui-for-dark-and-light-themes (#2985)
* CB-5640 adds colors to inputs according to design (disabled, readonly)

* CB-5640 merges disable logic into readonly

* CB-5640 adds aria-disabled prop and styles to input

* CB-5640 adds more styles for input

* CB-5640 pr fixes

* CB-5640 reverts logic

* CB-5640 fixes styles

* CB-5640 fixes styles

* CB-5640 merges disable logic into readonly for all of the inputs all over the app

* CB-5640 reverts form-controls styles

* CB-5640 reverts form-controls styles

* CB-5640 makes disabled design according to the figma

* CB-5640 makes checkbox dissapear

* CB-5640 cleanup

---------

Co-authored-by: Evgenia <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-10 17:20:51 +03:00
Anastasiya 3a85f1a4be Update SECURITY.md (#2989)
Add current version
2024-10-10 14:04:33 +02:00
alexandEvgenia Bezborodova 2e5b092ce7 CB-5454 add deprecated message (#2976)
* CB-5454 add deprecated message

* CB-5454 add info icon to connection dialog message

* CB-5454 remove add button

* CB-5454 remove template

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-10 13:46:18 +03:00
DenisSinelnikovandDaria Marutkina 5c92d43c96 CB-5773. Fixed bad performance for databases/table e.t.c if too many tables included (#2977)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-10 10:29:57 +02:00
Alexander Skoblikovandkseniaguzeeva 8b54e3177e CB-5717 npe fix (#2968)
Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
2024-10-09 10:18:48 +00:00
sergeyteleshevandEvgenia Bezborodova a4c36247fa CB-5767 Easy-config - server configuration fields respond to Enter key press (#2980)
* CB-5767 makes config wizzard go next item when confirming serverConfig form

* CB-5767 removes extra handleEnter for button click enter

---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-09 13:08:42 +03:00
AinurandEvgenia Bezborodova 2698e713a7 CB-5653 accessible connections events fix (#2971)
---------

Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-09 10:07:39 +00:00
alex a48097ec25 CB-5746 clean -> clear (#2978) 2024-10-08 18:51:15 +03:00
Alexander Skoblikovandmr-anton-t 8c30761caa dbeaver/dbeaver-vscode#19 map custom folder as project in vc code product (#2963)
Co-authored-by: mr-anton-t <42037741+mr-anton-t@users.noreply.github.com>
2024-10-08 12:22:13 +02:00
Serge Rider 9103b28e72 dbeaver/dbeaver-vscode#36 API server build (#2967)
* dbeaver/dbeaver-vscode#36 API server build

* dbeaver/dbeaver-vscode#36 API server build
2024-10-08 12:21:22 +02:00
Alexey e45f077bfa Revert "CB-5578 DM: Ability to remove custom certificate (#2899)" (#2974)
This reverts commit fb1b2b21ed.
2024-10-08 13:11:22 +03:00
fb1b2b21ed CB-5578 DM: Ability to remove custom certificate (#2899)
* CB-5578 handles url for redirect after custom domain is being deleted

* CB-5578 reverts isValidUrl

* CB-5578 pr fixes

* CB-5578 fixes for QA

* CB-5578 fixes for redirect on server url in custom certificate deletion

* CB-5578 fix import

* CB-5578 creates isValidServer file

* CB-5578 allow any protocol server url but redirect on https only

* CB-5578 fix error message in details popup

* СB-removes unneeded tranlsation

* CB-5578 pr fixes

* CB-5578 dm fix for deletion of custom certificate

* CB-5578 fix get https url helper

* CB-5578 cleanup

* CB-5578 adds status message for custom certificate deletion

* CB-5578 sends server url without protocol while custom certificate deletion

* CB-5578 pr fixes

* CB-5578 adds loader to the deletion of custom certificate

---------

Co-authored-by: kseniaguzeeva <112612526+kseniaguzeeva@users.noreply.github.com>
Co-authored-by: Ainur <ainur.iagudin@dbeaver.com>
Co-authored-by: Evgenia Bezborodova <139753579+EvgeniaBzzz@users.noreply.github.com>
2024-10-08 13:05:34 +03:00
2a1adc1374 CB-5052 [2562 FR] Highlight the row where any field is currently selected (#2952)
* CB-5052-2562 adds background for selected row

* CB-5052-2562 fixes background for selected row

* CB-5052-2562 moves style var

* CB-5052 pr fixes

* CB-5052 fixes color for selection

* CB-5052 fixes color for selection 2

* CB-5052 adds themes and fixes actions styles for focused cursor in table

* CB-5052 reverts theme for data grid. plus replaces selected row style

* CB-5052 cleanup

* CB-5052 cleanup

* CB-5052 makes selected tab blue

* CB-5052 reverts refresh button colors

* CB-5052 fixes unneeded border left

---------

Co-authored-by: Alexey <wrouds@gmail.com>
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-08 12:56:40 +03:00
alexandDaria Marutkina c46e9343ac CB-5746 rename buttons (#2959)
Co-authored-by: Daria Marutkina <125263541+dariamarutkina@users.noreply.github.com>
2024-10-08 11:44:39 +02:00
Alexander Skoblikov 16cd103585 CB-5615 dynamic cookie lifetime (#2956)
* CB-5615 dynamic cookie lifetime
2024-10-07 16:20:48 +00:00
Alexander Skoblikov 0850b2d94f CB-5390 use remote file system for storage (#2945)
* CB-5390 wip

* CB-5390 wip

* CB-5390 review fixes

* CB-5390 fix conflicts
2024-10-07 18:15:45 +02:00
Daria Marutkina 2c2a1dfed6 Merge pull request #2966 from dbeaver/dariamarutkina-patch-2
CB_2422 chore: update README
2024-10-07 10:59:48 +02:00
Daria Marutkina 37abea3f44 CB_2422 chore: update README 2024-10-07 10:56:48 +02:00
serge-rider 0e32052b24 dbeaver/pro#3398 Version 24.2.3 bump 2024-10-01 19:17:52 +02:00
3937 changed files with 122240 additions and 71986 deletions
-29
View File
@@ -1,29 +0,0 @@
---
name: Bug report
about: Create a report to help us improve CloudBeaver
title: ''
labels: bug, wait for review
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here, e.g. error log.
+61
View File
@@ -0,0 +1,61 @@
name: 🐛 Bug Report
description: Create a report to help us improve our product
labels: [wait for review]
type: Bug
body:
- type: markdown
attributes:
value: |
Thank you for reporting a bug in CloudBeaver!
To ensure we can address the issue as quickly and efficiently as possible, please provide as much detail as you can in the fields below.
- type: textarea
id: description
attributes:
label: Description
description: |
A clear and concise description of the issue being addressed.
- Describe the actual problematic behavior.
- Ensure private information is redacted.
- Include console output or log files if relevant.
- If applicable, add screenshots or screen recordings to help explain your problem.
placeholder: |
Please enter a description of the issue. Here you can also attach log files, screenshots or a video
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: Describe the steps to reproduce the bug
placeholder: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
- type: textarea
id: expected
attributes:
label: Expected/Desired Behavior
description: |
A clear and concise description of what happens in the software **after** a fix is created and merged.
validations:
required: true
- type: input
id: version
attributes:
label: CloudBeaver Version
description: What version of CloudBeaver are you running?
placeholder: ex. CloudBeaver Community 25.0.0
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional context
description: Any additional context about the environment
placeholder: |
Example:
1. OS: [e.g. iOS, Ubuntu, Windows 11]
2. Browser: [e.g. Chrome, Safari]
validations:
required: false
+14
View File
@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Read our documentations
url: https://dbeaver.com/docs/cloudbeaver
about: Many articles about product deployment and features.
- name: Try advanced database management features in DBeaver PRO or CloudBeaver EE
url: https://dbeaver.com/download/?utm_source=github&utm_medium=social&utm_campaign=issue
about: Download a 14-day free trial on dbeaver.com. No credit card is needed.
- name: Learn how to use CloudBeaver effectively with our tutorial videos
url: https://www.youtube.com/channel/UC-yOjsQLSaJVEghg6UB3N7A
about: Subscribe to our YouTube channel and watch new tutorials every week.
- name: Follow us on X (ex. Twitter)
url: https://x.com/dbeaver_news
about: Get everyday tips, fresh news, and DBeaver/CloudBeaver feature overviews.
+10 -3
View File
@@ -1,8 +1,9 @@
---
name: Feature request
about: Suggest an idea for CloudBeaver
name: Feature Request
about: Provide a description of your feature request for CloudBeaver. Include the problem you are trying to solve, why it is important, and any specific functionality you believe would improve the platform.
title: ''
labels: feature request, wait for review
labels: wait for review
type: Feature
assignees: ''
---
@@ -12,3 +13,9 @@ A clear and concise description of what the problem is. Ex. I'm always frustrate
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.
+3 -2
View File
@@ -1,8 +1,9 @@
---
name: Question
about: Is there something unclear?
about: Is there something unclear? Ask your question.
title: ''
labels: question, wait for review
labels: wait for review
type: Question
assignees: ''
---
+20 -34
View File
@@ -1,56 +1,42 @@
name: Backend Build
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Allows you to reuse workflows by referencing their YAML files
workflow_call:
jobs:
build-backend:
name: Backend
name: Build
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: actions/checkout@v4
with:
path: cloudbeaver
- name: Set up JDK 17
- name: Clone Deps Repositories
uses: dbeaver/github-actions/clone-repositories@devel
with:
project_deps_path: "./cloudbeaver/project.deps"
- name: Set up JDK 21
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "17"
java-version: "21"
cache: maven
- uses: stCarolas/setup-maven@v5
with:
maven-version: 3.9.0
- name: Give permissions
run: |
sudo chmod 777 ../
shell: bash
- name: Determine branches
id: determine-branch
run: |
echo "pr_branch=${{ github.head_ref }}" >> $GITHUB_ENV
echo "base_branch=${{ github.event.pull_request.base.ref }}" >> $GITHUB_ENV
- name: Clone dbeaver/dbeaver
id: clone-repo
run: |
git clone -b ${{ env.pr_branch }} https://github.com/dbeaver/dbeaver.git ../dbeaver || git clone -b ${{ env.base_branch }} https://github.com/dbeaver/dbeaver.git ../dbeaver
- uses: dbeaver/github-actions/install-maven@devel
- name: Run build script
run: ./build-backend.sh
shell: bash
working-directory: ./deploy
working-directory: ./cloudbeaver/deploy
- name: Archive build artifacts
uses: actions/upload-artifact@v4
with:
name: backend-build-artifacts
path: deploy/cloudbeaver
if-no-files-found: error
# - name: Archive build artifacts
# uses: actions/upload-artifact@v4
# with:
# name: backend-build-artifacts
# path: cloudbeaver/deploy/cloudbeaver
# if-no-files-found: error
-40
View File
@@ -1,40 +0,0 @@
name: Backend Lint
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Allows you to reuse workflows by referencing their YAML files
workflow_call:
inputs:
skip_cache:
required: false
type: string
jobs:
lint:
name: Backend
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Checkout checkstyle config repository
uses: actions/checkout@v4
with:
repository: dbeaver/dbeaver
path: dbeaver-config
- name: Copy checkstyle config
run: cp dbeaver-config/dbeaver-checkstyle-config.xml ./dbeaver-checkstyle-config.xml
- name: Remove checkstyle config directory
run: rm -rf dbeaver-config
- uses: dbelyaev/action-checkstyle@master
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
reporter: github-pr-review
filter_mode: diff_context
checkstyle_config: ./dbeaver-checkstyle-config.xml
fail_on_error: true
+7 -50
View File
@@ -1,57 +1,14 @@
name: Cleanup checks
name: Cleanup
on:
pull_request:
types: [closed]
push:
branches:
- devel
jobs:
delete-caches:
runs-on: ubuntu-latest
steps:
- name: Cleanup
run: |
gh extension install actions/gh-actions-cache
echo "Fetching list of cache key"
cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 )
## Setting this to not fail the workflow while deleting cache keys.
set +e
echo "Deleting caches..."
for cacheKey in $cacheKeysForPR
do
gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm
done
echo "Done"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
REPO: ${{ github.repository }}
BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge
# delete-docker-image:
# name: Delete Docker Image
# if: github.event.pull_request.merged == true
# runs-on: ubuntu-latest
# steps:
# - name: Check out the repository
# uses: actions/checkout@v4
# - name: Set up Docker Buildx
# uses: docker/setup-buildx-action@v3
# - name: Determine Docker Image Tag
# run: |
# REPO_NAME=$(basename ${{ github.repository }})
# IMAGE_NAME=ghcr.io/${{ github.repository_owner }}/$REPO_NAME
# BRANCH_NAME=${{ github.event.pull_request.head.ref }}
# TAG_NAME=$(echo $BRANCH_NAME | sed 's/[^a-zA-Z0-9._-]/-/g')
# echo "image=$IMAGE_NAME:$TAG_NAME" >> $GITHUB_ENV
# - name: Log in to GitHub Container Registry
# run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.repository_owner }} --password-stdin
# - name: Delete Docker Image
# run: |
# docker rmi ${{ env.image }}
# echo "Deleted image: ${{ env.image }}"
name: Cleanup
uses: dbeaver/dbeaver-common/.github/workflows/cleanup-caches.yml@devel
secrets: inherit
-56
View File
@@ -1,56 +0,0 @@
name: Check
on:
push:
branches:
- devel
pull_request:
branches:
- devel
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
inputs:
skip_cache:
description: "Skip cache restoration"
required: false
default: "false"
jobs:
call-backend-build:
name: Build
uses: ./.github/workflows/backend-build.yml
call-frontend-build:
name: Build
uses: ./.github/workflows/frontend-build.yml
with:
skip_cache: ${{ github.event.inputs.skip_cache }}
call-frontend-lint:
name: Lint
needs: call-frontend-build
uses: ./.github/workflows/frontend-lint.yml
call-backend-lint:
name: Lint
uses: ./.github/workflows/backend-lint.yml
# call-frontend-tests:
# name: Frontend Unit Tests
# needs: call-frontend-build
# runs-on: ubuntu-latest
# steps:
# - name: Check if tests passed
# if: ${{ needs.call-frontend-build.outputs.test-status != 'success' }}
# run: |
# echo "Tests failed"
# exit 1
# - name: Continue if tests passed
# if: ${{ needs.call-frontend-build.outputs.test-status == 'success' }}
# run: echo "Tests passed"
# call-docker-build-and-push:
# name: Run
# needs: [call-backend-build, call-frontend-build]
# uses: ./.github/workflows/docker-build-and-push.yml
+38 -50
View File
@@ -1,9 +1,6 @@
name: Frontend Build
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Allows you to reuse workflows by referencing their YAML files
workflow_call:
outputs:
@@ -14,14 +11,17 @@ on:
description: "Test status"
value: ${{ jobs.frontend-build.outputs.test-status }}
inputs:
skip_cache:
clean-cache:
required: false
type: string
type: boolean
jobs:
frontend-build:
name: Frontend
name: Build
runs-on: ubuntu-latest
timeout-minutes: 10
permissions:
contents: read
outputs:
build-status: ${{ steps.build.outcome }}
@@ -29,63 +29,51 @@ jobs:
defaults:
run:
working-directory: ./webapp
working-directory: ./cloudbeaver/webapp
steps:
- uses: actions/checkout@v4
- name: Checkout cloudbeaver
uses: actions/checkout@v4
with:
path: cloudbeaver
- name: Clone Deps Repositories
uses: dbeaver/github-actions/clone-repositories@devel
with:
project_deps_path: "./cloudbeaver/project.deps"
token: ${{ secrets.DEVOPS_ISSUE_RO_TOKEN }}
- run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: yarn
cache-dependency-path: webapp/yarn.lock
- name: restore node_modules
uses: actions/cache@v4
with:
path: "**/node_modules"
key: ${{ runner.os }}-node_modules-${{ hashFiles('webapp/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node_modules-
node-version: "lts/*"
cache: "yarn"
cache-dependency-path: |
cloudbeaver/webapp/yarn.lock
- name: restore typescript cache
uses: actions/cache@v4
with:
path: "**/packages/*/dist"
key: ${{ runner.os }}-dist-${{ hashFiles('webapp/yarn.lock') }}
path: |
"cloudbeaver/webapp/common-*/**/*/lib"
"cloudbeaver/webapp/**/packages/*/dist"
key: ${{ runner.os }}-dist-${{ hashFiles('cloudbeaver/webapp/yarn.lock') }}
restore-keys: |
${{ runner.os }}-dist-
- name: yarn clean
if: env.skip_cache == 'true'
uses: borales/actions-yarn@v5
with:
dir: webapp
cmd: clean
- if: inputs.clean-cache
run: yarn clear
- name: yarn install --frozen-lockfile
uses: borales/actions-yarn@v5
with:
dir: webapp
cmd: install
- run: yarn install --immutable
- name: build
id: build
uses: borales/actions-yarn@v5
with:
dir: webapp/packages/product-default
cmd: bundle
- run: yarn bundle
working-directory: ./cloudbeaver/webapp/packages/product-default
- name: test
id: test
uses: borales/actions-yarn@v5
with:
dir: webapp
cmd: test
- run: yarn test
- name: Archive build artifacts
uses: actions/upload-artifact@v4
with:
name: frontend-build-artifacts
path: webapp/packages/product-default/lib
if-no-files-found: error
# - name: Archive build artifacts
# uses: actions/upload-artifact@v4
# with:
# name: frontend-build-artifacts
# path: webapp/packages/product-default/lib
# if-no-files-found: error
+29 -28
View File
@@ -1,45 +1,46 @@
name: Frontend Lint
on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Allows you to reuse workflows by referencing their YAML files
workflow_call:
jobs:
lint:
name: Frontend
name: Lint
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: read
defaults:
run:
working-directory: ./cloudbeaver/webapp
steps:
- uses: actions/checkout@v4
- name: Checkout cloudbeaver
uses: actions/checkout@v4
with:
path: cloudbeaver
- run: corepack enable
- uses: actions/setup-node@v4
with:
node-version: "20"
cache: yarn
cache-dependency-path: webapp/yarn.lock
node-version: "lts/*"
cache: "yarn"
cache-dependency-path: "./cloudbeaver/webapp/yarn.lock"
- name: restore node_modules
uses: actions/cache@v4
with:
path: "**/node_modules"
key: ${{ runner.os }}-node_modules-${{ hashFiles('webapp/yarn.lock') }}
restore-keys: |
${{ runner.os }}-node_modules-
# - run: yarn install --immutable
# working-directory: ./cloudbeaver/webapp/common-typescript
- name: yarn install --frozen-lockfile
uses: borales/actions-yarn@v5
with:
dir: webapp
cmd: install
# - run: yarn install --immutable
# working-directory: ./cloudbeaver/webapp/common-react
- name: Lint
uses: reviewdog/action-eslint@v1
with:
reporter: github-pr-review
filter_mode: file
workdir: webapp
fail_on_error: true
eslint_flags: "--ext .ts,.tsx"
- run: |
yarn install --immutable
git fetch origin "${{ github.base_ref }}" --depth=1
FILES=$(git diff --name-only 'origin/${{ github.base_ref }}' ${{ github.sha }} -- . | sed 's|^webapp/||')
if [ -n "$FILES" ]; then
yarn lint --pass-on-no-patterns --no-error-on-unmatched-pattern $FILES
else
echo "No files to lint"
fi
+64
View File
@@ -0,0 +1,64 @@
name: CI
on:
pull_request:
types:
- opened
- synchronize
- reopened
push:
branches: [devel]
concurrency:
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.pull_request.number || github.ref_name }}
cancel-in-progress: true
jobs:
build-server:
uses: dbeaver/dbeaver-common/.github/workflows/mvn-package.yml@devel
name: Check
secrets: inherit
with:
mvn-args: -Dplain-api-server -Dheadless-platform
project-directory: ./cloudbeaver/server/product/aggregate
project-deps: ./cloudbeaver/project.deps
timeout-minutes: 5
# build-server:
# name: Server
# uses: ./.github/workflows/backend-build.yml
# secrets: inherit
build-frontend:
name: Frontend
uses: ./.github/workflows/frontend-build.yml
secrets: inherit
lint-server:
name: Server
uses: dbeaver/dbeaver-common/.github/workflows/java-checkstyle.yml@devel
secrets: inherit
lint-frontend:
name: Frontend
uses: ./.github/workflows/frontend-lint.yml
secrets: inherit
# call-frontend-tests:
# name: Frontend Unit Tests
# needs: call-frontend-build
# runs-on: ubuntu-latest
# steps:
# - name: Check if tests passed
# if: ${{ needs.call-frontend-build.outputs.test-status != 'success' }}
# run: |
# echo "Tests failed"
# exit 1
# - name: Continue if tests passed
# if: ${{ needs.call-frontend-build.outputs.test-status == 'success' }}
# run: echo "Tests passed"
# call-docker-build-and-push:
# name: Run
# needs: [call-backend-build, call-frontend-build]
# uses: ./.github/workflows/docker-build-and-push.yml
+5 -1
View File
@@ -40,7 +40,11 @@ server/test/io.cloudbeaver.test.platform/workspace/.data/
.classpath
.settings/
## Eclipse PDE
*.product.launch
workspace-dev-ce/
deploy/cloudbeaver
server/**/target
apps/**/target
apps/**/target
osgi-cache/
+4 -3
View File
@@ -15,10 +15,11 @@
"streetsidesoftware.code-spell-checker",
"streetsidesoftware.code-spell-checker-russian",
"syler.sass-indented",
"VisualStudioExptTeam.vscodeintellicode",
"github.copilot-chat",
"yzhang.markdown-all-in-one",
"GraphQL.vscode-graphql-syntax",
"mrmlnc.vscode-json5",
"esbenp.prettier-vscode"
"esbenp.prettier-vscode",
"devnaumov.licensify"
]
}
}
+3 -3
View File
@@ -8,7 +8,7 @@
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}/..",
"outFiles": [
"${workspaceFolder}/../cloudbeaver/packages/**/dist/**/*.{js,jsx}"
"${workspaceFolder}/../cloudbeaver/webapp/packages/**/dist/**/*.{js,jsx}"
],
"smartStep": true,
"sourceMaps": true,
@@ -18,7 +18,7 @@
{
"type": "java",
"name": "CloudBeaver CE Server",
"cwd": "${workspaceFolder}/../opt/cbce",
"cwd": "${workspaceFolder}/../dbeaver-workspace/app-workspace/cbce",
"request": "launch",
"mainClass": "org.jkiss.dbeaver.launcher.DBeaverLauncher",
"args": [
@@ -48,7 +48,7 @@
"-Declipse.pde.launch=true",
"-XstartOnFirstThread",
"-Dfile.encoding=UTF-8",
"--add-modules=ALL-SYSTEM",
"--add-modules=ALL-DEFAULT",
"--add-opens=java.base/java.io=ALL-UNNAMED",
"--add-opens=java.base/java.lang=ALL-UNNAMED",
"--add-opens=java.base/java.lang.reflect=ALL-UNNAMED",
-15
View File
@@ -1,15 +0,0 @@
{
"license": {
"scope": "typescript,typescriptreact,javascript,javascriptreact,css,scss",
"prefix": "license",
"body": [
"/*",
" * CloudBeaver - Cloud Database Manager",
" * Copyright (C) 2020-2024 DBeaver Corp and others",
" *",
" * Licensed under the Apache License, Version 2.0.",
" * you may not use this file except in compliance with the License.",
" */"
]
}
}
+9 -11
View File
@@ -2,19 +2,18 @@
"editor.tabSize": 2,
"editor.formatOnSave": true,
"editor.linkedEditing": true,
"task.autoDetect": "off",
"java.configuration.updateBuildConfiguration": "automatic",
"java.jdt.ls.vmargs": "-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx16G -Xms100m -Xlog:disable",
"java.compile.nullAnalysis.mode": "automatic",
"typescript.preferences.useAliasesForRenames": false,
"typescript.preferences.importModuleSpecifier": "relative",
"typescript.preferences.includePackageJsonAutoImports": "on",
"typescript.preferences.quoteStyle": "single",
"typescript.tsdk": "webapp/node_modules/typescript/lib",
"typescript.tsdk": "webapp/.yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true,
"prettier.prettierPath": "webapp/.yarn/sdks/prettier/index.cjs",
"eslint.nodePath": "webapp/.yarn/sdks",
"eslint.enable": true,
"eslint.validate": [
"javascript",
@@ -22,8 +21,9 @@
"typescript",
"typescriptreact"
],
"eslint.workingDirectories": ["webapp"],
"eslint.workingDirectories": [
"webapp"
],
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
@@ -40,12 +40,10 @@
"[java]": {
"editor.defaultFormatter": "redhat.java"
},
"files.eol": "\n",
"files.associations": {
"*.css": "postcss"
},
"java.checkstyle.configuration": "${workspaceFolder}/../dbeaver/dbeaver-checkstyle-config.xml",
"java.checkstyle.configuration": "${workspaceFolder}/../dbeaver-common/.github/dbeaver-checkstyle-config.xml",
"java.checkstyle.version": "10.12.0"
}
}
+47 -9
View File
@@ -19,6 +19,26 @@
"group": "test",
"args": ["test"]
},
{
"label": "Run Tests Common Typescript",
"type": "shell",
"command": "yarn",
"group": "test",
"args": ["test"],
"options": {
"cwd": "${workspaceFolder}/webapp/common-typescript"
}
},
{
"label": "Run Tests Common React",
"type": "shell",
"command": "yarn",
"group": "test",
"args": ["test"],
"options": {
"cwd": "${workspaceFolder}/webapp/common-react"
}
},
{
"label": "Run DevServer CE",
"group": "build",
@@ -55,10 +75,10 @@
"label": "Build CE",
"type": "shell",
"windows": {
"command": "./build-sqlite.bat"
"command": "./build.bat"
},
"osx": {
"command": "./build-sqlite.sh"
"command": "./build.sh"
},
"options": {
"cwd": "${workspaceFolder}/deploy"
@@ -72,10 +92,10 @@
"label": "Run Backend CE",
"type": "shell",
"windows": {
"command": "./run-server.bat"
"command": "./run-cloudbeaver-server.bat"
},
"osx": {
"command": "./run-server.sh"
"command": "./run-cloudbeaver-server.sh"
},
"options": {
"cwd": "${workspaceFolder}/deploy/cloudbeaver"
@@ -93,20 +113,38 @@
}
},
{
"label": "Update TS references CE",
"label": "Clean CE",
"type": "shell",
"command": "yarn run update-ts-references",
"command": "yarn clear",
"options": {
"cwd": "${workspaceFolder}/webapp"
}
},
{
"label": "Clean CE",
"label": "Add Custom Plugin",
"type": "shell",
"command": "yarn clean",
"command": "yarn run add-plugin",
"options": {
"cwd": "${workspaceFolder}/webapp"
"cwd": "${workspaceFolder}/webapp/packages"
}
},
{
"label": "Run Ui Kit Preview",
"type": "shell",
"command": "yarn",
"options": {
"cwd": "${workspaceFolder}/webapp/common-react/@dbeaver/ui-kit"
},
"args": ["docs"]
},
{
"label": "Run Storybook",
"type": "shell",
"command": "yarn",
"options": {
"cwd": "${workspaceFolder}/webapp/packages/storybook"
},
"args": ["storybook"]
}
],
"inputs": [
+10
View File
@@ -0,0 +1,10 @@
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.{js,json,yml}]
charset = utf-8
indent_style = space
indent_size = 2
@@ -0,0 +1,4 @@
/.yarn/** linguist-vendored
/.yarn/releases/* binary
/.yarn/plugins/**/* binary
/.pnp.* binary linguist-generated
+14
View File
@@ -0,0 +1,14 @@
.yarn/*
!.yarn/patches
!.yarn/plugins
!.yarn/releases
!.yarn/sdks
!.yarn/versions
!.yarn/sdks/**
# Swap the comments on the following lines if you wish to use zero-installs
# In that case, don't forget to run `yarn config set enableGlobalCache false`!
# Documentation here: https://yarnpkg.com/features/caching#zero-installs
#!.yarn/cache
.pnp.*
+5
View File
@@ -0,0 +1,5 @@
{
"recommendations": [
"arcanis.vscode-zipfs"
]
}
+8
View File
@@ -0,0 +1,8 @@
{
"search.exclude": {
"**/.yarn": true,
"**/.pnp.*": true
},
"typescript.tsdk": ".yarn/sdks/typescript/lib",
"typescript.enablePromptUseWorkspaceTsdk": true
}
@@ -0,0 +1,5 @@
# This file is automatically generated by @yarnpkg/sdks.
# Manual changes might be lost!
integrations:
- vscode
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/bin/tsc
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/bin/tsc your application uses
module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsc`));
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/bin/tsserver
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/bin/tsserver your application uses
module.exports = wrapWithUserWrapper(absRequire(`typescript/bin/tsserver`));
@@ -0,0 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsc.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript/lib/tsc.js your application uses
module.exports = wrapWithUserWrapper(absRequire(`typescript/lib/tsc.js`));
@@ -0,0 +1,248 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserver.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
const moduleWrapper = exports => {
return wrapWithUserWrapper(moduleWrapperFn(exports));
};
const moduleWrapperFn = tsserver => {
if (!process.versions.pnp) {
return tsserver;
}
const {isAbsolute} = require(`path`);
const pnpApi = require(`pnpapi`);
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
const isPortal = str => str.startsWith("portal:/");
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
return `${locator.name}@${locator.reference}`;
}));
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
// doesn't understand. This layer makes sure to remove the protocol
// before forwarding it to TS, and to add it back on all returned paths.
function toEditorPath(str) {
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
// We also take the opportunity to turn virtual paths into physical ones;
// this makes it much easier to work with workspaces that list peer
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
// file instances instead of the real ones.
//
// We only do this to modules owned by the the dependency tree roots.
// This avoids breaking the resolution when jumping inside a vendor
// with peer dep (otherwise jumping into react-dom would show resolution
// errors on react).
//
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
if (resolved) {
const locator = pnpApi.findPackageLocator(resolved);
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
str = resolved;
}
}
str = normalize(str);
if (str.match(/\.zip\//)) {
switch (hostInfo) {
// Absolute VSCode `Uri.fsPath`s need to start with a slash.
// VSCode only adds it automatically for supported schemes,
// so we have to do it manually for the `zip` scheme.
// The path needs to start with a caret otherwise VSCode doesn't handle the protocol
//
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
//
// 2021-10-08: VSCode changed the format in 1.61.
// Before | ^zip:/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
// 2022-04-06: VSCode changed the format in 1.66.
// Before | ^/zip//c:/foo/bar.zip/package.json
// After | ^/zip/c:/foo/bar.zip/package.json
//
// 2022-05-06: VSCode changed the format in 1.68
// Before | ^/zip/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
case `vscode <1.61`: {
str = `^zip:${str}`;
} break;
case `vscode <1.66`: {
str = `^/zip/${str}`;
} break;
case `vscode <1.68`: {
str = `^/zip${str}`;
} break;
case `vscode`: {
str = `^/zip/${str}`;
} break;
// To make "go to definition" work,
// We have to resolve the actual file system path from virtual path
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
case `coc-nvim`: {
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
str = resolve(`zipfile:${str}`);
} break;
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
// We have to resolve the actual file system path from virtual path,
// everything else is up to neovim
case `neovim`: {
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
str = `zipfile://${str}`;
} break;
default: {
str = `zip:${str}`;
} break;
}
} else {
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
}
}
return str;
}
function fromEditorPath(str) {
switch (hostInfo) {
case `coc-nvim`: {
str = str.replace(/\.zip::/, `.zip/`);
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
// So in order to convert it back, we use .* to match all the thing
// before `zipfile:`
return process.platform === `win32`
? str.replace(/^.*zipfile:\//, ``)
: str.replace(/^.*zipfile:/, ``);
} break;
case `neovim`: {
str = str.replace(/\.zip::/, `.zip/`);
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
return str.replace(/^zipfile:\/\//, ``);
} break;
case `vscode`:
default: {
return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
} break;
}
}
// Force enable 'allowLocalPluginLoads'
// TypeScript tries to resolve plugins using a path relative to itself
// which doesn't work when using the global cache
// https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
// VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
// TypeScript already does local loads and if this code is running the user trusts the workspace
// https://github.com/microsoft/vscode/issues/45856
const ConfiguredProject = tsserver.server.ConfiguredProject;
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
this.projectService.allowLocalPluginLoads = true;
return originalEnablePluginsWithOptions.apply(this, arguments);
};
// And here is the point where we hijack the VSCode <-> TS communications
// by adding ourselves in the middle. We locate everything that looks
// like an absolute path of ours and normalize it.
const Session = tsserver.server.Session;
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
let hostInfo = `unknown`;
Object.assign(Session.prototype, {
onMessage(/** @type {string | object} */ message) {
const isStringMessage = typeof message === 'string';
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
if (
parsedMessage != null &&
typeof parsedMessage === `object` &&
parsedMessage.arguments &&
typeof parsedMessage.arguments.hostInfo === `string`
) {
hostInfo = parsedMessage.arguments.hostInfo;
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
// The RegExp from https://semver.org/ but without the caret at the start
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
) ?? []).map(Number)
if (major === 1) {
if (minor < 61) {
hostInfo += ` <1.61`;
} else if (minor < 66) {
hostInfo += ` <1.66`;
} else if (minor < 68) {
hostInfo += ` <1.68`;
}
}
}
}
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
return typeof value === 'string' ? fromEditorPath(value) : value;
});
return originalOnMessage.call(
this,
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
);
},
send(/** @type {any} */ msg) {
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
return typeof value === `string` ? toEditorPath(value) : value;
})));
}
});
return tsserver;
};
const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10));
// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well.
// Ref https://github.com/microsoft/TypeScript/pull/55326
if (major > 5 || (major === 5 && minor >= 5)) {
moduleWrapper(absRequire(`typescript`));
}
// Defer to the real typescript/lib/tsserver.js your application uses
module.exports = moduleWrapper(absRequire(`typescript/lib/tsserver.js`));
@@ -0,0 +1,248 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript/lib/tsserverlibrary.js
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
const moduleWrapper = exports => {
return wrapWithUserWrapper(moduleWrapperFn(exports));
};
const moduleWrapperFn = tsserver => {
if (!process.versions.pnp) {
return tsserver;
}
const {isAbsolute} = require(`path`);
const pnpApi = require(`pnpapi`);
const isVirtual = str => str.match(/\/(\$\$virtual|__virtual__)\//);
const isPortal = str => str.startsWith("portal:/");
const normalize = str => str.replace(/\\/g, `/`).replace(/^\/?/, `/`);
const dependencyTreeRoots = new Set(pnpApi.getDependencyTreeRoots().map(locator => {
return `${locator.name}@${locator.reference}`;
}));
// VSCode sends the zip paths to TS using the "zip://" prefix, that TS
// doesn't understand. This layer makes sure to remove the protocol
// before forwarding it to TS, and to add it back on all returned paths.
function toEditorPath(str) {
// We add the `zip:` prefix to both `.zip/` paths and virtual paths
if (isAbsolute(str) && !str.match(/^\^?(zip:|\/zip\/)/) && (str.match(/\.zip\//) || isVirtual(str))) {
// We also take the opportunity to turn virtual paths into physical ones;
// this makes it much easier to work with workspaces that list peer
// dependencies, since otherwise Ctrl+Click would bring us to the virtual
// file instances instead of the real ones.
//
// We only do this to modules owned by the the dependency tree roots.
// This avoids breaking the resolution when jumping inside a vendor
// with peer dep (otherwise jumping into react-dom would show resolution
// errors on react).
//
const resolved = isVirtual(str) ? pnpApi.resolveVirtual(str) : str;
if (resolved) {
const locator = pnpApi.findPackageLocator(resolved);
if (locator && (dependencyTreeRoots.has(`${locator.name}@${locator.reference}`) || isPortal(locator.reference))) {
str = resolved;
}
}
str = normalize(str);
if (str.match(/\.zip\//)) {
switch (hostInfo) {
// Absolute VSCode `Uri.fsPath`s need to start with a slash.
// VSCode only adds it automatically for supported schemes,
// so we have to do it manually for the `zip` scheme.
// The path needs to start with a caret otherwise VSCode doesn't handle the protocol
//
// Ref: https://github.com/microsoft/vscode/issues/105014#issuecomment-686760910
//
// 2021-10-08: VSCode changed the format in 1.61.
// Before | ^zip:/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
// 2022-04-06: VSCode changed the format in 1.66.
// Before | ^/zip//c:/foo/bar.zip/package.json
// After | ^/zip/c:/foo/bar.zip/package.json
//
// 2022-05-06: VSCode changed the format in 1.68
// Before | ^/zip/c:/foo/bar.zip/package.json
// After | ^/zip//c:/foo/bar.zip/package.json
//
case `vscode <1.61`: {
str = `^zip:${str}`;
} break;
case `vscode <1.66`: {
str = `^/zip/${str}`;
} break;
case `vscode <1.68`: {
str = `^/zip${str}`;
} break;
case `vscode`: {
str = `^/zip/${str}`;
} break;
// To make "go to definition" work,
// We have to resolve the actual file system path from virtual path
// and convert scheme to supported by [vim-rzip](https://github.com/lbrayner/vim-rzip)
case `coc-nvim`: {
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
str = resolve(`zipfile:${str}`);
} break;
// Support neovim native LSP and [typescript-language-server](https://github.com/theia-ide/typescript-language-server)
// We have to resolve the actual file system path from virtual path,
// everything else is up to neovim
case `neovim`: {
str = normalize(resolved).replace(/\.zip\//, `.zip::`);
str = `zipfile://${str}`;
} break;
default: {
str = `zip:${str}`;
} break;
}
} else {
str = str.replace(/^\/?/, process.platform === `win32` ? `` : `/`);
}
}
return str;
}
function fromEditorPath(str) {
switch (hostInfo) {
case `coc-nvim`: {
str = str.replace(/\.zip::/, `.zip/`);
// The path for coc-nvim is in format of /<pwd>/zipfile:/<pwd>/.yarn/...
// So in order to convert it back, we use .* to match all the thing
// before `zipfile:`
return process.platform === `win32`
? str.replace(/^.*zipfile:\//, ``)
: str.replace(/^.*zipfile:/, ``);
} break;
case `neovim`: {
str = str.replace(/\.zip::/, `.zip/`);
// The path for neovim is in format of zipfile:///<pwd>/.yarn/...
return str.replace(/^zipfile:\/\//, ``);
} break;
case `vscode`:
default: {
return str.replace(/^\^?(zip:|\/zip(\/ts-nul-authority)?)\/+/, process.platform === `win32` ? `` : `/`)
} break;
}
}
// Force enable 'allowLocalPluginLoads'
// TypeScript tries to resolve plugins using a path relative to itself
// which doesn't work when using the global cache
// https://github.com/microsoft/TypeScript/blob/1b57a0395e0bff191581c9606aab92832001de62/src/server/project.ts#L2238
// VSCode doesn't want to enable 'allowLocalPluginLoads' due to security concerns but
// TypeScript already does local loads and if this code is running the user trusts the workspace
// https://github.com/microsoft/vscode/issues/45856
const ConfiguredProject = tsserver.server.ConfiguredProject;
const {enablePluginsWithOptions: originalEnablePluginsWithOptions} = ConfiguredProject.prototype;
ConfiguredProject.prototype.enablePluginsWithOptions = function() {
this.projectService.allowLocalPluginLoads = true;
return originalEnablePluginsWithOptions.apply(this, arguments);
};
// And here is the point where we hijack the VSCode <-> TS communications
// by adding ourselves in the middle. We locate everything that looks
// like an absolute path of ours and normalize it.
const Session = tsserver.server.Session;
const {onMessage: originalOnMessage, send: originalSend} = Session.prototype;
let hostInfo = `unknown`;
Object.assign(Session.prototype, {
onMessage(/** @type {string | object} */ message) {
const isStringMessage = typeof message === 'string';
const parsedMessage = isStringMessage ? JSON.parse(message) : message;
if (
parsedMessage != null &&
typeof parsedMessage === `object` &&
parsedMessage.arguments &&
typeof parsedMessage.arguments.hostInfo === `string`
) {
hostInfo = parsedMessage.arguments.hostInfo;
if (hostInfo === `vscode` && process.env.VSCODE_IPC_HOOK) {
const [, major, minor] = (process.env.VSCODE_IPC_HOOK.match(
// The RegExp from https://semver.org/ but without the caret at the start
/(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$/
) ?? []).map(Number)
if (major === 1) {
if (minor < 61) {
hostInfo += ` <1.61`;
} else if (minor < 66) {
hostInfo += ` <1.66`;
} else if (minor < 68) {
hostInfo += ` <1.68`;
}
}
}
}
const processedMessageJSON = JSON.stringify(parsedMessage, (key, value) => {
return typeof value === 'string' ? fromEditorPath(value) : value;
});
return originalOnMessage.call(
this,
isStringMessage ? processedMessageJSON : JSON.parse(processedMessageJSON)
);
},
send(/** @type {any} */ msg) {
return originalSend.call(this, JSON.parse(JSON.stringify(msg, (key, value) => {
return typeof value === `string` ? toEditorPath(value) : value;
})));
}
});
return tsserver;
};
const [major, minor] = absRequire(`typescript/package.json`).version.split(`.`, 2).map(value => parseInt(value, 10));
// In TypeScript@>=5.5 the tsserver uses the public TypeScript API so that needs to be patched as well.
// Ref https://github.com/microsoft/TypeScript/pull/55326
if (major > 5 || (major === 5 && minor >= 5)) {
moduleWrapper(absRequire(`typescript`));
}
// Defer to the real typescript/lib/tsserverlibrary.js your application uses
module.exports = moduleWrapper(absRequire(`typescript/lib/tsserverlibrary.js`));
@@ -0,0 +1,32 @@
#!/usr/bin/env node
const {existsSync} = require(`fs`);
const {createRequire, register} = require(`module`);
const {resolve} = require(`path`);
const {pathToFileURL} = require(`url`);
const relPnpApiPath = "../../../../.pnp.cjs";
const absPnpApiPath = resolve(__dirname, relPnpApiPath);
const absUserWrapperPath = resolve(__dirname, `./sdk.user.cjs`);
const absRequire = createRequire(absPnpApiPath);
const absPnpLoaderPath = resolve(absPnpApiPath, `../.pnp.loader.mjs`);
const isPnpLoaderEnabled = existsSync(absPnpLoaderPath);
if (existsSync(absPnpApiPath)) {
if (!process.versions.pnp) {
// Setup the environment to be able to require typescript
require(absPnpApiPath).setup();
if (isPnpLoaderEnabled && register) {
register(pathToFileURL(absPnpLoaderPath));
}
}
}
const wrapWithUserWrapper = existsSync(absUserWrapperPath)
? exports => absRequire(absUserWrapperPath)(exports)
: exports => exports;
// Defer to the real typescript your application uses
module.exports = wrapWithUserWrapper(absRequire(`typescript`));
@@ -0,0 +1,10 @@
{
"name": "typescript",
"version": "5.8.3-sdk",
"main": "./lib/typescript.js",
"type": "commonjs",
"bin": {
"tsc": "./bin/tsc",
"tsserver": "./bin/tsserver"
}
}
+7
View File
@@ -0,0 +1,7 @@
# vscode-java-configs
## FAQ
### Typescript Server crashed 5 times
- Open `.pnp.cjs` and replace `bestCandidate.apiPaths.length === 1` with `bestCandidate.apiPaths.length > 0`
@@ -2,6 +2,6 @@
<?pde version="3.8"?>
<target name="org.jkiss.cloudbeaver.tp">
<locations>
<location path="../dbeaver-workspace/dependencies/plugins" type="Directory"/>
<location path="../../../dbeaver-workspace/dependencies/plugins" type="Directory"/>
</locations>
</target>
</target>
+7
View File
@@ -0,0 +1,7 @@
{
"name": "vscode-java-configs",
"packageManager": "yarn@4.9.2",
"devDependencies": {
"typescript": "^5.8.3"
}
}
+34
View File
@@ -0,0 +1,34 @@
# This file is generated by running "yarn install" inside your project.
# Manual changes might be lost - proceed with caution!
__metadata:
version: 8
cacheKey: 10c0
"typescript@npm:^5.8.3":
version: 5.8.3
resolution: "typescript@npm:5.8.3"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/5f8bb01196e542e64d44db3d16ee0e4063ce4f3e3966df6005f2588e86d91c03e1fb131c2581baf0fb65ee79669eea6e161cd448178986587e9f6844446dbb48
languageName: node
linkType: hard
"typescript@patch:typescript@npm%3A^5.8.3#optional!builtin<compat/typescript>":
version: 5.8.3
resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin<compat/typescript>::version=5.8.3&hash=5786d5"
bin:
tsc: bin/tsc
tsserver: bin/tsserver
checksum: 10c0/39117e346ff8ebd87ae1510b3a77d5d92dae5a89bde588c747d25da5c146603a99c8ee588c7ef80faaf123d89ed46f6dbd918d534d641083177d5fac38b8a1cb
languageName: node
linkType: hard
"vscode-java-configs@workspace:.":
version: 0.0.0-use.local
resolution: "vscode-java-configs@workspace:."
dependencies:
typescript: "npm:^5.8.3"
languageName: unknown
linkType: soft
+51 -39
View File
@@ -1,4 +1,4 @@
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/cloudbeaver-logo.png" align="right" width="250"/>
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/cloudbeaver-logo.png" alt="CloudBeaver logo" align="right" width="250"/>
# CloudBeaver Community
@@ -7,7 +7,7 @@ CloudBeaver is a web server that provides a rich web interface. The server itsel
It is free to use and open-source (licensed under [Apache 2](https://github.com/dbeaver/cloudbeaver/blob/devel/LICENSE) license).
See our [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) for more details.
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/connection-creation-demo.png" width="400"/>
<a><img src="https://github.com/dbeaver/cloudbeaver/wiki/images/connection-creation-demo.png" width="400"/></a>
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/gis-demo.png" width="400"/>
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/data-transfer-demo.png" width="400"/>
<img src="https://github.com/dbeaver/cloudbeaver/wiki/images/sql-editor-demo.png" width="400"/>
@@ -15,7 +15,7 @@ See our [WIKI](https://github.com/dbeaver/cloudbeaver/wiki) for more details.
## Run in Docker
- [Official Docker repository](https://hub.docker.com/r/dbeaver/cloudbeaver)
- [Running instructions](https://github.com/dbeaver/cloudbeaver/wiki/Run-Docker-Container)
- [Deployment instructions](https://github.com/dbeaver/cloudbeaver/wiki/CloudBeaver-Deployment)
## Demo server
@@ -25,43 +25,55 @@ You can see a live demo of CloudBeaver here: https://demo.cloudbeaver.io
## Changelog
### 24.2.1. 2024-09-23
- Chinese localization has been improved (thanks to [cashlifei](https://github.com/cashlifei));
- Environment variables configuration has been improved - now you can configure more variables on the initial stage of the Docker setup;
- SQL Server driver has been updated to version 12.8.0.
### 26.0.0 2026-03-02
### 24.2.0. 2024-09-02
### Changes since 24.1.0:
- General:
- French language support was added (thanks to [matthieukhl](https://github.com/matthieukhl))
- Added the ability to close editor tabs with the middle mouse button
- Added right-click support to open the context menu in the Metadata Editor
- The list of forbidden characters for naming and renaming resource manager files has been updated, and now it includes the following characters: / : " \ ' <> | ? *
- Application cookies security was improved
- Authentication:
- Improved LDAP authentication: added the ability to filter users via service account parameters and ability to specify custom unique user identifiers
- Data Editor:
- Added additional notifications about the restricted operations
- Enhanced IPv6 and DateTime32 data representation for Clickhouse
- Data editing was fixed for DuckDB
- SQL Editor:
- SQL Editor auto-completion was enhanced to get column, table, and function names faster
- Fixed the dollar-quoted string parsing in the SQL Editor for PostgreSQL
- Improved display of the long error messages in the SQL Editor and Log viewer
- Changed the save script icon to a floppy disk for better recognition
- Improved application behavior when closing a connection - open editors won't be closed on disconnect
- Administration:
- Redesigned administration navigation panel - now it is more compact and clear
- Added the ability to change the default commit mode for each connection separately
- Added the ability to configure the server property rootURI parameter (thanks to [arioko](https://github.com/arioko))
- Databases:
- Added the "Keep alive" setting for Db2 LUW and IMB i, Apache Kyuubi, Clickhouse, Firebird, and Trino
- Updated Firebird driver to version 5.0.4
- DDL generation for Oracle Tablespaces was added (thanks to [pandya09](https://github.com/pandya09))
### Changes since 25.3.0:
## Contribution
As a community-driven open-source project, we warmly welcome contributions through GitHub pull requests.
- Security:
- Enforced complete logout and screen data clearance upon session expiration;
- Fixed the high vulnerability (CVE-2026-25639) in the axios library. The library was updated to version 1.13.5.
- Administration:
- Added support for mapping users to CloudBeaver teams based on LDAP memberOf group membership;
- Change the User list settings in the Administration part to show both active and inactive users by default.
- SQL Editor:
- Added support for parameters and variables in queries. This feature allows queries to be reused by changing parameters at execution time. Enabled by default and configurable in personal preferences;
- Added SQL preview to the Bind parameters/variables dialog to review queries with changed values on the fly;
- Enabled Tab key for autocompletion in the SQL Editor alongside the Enter key;
- Added a new setting in the SQL Editor to highlight spaces, tabs, and other whitespace characters to help users read, debug, and maintain their scripts. It is turned off by default and can be configured in personal preferences;
- Dangerous query confirmation is now shown for all DROP statements, not just for tables.
- Data Editor:
- Added ability to automatically generate INSERT, SELECT, DELETE, and UPDATE statements for the selected values;
- Added undo and redo functionality for cell edits, row operations, and other data modifications. Retains the last 50 actions across the Data Editor, result sets, and related panels;
- Added "Use local formatting" setting. Users can choose how to display numbers and dates: using the OS locale, a custom locale, or keeping values unformatted. This formatting applies only to displayed values. Data in the database remains unchanged;
- Added column pinning to keep key columns (e.g., IDs, names) visible while horizontal scrolling through wide tables;
- Added status indicator icon in the top-left corner with tooltips explaining table editability. Indicates presence of primary keys, read-only connection settings, or read-only columns;
- Added shortcut Ctrl/Cmd + . to cancel operations in Data Editor;
- Fixed application freeze in canceling fetch size requests for large tables.
- Navigator tree:
- Added the ability to duplicate connection configuration in the project navigation tree. The "Clone connection" feature is available in the context menu;
- Added the ability for users to configure the Simple or Advanced view in the Navigation tree for all connections or for each connection separately;
- Added the ability to show table objects, such as columns or keys, in the Navigation tree. The setting is disabled by default and can be turned on in the Navigator settings panel;
- Added the ability to rename connections via context menu in the Navigation Tree;
- Added Connection Info tab to display basic information about the current connection for all users.
- General:
- Added support for long polling as a fallback when WebSockets are unavailable or blocked. Ensures reliable communication for metadata updates and SQL execution;
- Extended browser support to versions up to three years old;
- Redesigned the connection configuration page. Reorganized form fields and sections to provide more input space and reduce visual clutter;
- Expanded pointer target areas for icons in the Navigator, editors, and tabs according to the accessibility standards;
- Fixed a keyboard navigation issue for panels to keep the focus inside;
- Renamed "Database Native" authentication type to "Username/password" in the connection dialog;
- Fixed issue where the missing pg_dump utility caused errors during initialization or deployment updates when PostgreSQL was selected as the inner database.
- Databases:
- ClickHouse:
- Updated driver to version 0.9.5
- Added spatial data support
- Fixed an issue with displaying arrays of UUID, IPv4/IPv6, and Map types
- Fixed JSON data type reading
- Resolved an issue with CTE expressions
- DuckDB:
- Updated driver to version 1.4.4.0;
- Added support for the dollar-quoted string syntax for the SQL Editor
- Oracle: Added a new "Set Username to OS_USER" option in the Misc section of Oracle connection settings. Automatically uses the current database username as the operating system user identifier in session metadata when enabled;
- PostgreSQL: Added DDL display support for PostgreSQL policies.
[We are happy to reward](https://dbeaver.com/help-dbeaver/) our most active contributors every major sprint.
The most significant contribution to our code for the major release 24.2.0 was made by:
1. [matthieukhl](https://github.com/matthieukhl)
+4 -3
View File
@@ -9,9 +9,10 @@ currently being supported with security updates.
| ------- | --------- |
| 22.x | yes |
| 23.x | yes |
| 24.x | yes |
## Reporting a Vulnerability
Please report (suspected) security vulnerabilities to devops@dbeaver.com.
You will receive a response from us within 48 hours.
If the issue is confirmed, we will release a patch as soon as possible depending on complexity but historically within a few days.
Please report (suspected) security vulnerabilities to devops@dbeaver.com.
You will receive a response from us within 48 hours.
If the issue is confirmed, we will release a patch as soon as possible, depending on complexity, but historically, within a few days.
@@ -1,24 +1,4 @@
{
"folders": {},
"connections": {
"postgresql-template-1": {
"provider": "postgresql",
"driver": "postgres-jdbc",
"name": "PostgreSQL (Template)",
"save-password": false,
"show-system-objects": false,
"read-only": true,
"template": true,
"configuration": {
"host": "localhost",
"port": "5432",
"database": "postgres",
"url": "jdbc:postgresql://localhost:5432/postgres",
"type": "dev",
"provider-properties": {
"@dbeaver-show-non-default-db@": "false"
}
}
}
}
"folders": {},
"connections": {}
}
+14 -19
View File
@@ -1,8 +1,8 @@
{
server: {
serverPort: "${CLOUDBEAVER_SERVICE_PORT:8978}",
serverPort: "${CLOUDBEAVER_WEB_SERVER_PORT:8978}",
forceHttps: "${CLOUDBEAVER_FORCE_HTTPS:false}",
workspaceLocation: "${CLOUDBEAVER_WORKSPACE_LOCATION:workspace}",
contentRoot: "web",
driversLocation: "drivers",
@@ -10,23 +10,25 @@
rootURI: "${CLOUDBEAVER_ROOT_URI:/}",
serviceURI: "/api/",
supportedHosts: [],
productSettings: {
# Global properties
core.theming.theme: 'light',
core.localization.localization: 'en',
plugin.sql-editor.autoSave: true,
plugin.sql-editor.disabled: false,
core.theming.theme: "${CLOUDBEAVER_CORE_THEMING_THEME:system}",
core.localization.language: "${CLOUDBEAVER_CORE_LOCALIZATION:en}",
plugin.sql-editor.autoSave: "${CLOUDBEAVER_SQL_EDITOR_AUTOSAVE:true}",
plugin.sql-editor.disabled: "${CLOUDBEAVER_SQL_EDITOR_DISABLED:false}",
# max size of the file that can be uploaded to the editor (in kilobytes)
plugin.sql-editor.maxFileSize: 10240,
plugin.log-viewer.disabled: false,
plugin.log-viewer.logBatchSize: 1000,
plugin.log-viewer.maxLogRecords: 2000,
sql.proposals.insert.table.alias: PLAIN
plugin.sql-editor.maxFileSize: "${CLOUDBEAVER_SQL_EDITOR_MAX_FILE_SIZE:10240}",
plugin.log-viewer.disabled: "${CLOUDBEAVER_LOG_VIEWER_DISABLED:false}",
plugin.log-viewer.logBatchSize: "${CLOUDBEAVER_LOG_VIEWER_LOG_BATCH_SIZE:1000}",
plugin.log-viewer.maxLogRecords: "${CLOUDBEAVER_LOG_VIEWER_MAX_LOG_RECORDS:2000}",
sql.proposals.insert.table.alias: "${CLOUDBEAVER_SQL_PROPOSALS_INSERT_TABLE_ALIAS:PLAIN}",
SQLEditor.ContentAssistant.experimental.mode: "${CLOUDBEAVER_SQL_EDITOR_CONTENT_ASSISTANT_EXPERIMENTAL_MODE:NEW}"
},
expireSessionAfterPeriod: "${CLOUDBEAVER_EXPIRE_SESSION_AFTER_PERIOD:1800000}",
bindSessionToIp: "${CLOUDBEAVER_BIND_SESSION_TO_IP:disable}",
develMode: "${CLOUDBEAVER_DEVEL_MODE:false}",
enableSecurityManager: false,
@@ -78,7 +80,6 @@
resourceManagerEnabled: "${CLOUDBEAVER_APP_RESOURCE_MANAGER_ENABLED:true}",
resourceQuotas: {
dataExportFileSizeLimit: "${CLOUDBEAVER_RESOURCE_QUOTA_DATA_EXPORT_FILE_SIZE_LIMIT:10000000}",
resourceManagerFileSizeLimit: "${CLOUDBEAVER_RESOURCE_QUOTA_RESOURCE_MANAGER_FILE_SIZE_LIMIT:500000}",
sqlMaxRunningQueries: "${CLOUDBEAVER_RESOURCE_QUOTA_SQL_MAX_RUNNING_QUERIES:100}",
sqlResultSetRowsLimit: "${CLOUDBEAVER_RESOURCE_QUOTA_SQL_RESULT_SET_ROWS_LIMIT:100000}",
@@ -89,12 +90,6 @@
"local"
],
disabledDrivers: [
"sqlite:sqlite_jdbc",
"h2:h2_embedded",
"h2:h2_embedded_v2",
"clickhouse:yandex_clickhouse"
],
disabledBetaFeatures: [
]
+1
View File
@@ -18,6 +18,7 @@ cd ../..
echo "Pull dbeaver platform"
[ ! -d dbeaver ] && git clone --depth 1 https://github.com/dbeaver/dbeaver.git
[ ! -d dbeaver-common ] && git clone --depth 1 https://github.com/dbeaver/dbeaver-common.git
[ ! -d dbeaver-jdbc-libsql ] && git clone --depth 1 https://github.com/dbeaver/dbeaver-jdbc-libsql.git
cd cloudbeaver/deploy
+3 -3
View File
@@ -3,11 +3,11 @@ set -Eeuo pipefail
echo "Build static content"
mkdir ./cloudbeaver/web
mkdir -p ./cloudbeaver/web
cd ../../cloudbeaver/webapp
yarn
yarn install --immutable
cd ./packages/product-default
yarn run bundle
@@ -28,4 +28,4 @@ echo "Copy static content"
cp -rp ../webapp/packages/product-default/lib/* cloudbeaver/web
echo "Cloudbeaver is ready. Run run-server.sh in cloudbeaver folder to start the server."
echo "Cloudbeaver is ready. Run run-cloudbeaver-server.sh in cloudbeaver folder to start the server."
+22 -7
View File
@@ -20,6 +20,8 @@ echo Pull dbeaver platform
IF NOT EXIST dbeaver git clone https://github.com/dbeaver/dbeaver.git
IF NOT EXIST dbeaver-common git clone https://github.com/dbeaver/dbeaver-common.git
IF NOT EXIST dbeaver-jdbc-libsql git clone https://github.com/dbeaver/dbeaver-jdbc-libsql.git
cd cloudbeaver\deploy
echo Build cloudbeaver server
@@ -41,22 +43,35 @@ copy ..\config\DefaultConfiguration\GlobalConfiguration\.dbeaver\data-sources.js
move drivers cloudbeaver >NUL
echo Build static content
echo "Build static content"
cd ..\
mkdir .\cloudbeaver\web
cd ..\cloudbeaver\webapp
cd ..\webapp
call yarn
call yarn lerna bootstrap
call yarn lerna run bundle --no-bail --stream --scope=@cloudbeaver/product-default &::-- -- --env source-map
cd .\packages\product-default
call yarn run bundle
if %ERRORLEVEL% neq 0 (
echo 'Application build failed'
exit /b %ERRORLEVEL%
)
cd ..\..\
call yarn test
if %ERRORLEVEL% neq 0 (
echo 'Frontend tests failed'
exit /b %ERRORLEVEL%
)
cd ..\deploy
echo Copy static content
echo "Copy static content"
xcopy /E /Q ..\webapp\packages\product-default\lib cloudbeaver\web >NUL
echo Cloudbeaver is ready. Run run-server.bat in cloudbeaver folder to start the server.
echo "Cloudbeaver is ready. Run run-cloudbeaver-server.bat in cloudbeaver folder to start the server."
pause
+4 -5
View File
@@ -5,11 +5,11 @@ MAINTAINER DBeaver Corp, devops@dbeaver.com
ENV DEBIAN_FRONTEND=noninteractive
RUN set -eux; \
apt-get update; \
apt-get update && \
apt-get dist-upgrade -y --no-install-recommends && \
apt-get install -y --no-install-recommends \
# curl required for historical reasons, see https://github.com/adoptium/containers/issues/255
curl \
wget \
# java.lang.UnsatisfiedLinkError: libfontmanager.so: libfreetype.so.6: cannot open shared object file: No such file or directory
# java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager
# https://github.com/docker-library/openjdk/pull/235#issuecomment-424466077
@@ -23,8 +23,7 @@ RUN set -eux; \
tzdata \
# locales ensures proper character encoding and locale-specific behaviors using en_US.UTF-8
locales \
nano \
; \
nano && \
echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
locale-gen en_US.UTF-8; \
rm -rf /var/lib/apt/lists/*
@@ -32,7 +31,7 @@ RUN set -eux; \
ENV LANG=en_US.UTF-8
ENV JAVA_HOME=/opt/java/openjdk
COPY --from=eclipse-temurin:17 $JAVA_HOME $JAVA_HOME
COPY --from=eclipse-temurin:21 $JAVA_HOME $JAVA_HOME
ENV PATH="${JAVA_HOME}/bin:${PATH}"
RUN set -eux; \
+13 -5
View File
@@ -1,13 +1,21 @@
FROM dbeaver/base-java
ARG BASE_JAVA_TAG="stable"
FROM dbeaver/base-java:${BASE_JAVA_TAG}
MAINTAINER DBeaver Corp, devops@dbeaver.com
RUN apt-get update; \
apt-get upgrade -y;
ENV DBEAVER_GID=8978
ENV DBEAVER_UID=8978
RUN groupadd -g $DBEAVER_GID dbeaver && \
useradd -g $DBEAVER_GID -m -u $DBEAVER_UID -s /bin/bash dbeaver
COPY cloudbeaver /opt/cloudbeaver
COPY scripts/launch-product.sh /opt/cloudbeaver/launch-product.sh
EXPOSE 8978
RUN find /opt/cloudbeaver -type d -exec chmod 775 {} \;
WORKDIR /opt/cloudbeaver/
ENTRYPOINT ["./run-server.sh"]
RUN chmod +x "run-cloudbeaver-server.sh" "/opt/cloudbeaver/launch-product.sh"
ENTRYPOINT ["./launch-product.sh"]
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
set -Eeo pipefail
if [[ $# -eq 0 ]] ;
then
set -- "$@" -help
fi
set -- "$@" -cli-mode
source run-cloudbeaver-server.sh "$@"
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# This script is needed to change ownership and run the application as user dbeaver during the upgrade from version 24.2.0
# Change ownership of the WORKDIR to the dbeaver user and group
# Variables DBEAVER_<UID|GID> are defined in the Dockerfile and exported to the runtime environment
# PWD equals WORKDIR value from product Dockerfile
if [ "$(id -u)" -eq 0 ]; then
TARGET_USER=${TARGET_USER:-dbeaver}
TARGET_UID=${TARGET_UID:-$DBEAVER_UID}
TARGET_GID=${TARGET_GID:-$DBEAVER_GID}
chown -R $DBEAVER_UID:$DBEAVER_GID $PWD/workspace
# Execute run-cloudbeaver-server.sh as the dbeaver user with the JAVA_HOME and PATH environment variables
exec su "$TARGET_USER" -c "JAVA_HOME=$JAVA_HOME PATH=$PATH ./run-cloudbeaver-server.sh"
else
exec ./run-cloudbeaver-server.sh
fi
@@ -17,7 +17,7 @@ If Not Defined JAVA_OPTS (
java %JAVA_OPTS% ^
-Dfile.encoding=UTF-8 ^
--add-modules=ALL-SYSTEM ^
--add-modules=ALL-DEFAULT ^
--add-opens=java.base/java.io=ALL-UNNAMED ^
--add-opens=java.base/java.lang=ALL-UNNAMED ^
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED ^
@@ -11,7 +11,7 @@ echo "Starting Cloudbeaver Server"
exec java ${JAVA_OPTS} \
-Dfile.encoding=UTF-8 \
--add-modules=ALL-SYSTEM \
--add-modules=ALL-DEFAULT \
--add-opens=java.base/java.io=ALL-UNNAMED \
--add-opens=java.base/java.lang=ALL-UNNAMED \
--add-opens=java.base/java.lang.reflect=ALL-UNNAMED \
@@ -36,5 +36,6 @@ exec java ${JAVA_OPTS} \
-jar ${launcherJar} \
-product io.cloudbeaver.product.ce.product \
-web-config conf/cloudbeaver.conf \
"$@" \
-nl en \
-registryMultiLanguage
+2 -3
View File
@@ -1,3 +1,2 @@
SET mypath=%~dp0
.\..\idea-rcp-launch-config-generator\runGenerator.cmd -f %mypath%
@echo off
%~dp0\..\idea-rcp-launch-config-generator\runGenerator.cmd -f %~dp0
Regular → Executable
+6 -1
View File
@@ -1 +1,6 @@
./../idea-rcp-launch-config-generator/runGenerator.sh -f "$PWD"
#!/usr/bin/env sh
script_dir="$(realpath "$(dirname "$0")")"
repositories_root_dir="$(realpath "$script_dir/..")"
"$repositories_root_dir"/idea-rcp-launch-config-generator/runGenerator.sh "$script_dir"
+15
View File
@@ -0,0 +1,15 @@
lefthook: |
cd webapp
yarn dlx --quiet lefthook
output: false
pre-commit:
commands:
check-license:
skip:
- merge
- rebase
root: webapp
glob: "*.{ts,tsx}"
exclude:
- "**/locales/**"
run: yarn core-cli-check-license {staged_files}
+12 -8
View File
@@ -5,14 +5,18 @@ featuresPaths=\
bundlesPaths=\
dbeaver-common/modules;\
dbeaver/plugins;\
cloudbeaver/server/bundles;
cloudbeaver/server/bundles;\
dbeaver-jdbc-libsql;\
cloudbeaver/server/test
testLibraries=\
org.junit;\
org.mockito.mockito-core;\
junit-jupiter-api;\
org.opentest4j
org.opentest4j;\
org.hamcrest.core;\
org.hamcrest
repositories=\
https://p2.dev.dbeaver.com/eclipse-repo/;\
https://repo.dbeaver.net/p2/ce/latest/;\
https://download.eclipse.org/releases/${eclipse-version}/;
testBundles=\
org.junit;\
@@ -21,13 +25,13 @@ testBundles=\
org.opentest4j
productsPaths=\
dbeaver/product/community/DBeaver.product;\
cloudbeaver/server/product/web-server/CloudbeaverServer.product:../../opt/cloudbeaver;
cloudbeaver/server/product/web-server/CloudbeaverServer.product:../../opt/cloudbeaver;\
cloudbeaver/server/product/web-server-test/CloudbeaverServerUnitTest.product:../../opt/cloudbeaver;
ideaConfigurationFilesPaths=\
dbeaver/.ide/.idea;
testBundlePaths=\
dbeaver/test;\
cloudbeaver/server/test;
additionalModuleRoots=\
opt;
optionalFeatureRepositories=\
dbeaver/product/repositories
dbeaver/product/repositories
excludeOutputs=\
cloudbeaver/webapp/node_modules
+1
View File
@@ -1,2 +1,3 @@
dbeaver-common
dbeaver-jdbc-libsql
dbeaver
@@ -0,0 +1,13 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Vendor: DBeaver Corp
Bundle-Name: Cloudbeaver Web Model
Bundle-SymbolicName: io.cloudbeaver.model.cli;singleton:=true
Bundle-Version: 1.0.7.qualifier
Bundle-Release-Date: 20260406
Bundle-RequiredExecutionEnvironment: JavaSE-21
Bundle-ActivationPolicy: lazy
Require-Bundle: org.jkiss.dbeaver.model.cli;visibility:=reexport
Export-Package: io.cloudbeaver.model.cli
Automatic-Module-Name: io.cloudbeaver.model.cli
Import-Package: org.slf4j
@@ -0,0 +1,5 @@
source.. = src/
output.. = target/classes/
bin.includes = .,\
META-INF/,\
plugin.xml
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<plugin>
</plugin>
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.cloudbeaver</groupId>
<artifactId>bundles</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../</relativePath>
</parent>
<artifactId>io.cloudbeaver.model.cli</artifactId>
<version>1.0.7-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
@@ -0,0 +1,62 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2026 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.cli;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.cli.ApplicationCommandLine;
import org.jkiss.dbeaver.model.cli.ApplicationInstanceController;
import org.jkiss.dbeaver.model.cli.CLIContextImpl;
import org.jkiss.dbeaver.model.cli.CLIRunMeta;
import picocli.CommandLine;
public class CloudBeaverCommandLine extends ApplicationCommandLine<ApplicationInstanceController> {
private final CloudBeaverMixin mixin;
public CloudBeaverCommandLine() {
super();
this.mixin = new CloudBeaverMixin();
}
public CloudBeaverCommandLine(
@NotNull CloudBeaverMixin mixin
) {
super();
this.mixin = mixin;
}
@Override
protected CloudBeaverTopLevelCommand createTopLevelCommand(
@Nullable ApplicationInstanceController applicationInstanceController,
@NotNull CLIContextImpl context,
@NotNull CLIRunMeta runMeta
) {
return new CloudBeaverTopLevelCommand(applicationInstanceController, context, runMeta);
}
@NotNull
@Override
protected CommandLine initCommandLine(
@Nullable ApplicationInstanceController applicationInstanceController,
@NotNull CLIContextImpl context,
@NotNull CLIRunMeta runMeta
) {
var cmd = super.initCommandLine(applicationInstanceController, context, runMeta);
cmd.addMixin("cloudbeaver", mixin);
return cmd;
}
}
@@ -0,0 +1,54 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.cli;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.cli.ApplicationInstanceController;
import org.jkiss.dbeaver.model.cli.ApplicationInstanceServer;
import org.jkiss.dbeaver.model.cli.CLIProcessResult;
import java.io.IOException;
public class CloudBeaverInstanceServer extends ApplicationInstanceServer<ApplicationInstanceController> {
private final CloudBeaverCommandLine commandLine;
public CloudBeaverInstanceServer() throws IOException {
super(ApplicationInstanceController.class);
this.commandLine = new CloudBeaverCommandLine();
}
public CloudBeaverInstanceServer(@NotNull CloudBeaverCommandLine commandLine) throws IOException {
super(ApplicationInstanceController.class);
this.commandLine = commandLine;
}
@NotNull
@Override
public CLIProcessResult handleCommandLine(@NotNull String[] args) {
try {
return commandLine.executeCommandLineCommands(
this,
false,
false,
args
);
} catch (Exception e) {
return new CLIProcessResult(CLIProcessResult.PostAction.ERROR, "Error executing command: " + e.getMessage());
}
}
}
@@ -0,0 +1,34 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2026 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.cli;
import org.jkiss.dbeaver.model.cli.model.NonExecutableOption;
import picocli.CommandLine;
/**
* CloudBeaver specific mixin options
*/
public class CloudBeaverMixin {
@NonExecutableOption
@CommandLine.Option(
names = {"-web-config"},
arity = "1",
hidden = true,
scope = CommandLine.ScopeType.INHERIT
)
private String webConfig;
}
@@ -0,0 +1,46 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2026 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.cli;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.cli.ApplicationInstanceController;
import org.jkiss.dbeaver.model.cli.CLIContextImpl;
import org.jkiss.dbeaver.model.cli.CLIRunMeta;
import org.jkiss.dbeaver.model.cli.command.AbstractTopLevelCommand;
import org.jkiss.dbeaver.model.cli.model.NonExecutableOption;
import picocli.CommandLine;
@CommandLine.Command(name = "cbvr", description = "CloudBeaver commands")
public class CloudBeaverTopLevelCommand extends AbstractTopLevelCommand {
@NonExecutableOption
@CommandLine.Option(
names = {NOSPASH_OPTION},
hidden = true,
scope = CommandLine.ScopeType.INHERIT
)
private boolean noSplash;
protected CloudBeaverTopLevelCommand(
@Nullable ApplicationInstanceController controller,
@NotNull CLIContextImpl context,
@NotNull CLIRunMeta meta
) {
super(controller, context, meta);
}
}
@@ -0,0 +1,21 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model.cli;
public interface CloudbeaverCliConstants {
String CLI_MODE = "cliMode";
}
@@ -3,11 +3,10 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: DBeaver Corp
Bundle-Name: Cloudbeaver Web Model
Bundle-SymbolicName: io.cloudbeaver.model;singleton:=true
Bundle-Version: 1.0.62.qualifier
Bundle-Release-Date: 20241007
Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-Version: 1.0.98.qualifier
Bundle-Release-Date: 20260406
Bundle-RequiredExecutionEnvironment: JavaSE-21
Bundle-ActivationPolicy: lazy
Bundle-ClassPath: .
Require-Bundle: org.jkiss.dbeaver.data.gis;visibility:=reexport,
org.jkiss.dbeaver.model;visibility:=reexport,
org.jkiss.dbeaver.model.sm;visibility:=reexport,
@@ -15,7 +14,8 @@ Require-Bundle: org.jkiss.dbeaver.data.gis;visibility:=reexport,
org.jkiss.dbeaver.model.nio;visibility:=reexport,
org.jkiss.dbeaver.registry;visibility:=reexport,
org.jkiss.dbeaver.net.ssh,
org.jkiss.bundle.graphql.java;visibility:=reexport,
org.jkiss.bundle.logback;visibility:=reexport,
org.jkiss.bundle.graphql;visibility:=reexport,
org.jkiss.bundle.apache.dbcp,
com.google.gson;visibility:=reexport,
jakarta.servlet-api;bundle-version:="6.0.0";visibility:=reexport
@@ -26,19 +26,22 @@ Export-Package: io.cloudbeaver,
io.cloudbeaver.auth.provider.local,
io.cloudbeaver.auth.provisioning,
io.cloudbeaver.websocket,
io.cloudbeaver.websocket.event.client,
io.cloudbeaver.websocket.event.task,
io.cloudbeaver.model,
io.cloudbeaver.model.app,
io.cloudbeaver.model.config,
io.cloudbeaver.model.apilog,
io.cloudbeaver.model.fs,
io.cloudbeaver.model.log,
io.cloudbeaver.model.rm,
io.cloudbeaver.model.rm.local,
io.cloudbeaver.model.rm.lock,
io.cloudbeaver.model.session,
io.cloudbeaver.model.user,
io.cloudbeaver.model.utils,
io.cloudbeaver.registry,
io.cloudbeaver.server,
io.cloudbeaver.server.filters,
io.cloudbeaver.service,
io.cloudbeaver.service.admin,
io.cloudbeaver.service.security,
@@ -0,0 +1,19 @@
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.osInfo.name=OS
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.memoryAvailable.name=Memory available
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.javaVersion.name=Java version
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.javaParameters.name=JVM parameters
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.productName.name=Product name
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.productVersion.name=Product version
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.workspacePath.name=Workspace path
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.installPath.name=Install path
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.deploymentType.name=Deployment type
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.smDbUrl.name=Security manager database URL
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.smDbDriverName.name=Security manager database driver name
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.smDbProductName.name=Security manager database product name
meta.io.cloudbeaver.model.app.ServletSystemInformationCollector.smDbProductVersion.name=Security manager database product version
meta.io.cloudbeaver.model.WebExpertSettingsProperties.readOnly.name = Read-only connection
meta.io.cloudbeaver.model.WebExpertSettingsProperties.autoCommit.name = Auto-commit
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.name = Keep-alive interval (seconds)
meta.io.cloudbeaver.model.WebExpertSettingsProperties.defaultSchema.name = Default schema
meta.io.cloudbeaver.model.WebExpertSettingsProperties.defaultCatalog.name = Default catalog
@@ -0,0 +1,2 @@
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.name = Garder actif (en secondes)
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.description = Pas de déconnexion automatique
@@ -0,0 +1,5 @@
meta.io.cloudbeaver.model.WebExpertSettingsProperties.readOnly.name = Только для чтения
meta.io.cloudbeaver.model.WebExpertSettingsProperties.autoCommit.name = Авто-коммит
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.name = Интервал Keep-alive (в секундах)
meta.io.cloudbeaver.model.WebExpertSettingsProperties.defaultSchema.name = Схема по умолчанию
meta.io.cloudbeaver.model.WebExpertSettingsProperties.defaultCatalog.name = Каталог по умолчанию
@@ -0,0 +1,4 @@
meta.io.cloudbeaver.model.WebExpertSettingsProperties.readOnly.name = Kết nối chỉ đọc
meta.io.cloudbeaver.model.WebExpertSettingsProperties.autoCommit.name = Tự động commit
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.name = Giữ kết nối (tính bằng giây)
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.description = Không tự động ngắt kết nối
@@ -0,0 +1,3 @@
meta.io.cloudbeaver.model.WebExpertSettingsProperties.autoCommit.name = 自动提交
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.name = 保持连接 (秒)
meta.io.cloudbeaver.model.WebExpertSettingsProperties.keepAliveInterval.description = 无自动断开连接
@@ -2,5 +2,6 @@ source.. = src/
output.. = target/classes/
bin.includes = .,\
META-INF/,\
OSGI-INF/,\
plugin.xml,\
schema/
@@ -4,6 +4,7 @@
<plugin>
<extension-point id="io.cloudbeaver.service" name="Web services" schema="schema/io.cloudbeaver.service.exsd"/>
<extension-point id="io.cloudbeaver.feature" name="Web features" schema="schema/io.cloudbeaver.feature.exsd"/>
<extension-point id="io.cloudbeaver.server.feature" name="Web server features" schema="schema/io.cloudbeaver.server.feature.exsd"/>
<extension-point id="io.cloudbeaver.valueSerializer" name="Web value serializers" schema="schema/io.cloudbeaver.valueSerializer.exsd"/>
<extension-point id="org.jkiss.dbeaver.auth.provider" name="%extension-point.org.jkiss.dbeaver.authProvider.name" schema="schema/org.jkiss.dbeaver.authProvider.exsd"/>
<extension-point id="io.cloudbeaver.metaParameters" name="Meta parameters" schema="schema/io.cloudbeaver.metaParameters.exsd"/>
@@ -24,4 +25,27 @@
label="Default secret controller" description="Default void secret controller"/>
</extension>
<extension point="org.jkiss.dbeaver.ws.event">
<event topicId="cb_session_task" id="cb_session_task_info_updated"
class="io.cloudbeaver.websocket.event.task.WSSessionTaskInfoEvent"/>
<event topicId="cb_session_task" id="cb_session_task_confirmation_request"
class="io.cloudbeaver.websocket.event.task.WSSessionTaskConfirmationRequestEvent"/>
<event topicId="cb_session_task" id="cb_session_task_query_confirmation_request"
class="io.cloudbeaver.websocket.event.task.WSSessionTaskQueryConfirmationRequestEvent"/>
<event topicId="cb_session_task" id="cb_session_task_query_params_confirmation_request"
class="io.cloudbeaver.websocket.event.task.WSSessionTaskQueryParamsConfirmationEvent"/>
<clientEvent id="cb_client_session_ping" class="io.cloudbeaver.websocket.event.client.WSSessionPingClientEvent"/>
<clientEvent id="cb_client_topic_subscribe" class="io.cloudbeaver.websocket.event.client.WSSubscribeOnTopicClientEvent"/>
<clientEvent id="cb_client_topic_unsubscribe"
class="io.cloudbeaver.websocket.event.client.WSUnsubscribeFromTopicClientEvent"/>
<clientEvent id="cb_client_projects_active"
class="io.cloudbeaver.websocket.event.client.WSUpdateActiveProjectsClientEvent"/>
<clientEvent id="cb_client_session_task_confirmation"
class="io.cloudbeaver.websocket.event.client.WSSessionTaskConfirmationEvent"/>
<clientEvent id="cb_client_session_task_with_parameters_confirmation"
class="io.cloudbeaver.websocket.event.client.WSSessionTaskWithParametersConfirmationEvent"/>
</extension>
</plugin>
+1 -1
View File
@@ -10,7 +10,7 @@
<relativePath>../</relativePath>
</parent>
<artifactId>io.cloudbeaver.model</artifactId>
<version>1.0.62-SNAPSHOT</version>
<version>1.0.98-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
@@ -0,0 +1,34 @@
<?xml version='1.0' encoding='UTF-8'?>
<schema targetNamespace="org.jkiss.dbeaver.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appInfo>
<meta.schema plugin="io.cloudbeaver.model" id="io.cloudbeaver.server.feature" name="Web features"/>
</appInfo>
<documentation>
Web feature
</documentation>
</annotation>
<element name="extension">
<annotation>
<appInfo>
<meta.element />
</appInfo>
</annotation>
<complexType>
<sequence>
<element ref="feature"/>
</sequence>
</complexType>
</element>
<element name="feature">
<annotation>
<documentation>
Web service description
</documentation>
</annotation>
</element>
</schema>
@@ -17,18 +17,14 @@
package io.cloudbeaver;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.app.DBPWorkspace;
import org.jkiss.dbeaver.model.auth.SMSessionContext;
import org.jkiss.dbeaver.model.impl.app.BaseProjectImpl;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMControllerProvider;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.rm.RMUtils;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.Pair;
import org.jkiss.dbeaver.model.rm.*;
import java.nio.file.Path;
import java.util.Collection;
public abstract class BaseWebProjectImpl extends BaseProjectImpl implements RMControllerProvider {
@@ -44,11 +40,12 @@ public abstract class BaseWebProjectImpl extends BaseProjectImpl implements RMCo
@NotNull DBPWorkspace workspace,
@NotNull RMController resourceController,
@NotNull SMSessionContext sessionContext,
@NotNull RMProject project
@NotNull RMProject project,
@NotNull Path path
) {
super(workspace, sessionContext);
this.resourceController = resourceController;
this.path = RMUtils.getProjectPath(project);
this.path = path;
this.project = project;
}
@@ -80,6 +77,12 @@ public abstract class BaseWebProjectImpl extends BaseProjectImpl implements RMCo
return project.getId();
}
@NotNull
@Override
public String getDisplayName() {
return getName();
}
@NotNull
@Override
public Path getAbsolutePath() {
@@ -101,47 +104,25 @@ public abstract class BaseWebProjectImpl extends BaseProjectImpl implements RMCo
return false;
}
/**
* Method for Bulk Update of resources properties paths
*
* @param oldToNewPaths collection of OldPath to NewPath pairs
*/
public void moveResourcePropertiesBatch(@NotNull Collection<Pair<String, String>> oldToNewPaths) {
loadMetadata();
synchronized (metadataSync) {
for (var pathsPair : oldToNewPaths) {
final var oldResourcePath = CommonUtils.normalizeResourcePath(pathsPair.getFirst());
final var newResourcePath = CommonUtils.normalizeResourcePath(pathsPair.getSecond());
final var resProps = resourceProperties.remove(oldResourcePath);
if (resProps != null) {
resourceProperties.put(newResourcePath, resProps);
}
}
}
flushMetadata();
@Override
public boolean isPrivateProject() {
return RMProjectType.USER.equals(getRMProject().getType());
}
/**
* Method for Bulk Remove of resources properties
*/
public boolean resetResourcesPropertiesBatch(@NotNull Collection<String> resourcesPaths) {
loadMetadata();
boolean propertiesChanged = false;
synchronized (metadataSync) {
for (var resourcePath : resourcesPaths) {
var removedProperties = resourceProperties.remove(CommonUtils.normalizeResourcePath(resourcePath));
if (removedProperties != null) {
propertiesChanged = true;
}
}
}
if (propertiesChanged) {
flushMetadata();
}
return propertiesChanged;
@Override
public void updateProject(@Nullable String newName, @Nullable String description) throws DBException {
RMProject rmProject = getResourceController().updateProject(this.getId(), new RMProjectInfo(newName, description));
updateProjectInfo(rmProject.getName(), rmProject.getDescription());
}
public Path getMetadataFilePath() {
return getMetadataPath().resolve(METADATA_STORAGE_FILE);
public void updateProjectInfo(@Nullable String newName, @Nullable String description) {
this.project.setName(newName);
this.project.setDescription(description);
RMEventManager.fireEvent(
new RMEvent(
RMEvent.Action.PROJECT_UPDATE,
project
)
);
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -29,7 +29,14 @@ public interface DBWConstants {
String PERMISSION_CONFIGURATION_MANAGER = RMConstants.PERMISSION_CONFIGURATION_MANAGER;
String PERMISSION_PRIVATE_PROJECT_ACCESS = "private-project-access";
String PERMISSION_SECRET_MANAGER = "secret-manager";
String PERMISSION_SQL_RESULT_UPDATE = "sql-result-update";
String PERMISSION_SQL_EXECUTE_QUERY = "sql-execute-query";
String PERMISSION_FS_RESOURCE_EDIT = "fs-resource-edit";
String GLOBAL_PERMISSION_SCRIPT_EXECUTE = "permission.sql.script.execution";
String GLOBAL_PERMISSION_DATA_EDITOR_IMPORT = "permission.data-editor.import";
String GLOBAL_PERMISSION_DATA_EDITOR_EDITING = "permission.data-editor.editing";
String PERMISSION_EDIT_STRUCTURE = "edit-meta";
String PERMISSION_EDIT_DATA = "edit-data";
@@ -41,7 +48,7 @@ public interface DBWConstants {
GLOBAL,
EMBEDDED
}
String TASK_STATUS_FINISHED = "Finished";
//public static final String PERMISSION_USER = "user";
}
@@ -36,4 +36,6 @@ public interface DBWFeatureSet {
boolean isEnabled();
boolean isEnabledByDefault();
}
@@ -22,7 +22,6 @@ import graphql.GraphQLError;
import graphql.language.SourceLocation;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.sql.SQLState;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.CommonUtils;
import java.io.PrintWriter;
@@ -100,7 +99,7 @@ public class DBWebException extends DBException implements GraphQLError {
@Override
public Map<String, Object> getExtensions() {
StringWriter buf = new StringWriter();
GeneralUtils.getRootCause(this).printStackTrace(new PrintWriter(buf, true));
CommonUtils.getRootCause(this).printStackTrace(new PrintWriter(buf, true));
Map<String, Object> extensions = new LinkedHashMap<>();
String stString = buf.toString();
@@ -147,6 +146,8 @@ public class DBWebException extends DBException implements GraphQLError {
} else {
return message;
}
} else if (cause.getMessage() == null && cause.getCause() != null) {
return message + ":\n" + cause.getCause().getClass().getSimpleName();
}
if (CommonUtils.isEmpty(message)) {
if (cause.getMessage() != null) {
@@ -0,0 +1,115 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver;
import io.cloudbeaver.model.WebConnectionConfig;
import io.cloudbeaver.model.app.WebAppConfiguration;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.utils.ServletAppUtils;
import io.cloudbeaver.utils.WebDataSourceUtils;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.connection.DBPConnectionConfiguration;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.utils.CommonUtils;
public class WebConnectionConfigInputHandler<T extends WebConnectionConfig, C extends DataSourceDescriptor> {
private static final Log log = Log.getLog(WebConnectionConfigInputHandler.class);
protected final T input;
protected final DBPDataSourceRegistry registry;
protected final WebSession webSession;
public WebConnectionConfigInputHandler(@NotNull WebSession webSession, @NotNull DBPDataSourceRegistry registry, T configInput) {
this.webSession = webSession;
this.registry = registry;
this.input = configInput;
}
public C createDataSourceContainer() throws DBWebException {
String driverId = input.getDriverId();
if (CommonUtils.isEmpty(driverId)) {
throw new DBWebException("Driver must be specified");
}
DBPDriver driver = WebDataSourceUtils.getDriverById(driverId);
C newDataSource = createDataSourceContainerFromInput(driver);
if (ServletAppUtils.getServletApplication().getAppConfiguration() instanceof WebAppConfiguration webAppConfiguration) {
newDataSource.setNavigatorSettings(webAppConfiguration.getDefaultNavigatorSettings());
}
WebDataSourceUtils.saveAuthProperties(
webSession.getProgressMonitor(),
newDataSource,
newDataSource.getConnectionConfiguration(),
input.getCredentials(),
input.isSaveCredentials(),
input.isSharedCredentials()
);
return newDataSource;
}
public void updateDataSource(@NotNull C dataSource) throws DBWebException {
dataSource.setId(dataSource.getId());
if (!CommonUtils.isEmpty(input.getName())) {
dataSource.setName(input.getName());
}
if (input.getDescription() != null) {
dataSource.setDescription(input.getDescription());
}
dataSource.setFolder(input.getFolder() != null ? registry.getFolder(input.getFolder()) : null);
if (input.isDefaultAutoCommit() != null) {
dataSource.getConnectionConfiguration().getBootstrap().setDefaultAutoCommit(input.isDefaultAutoCommit());
}
WebDataSourceUtils.setConnectionConfiguration(
dataSource.getDriver(),
dataSource.getConnectionConfiguration(),
input
);
WebDataSourceUtils.saveAuthProperties(
webSession.getProgressMonitor(),
dataSource,
dataSource.getConnectionConfiguration(),
input.getCredentials(),
input.isSaveCredentials(),
input.isSharedCredentials()
);
dataSource.setConnectionReadOnly(input.isReadOnly());
}
@NotNull
protected C createDataSourceContainerFromInput(@NotNull DBPDriver driver) {
DBPConnectionConfiguration dsConfig = new DBPConnectionConfiguration();
WebDataSourceUtils.setConnectionConfiguration(driver, dsConfig, input);
C newDataSource = registry.createDataSource(driver, dsConfig);
newDataSource.setSavePassword(true);
newDataSource.setName(CommonUtils.notNull(input.getName(), "NewConnection"));
newDataSource.setDescription(input.getDescription());
newDataSource.setConnectionReadOnly(input.isReadOnly());
if (input.getFolder() != null) {
newDataSource.setFolder(registry.getFolder(input.getFolder()));
}
return newDataSource;
}
}
@@ -0,0 +1,55 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver;
import io.cloudbeaver.model.session.WebSession;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPEvent;
import org.jkiss.dbeaver.model.DBPEventListener;
import org.jkiss.dbeaver.model.websocket.event.datasource.WSDataSourceConnectEvent;
/**
* Sends a WebSocket event when a data source is connected.
*/
public class WebDataSourceConnectEventListener implements DBPEventListener {
@NotNull
private final WebSession webSession;
public WebDataSourceConnectEventListener(@NotNull WebSession webSession) {
this.webSession = webSession;
}
@Override
public void handleDataSourceEvent(@NotNull DBPEvent event) {
if (!(event.getObject() instanceof DBPDataSourceContainer container)) {
return;
}
if (event.getAction() == DBPEvent.Action.AFTER_CONNECT && event.getEnabled()) {
webSession.addSessionEvent(
new WSDataSourceConnectEvent(
container.getProject().getId(),
container.getId(),
webSession.getSessionId(),
webSession.getUserId()
)
);
}
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
package io.cloudbeaver;
import io.cloudbeaver.model.session.WebSession;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
@@ -34,20 +35,32 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.secret.DBSSecretController;
import org.jkiss.dbeaver.model.struct.DBSObjectFilter;
import org.jkiss.dbeaver.registry.DataSourceConfigurationManager;
import org.jkiss.dbeaver.registry.DataSourceParseResults;
import org.jkiss.dbeaver.registry.DataSourcePersistentRegistry;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.*;
import java.util.function.Predicate;
import java.util.stream.Collectors;
public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSourcePersistentRegistry, DBPDataSourceRegistryCache {
/**
* Proxy for a global project data source registry.
* We need to filter some data sources in case of inaccessibility (not enough permissions).
*/
public class WebGlobalProjectRegistryProxy implements DBPDataSourceRegistry, DataSourcePersistentRegistry, DBPDataSourceRegistryCache {
@NotNull
private final WebSession webSession;
@NotNull
private final DataSourceFilter dataSourceFilter;
private final DataSourceRegistry dataSourceRegistry;
@NotNull
private final DataSourceRegistry<?> dataSourceRegistry;
public WebDataSourceRegistryProxy(DataSourceRegistry dataSourceRegistry, DataSourceFilter filter) {
public WebGlobalProjectRegistryProxy(
@NotNull WebSession webSession,
@NotNull DataSourceRegistry<?> dataSourceRegistry,
@NotNull DataSourceFilter filter
) {
this.webSession = webSession;
this.dataSourceRegistry = dataSourceRegistry;
this.dataSourceFilter = filter;
}
@@ -62,7 +75,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Override
public DBPDataSourceContainer getDataSource(@NotNull String id) {
DBPDataSourceContainer dataSource = dataSourceRegistry.getDataSource(id);
if (dataSource == null || dataSourceFilter != null && !dataSourceFilter.filter(dataSource)) {
if (dataSource == null || !dataSourceFilter.filter(dataSource)) {
return null;
}
return dataSource;
@@ -71,7 +84,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Nullable
@Override
public DBPDataSourceContainer getDataSource(@NotNull DBPDataSource dataSource) {
if (dataSourceFilter != null && !dataSourceFilter.filter(dataSource.getContainer())) {
if (!dataSourceFilter.filter(dataSource.getContainer())) {
return null;
}
return dataSourceRegistry.getDataSource(dataSource);
@@ -81,10 +94,8 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Override
public DBPDataSourceContainer findDataSourceByName(String name) {
var dataSource = dataSourceRegistry.findDataSourceByName(name);
if (dataSource != null) {
if (dataSourceFilter == null || dataSourceFilter.filter(dataSource)) {
return dataSource;
}
if (dataSource != null && dataSourceFilter.filter(dataSource)) {
return dataSource;
}
return null;
}
@@ -113,6 +124,26 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
return dataSourceRegistry.createDataSource(driver, connConfig);
}
@Override
public DBPDataSourceContainer createDataSource(
@NotNull String id,
@NotNull DBPDriver driver,
@NotNull DBPConnectionConfiguration connConfig
) {
return dataSourceRegistry.createDataSource(id, driver, connConfig);
}
@Override
public DBPDataSourceContainer createDataSource(
@NotNull DBPDataSourceConfigurationStorage dataSourceStorage,
@NotNull DBPDataSourceOrigin origin,
@NotNull String id,
@NotNull DBPDriver driver,
@NotNull DBPConnectionConfiguration configuration
) {
return dataSourceRegistry.createDataSource(dataSourceStorage, origin, id, driver, configuration);
}
@NotNull
@Override
public DBPDataSourceContainer createDataSource(@NotNull DBPDataSourceContainer source) {
@@ -121,7 +152,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@Override
public void addDataSourceListener(@NotNull DBPEventListener listener) {
dataSourceRegistry.addDataSourceListener(listener);
dataSourceRegistry.addDataSourceListener(new WebDBPEventListenerProxy(listener));
}
@Override
@@ -157,16 +188,33 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
@NotNull
@Override
public List<? extends DBPDataSourceFolder> getAllFolders() {
return dataSourceRegistry.getAllFolders();
if (webSession.hasPermission(DBWConstants.PERMISSION_ADMIN)) {
return dataSourceRegistry.getAllFolders();
}
Set<DBPDataSourceFolder> set = new LinkedHashSet<>();
for (DBPDataSourceContainer container : getDataSources()) {
DBPDataSourceFolder folder = container.getFolder();
while (folder != null) {
set.add(folder);
folder = folder.getParent();
}
}
return new ArrayList<>(set);
}
@NotNull
@Override
public List<? extends DBPDataSourceFolder> getRootFolders() {
return dataSourceRegistry.getRootFolders();
if (webSession.hasPermission(DBWConstants.PERMISSION_ADMIN)) {
return dataSourceRegistry.getRootFolders();
}
return getDataSources().stream()
.map(DBPDataSourceContainer::getFolder)
.filter(folder -> folder != null && folder.getParent() == null)
.toList();
}
@Nullable
@NotNull
@Override
public DBPDataSourceFolder getFolder(@NotNull String path) {
return dataSourceRegistry.getFolder(path);
@@ -184,7 +232,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public void moveFolder(@NotNull String oldPath, @NotNull String newPath) {
public void moveFolder(@NotNull String oldPath, @NotNull String newPath) throws DBException {
dataSourceRegistry.moveFolder(oldPath, newPath);
}
@@ -330,7 +378,7 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
}
@Override
public boolean loadDataSources(
public DataSourceParseResults loadDataSources(
@NotNull List<DBPDataSourceConfigurationStorage> storages,
@NotNull DataSourceConfigurationManager manager,
@Nullable Collection<String> dataSourceIds, boolean refresh,
@@ -367,4 +415,29 @@ public class WebDataSourceRegistryProxy implements DBPDataSourceRegistry, DataSo
public void resolveSecrets(DBSSecretController secretController) throws DBException {
dataSourceRegistry.resolveSecrets(secretController);
}
/**
* Event listener proxy.
* For some cases (like creating data source) we should not send event because of accessibility of connection.
*/
private class WebDBPEventListenerProxy implements DBPEventListener {
@NotNull
private final DBPEventListener eventListener;
public WebDBPEventListenerProxy(@NotNull DBPEventListener eventListener) {
this.eventListener = eventListener;
}
@Override
public void handleDataSourceEvent(@NotNull DBPEvent event) {
if (event.getAction() == DBPEvent.Action.OBJECT_ADD &&
event.getObject() instanceof DBPDataSourceContainer container &&
!dataSourceFilter.filter(container)
) {
// we cannot send event of creating data source connection because it is not accessible for user
return;
}
eventListener.handleDataSourceEvent(event);
}
}
}
@@ -19,6 +19,7 @@ package io.cloudbeaver;
import io.cloudbeaver.model.session.WebHeadlessSession;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.rm.RMUtils;
public class WebHeadlessSessionProjectImpl extends WebProjectImpl {
public WebHeadlessSessionProjectImpl(
@@ -30,7 +31,8 @@ public class WebHeadlessSessionProjectImpl extends WebProjectImpl {
session.getUserContext().getRmController(),
session.getSessionContext(),
project,
session.getUserContext().getPreferenceStore()
session.getUserContext().getPreferenceStore(),
RMUtils.getProjectPath(project)
);
}
}
@@ -27,21 +27,26 @@ import org.jkiss.dbeaver.model.preferences.DBPPreferenceStore;
import org.jkiss.dbeaver.model.rm.RMController;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.task.DBTTaskManager;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.registry.rm.DataSourceRegistryRM;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import java.nio.file.Path;
public abstract class WebProjectImpl extends BaseWebProjectImpl {
private static final Log log = Log.getLog(WebProjectImpl.class);
@NotNull
protected final DBPPreferenceStore preferenceStore;
public WebProjectImpl(
@NotNull DBPWorkspace workspace,
@NotNull RMController resourceController,
@NotNull SMSessionContext sessionContext,
@NotNull RMProject project,
@NotNull DBPPreferenceStore preferenceStore
@NotNull DBPPreferenceStore preferenceStore,
@NotNull Path path
) {
super(workspace, resourceController, sessionContext, project);
super(workspace, resourceController, sessionContext, project, path);
this.preferenceStore = preferenceStore;
}
@@ -79,15 +84,12 @@ public abstract class WebProjectImpl extends BaseWebProjectImpl {
@NotNull
@Override
protected DBPDataSourceRegistry createDataSourceRegistry() {
return new WebDataSourceRegistryProxy(
new DataSourceRegistryRM(this, getResourceController(), preferenceStore),
getDataSourceFilter()
);
return createRMRegistry();
}
@NotNull
public DataSourceFilter getDataSourceFilter() {
return (ds) -> true;
protected DataSourceRegistry<?> createRMRegistry() {
return new DataSourceRegistryRM<>(this, getResourceController(), preferenceStore);
}
}
@@ -22,13 +22,13 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPEvent;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.security.SMObjectType;
import org.jkiss.dbeaver.model.security.user.SMObjectPermissions;
import java.util.Collections;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.concurrent.CopyOnWriteArraySet;
/**
* Global project.
@@ -36,31 +36,40 @@ import java.util.stream.Collectors;
*/
public class WebSessionGlobalProjectImpl extends WebSessionProjectImpl {
private static final Log log = Log.getLog(WebSessionGlobalProjectImpl.class);
private Set<String> accessibleConnectionIds = Collections.emptySet();
private final Set<String> accessibleConnectionIds = new CopyOnWriteArraySet<>();
public WebSessionGlobalProjectImpl(@NotNull WebSession webSession, @NotNull RMProject project) {
super(webSession, project);
}
/**
* Update info about accessible connections from a database.
* Creates data source registry that can filter data sources that are not accessible for user.
*/
public synchronized void refreshAccessibleConnectionIds() {
this.accessibleConnectionIds = readAccessibleConnectionIds();
@NotNull
@Override
protected DBPDataSourceRegistry createDataSourceRegistry() {
return new WebGlobalProjectRegistryProxy(
webSession,
createRegistryWithCredentialsProvider(),
this::isDataSourceAccessible
);
}
@NotNull
private Set<String> readAccessibleConnectionIds() {
/**
* Update info about accessible connections from a database.
*/
public void refreshAccessibleConnectionIds() {
this.accessibleConnectionIds.clear();
try {
return webSession.getSecurityController()
.getAllAvailableObjectsPermissions(SMObjectType.datasource)
.stream()
.map(SMObjectPermissions::getObjectId)
.collect(Collectors.toSet());
for (SMObjectPermissions smObjectPermissions : webSession.getSecurityController()
.getAllAvailableObjectsPermissions(SMObjectType.datasource)) {
String objectId = smObjectPermissions.getObjectId();
this.accessibleConnectionIds.add(objectId);
}
} catch (DBException e) {
webSession.addSessionError(e);
log.error("Error reading connection grants", e);
return Collections.emptySet();
}
}
@@ -110,9 +119,4 @@ public class WebSessionGlobalProjectImpl extends WebSessionProjectImpl {
dataSource.dispose();
}
}
@NotNull
public DataSourceFilter getDataSourceFilter() {
return this::isDataSourceAccessible;
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,42 +16,91 @@
*/
package io.cloudbeaver;
import io.cloudbeaver.model.WebConnectionConfig;
import io.cloudbeaver.model.WebConnectionInfo;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.utils.WebDataSourceUtils;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.DBPAdaptable;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBPObjectSettingsProvider;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistry;
import org.jkiss.dbeaver.model.app.DBPDataSourceRegistryCache;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.rm.RMProject;
import org.jkiss.dbeaver.model.websocket.event.WSEventType;
import org.jkiss.dbeaver.model.rm.RMUtils;
import org.jkiss.dbeaver.model.security.SMControllerUtils;
import org.jkiss.dbeaver.model.security.SMObjectType;
import org.jkiss.dbeaver.model.websocket.event.datasource.WSDataSourceEvent;
import org.jkiss.dbeaver.model.websocket.event.datasource.WSDataSourceProperty;
import org.jkiss.dbeaver.registry.DataSourceDescriptor;
import org.jkiss.dbeaver.registry.DataSourceRegistry;
import org.jkiss.dbeaver.registry.project.BaseProjectSettings;
import org.jkiss.dbeaver.runtime.jobs.DisconnectJob;
import org.jkiss.utils.CommonUtils;
import java.nio.file.Path;
import java.util.*;
import java.util.stream.Collectors;
public class WebSessionProjectImpl extends WebProjectImpl {
public class WebSessionProjectImpl extends WebProjectImpl implements DBPAdaptable {
private static final Log log = Log.getLog(WebSessionProjectImpl.class);
protected final WebSession webSession;
private final Map<String, WebConnectionInfo> connections = new HashMap<>();
private final BaseProjectSettings projectSettings;
private boolean registryIsLoaded = false;
public WebSessionProjectImpl(
@NotNull WebSession webSession,
@NotNull RMProject project
) {
this(webSession, project, null);
}
public WebSessionProjectImpl(
@NotNull WebSession webSession,
@NotNull RMProject project,
@Nullable Path path
) {
super(
webSession.getWorkspace(),
webSession.getRmController(),
webSession.getSessionContext(),
project,
webSession.getUserPreferenceStore()
webSession.getUserPreferenceStore(),
path == null ? RMUtils.getProjectPath(project) : path
);
this.webSession = webSession;
this.projectSettings = new BaseProjectSettings(this) {
@NotNull
@Override
protected Map<SMObjectType, Map<String, Map<String, String>>> loadAllProjectSettings() throws DBException {
if (webSession.getUser() == null) {
return new LinkedHashMap<>();
}
return SMControllerUtils.getObjectSettingsMap(WebSessionProjectImpl.this, webSession.getSecurityController());
}
@Override
protected void saveProjectSettings(
@NotNull SMObjectType objectType,
@NotNull String objectId,
@NotNull Map<String, String> settings
) throws DBException {
if (webSession.getUserContext().isNonAnonymousUserAuthorizedInSM()) {
webSession.getSecurityController().setObjectSettings(getId(), objectType, objectId, settings);
}
}
};
}
@NotNull
public BaseProjectSettings getProjectSettings() {
return projectSettings;
}
@Nullable
@@ -60,11 +109,25 @@ public class WebSessionProjectImpl extends WebProjectImpl {
return webSession.getNavigatorModel();
}
@Override
public <T> T getAdapter(@NotNull Class<T> adapter) {
if (adapter == DBPObjectSettingsProvider.class) {
return adapter.cast(projectSettings);
}
return null;
}
@NotNull
@Override
protected DBPDataSourceRegistry createDataSourceRegistry() {
DBPDataSourceRegistry dataSourceRegistry = super.createDataSourceRegistry();
return createRegistryWithCredentialsProvider();
}
@NotNull
protected DataSourceRegistry<?> createRegistryWithCredentialsProvider() {
DataSourceRegistry<?> dataSourceRegistry = createRMRegistry();
dataSourceRegistry.setAuthCredentialsProvider(webSession);
dataSourceRegistry.addDataSourceListener(webSession.getDataSourceConnectListener());
return dataSourceRegistry;
}
@@ -130,7 +193,7 @@ public class WebSessionProjectImpl extends WebProjectImpl {
*/
@NotNull
public synchronized WebConnectionInfo addConnection(@NotNull DBPDataSourceContainer dataSourceContainer) {
WebConnectionInfo connection = new WebConnectionInfo(webSession, dataSourceContainer);
WebConnectionInfo connection = createConnectionInfo(dataSourceContainer);
synchronized (connections) {
connections.put(dataSourceContainer.getId(), connection);
}
@@ -155,6 +218,7 @@ public class WebSessionProjectImpl extends WebProjectImpl {
*
* @return connections from cache.
*/
@NotNull
public List<WebConnectionInfo> getConnections() {
if (!registryIsLoaded) {
addDataSourcesToCache();
@@ -168,36 +232,33 @@ public class WebSessionProjectImpl extends WebProjectImpl {
/**
* updates data sources based on event in web session
*
* @param dataSourceIds list of updated connections
* @param type type of event
* @param event data source updated event
*/
public synchronized boolean updateProjectDataSources(@NotNull List<String> dataSourceIds, @NotNull WSEventType type) {
public synchronized boolean updateProjectDataSources(@NotNull WSDataSourceEvent event) {
var sendDataSourceUpdatedEvent = false;
DBPDataSourceRegistry registry = getDataSourceRegistry();
// save old connections
var oldDataSources = dataSourceIds.stream()
.map(registry::getDataSource)
.filter(Objects::nonNull)
.collect(Collectors.toMap(
DBPDataSourceContainer::getId,
ds -> new DataSourceDescriptor((DataSourceDescriptor) ds, ds.getRegistry())
));
if (type == WSEventType.DATASOURCE_CREATED || type == WSEventType.DATASOURCE_UPDATED) {
registry.refreshConfig(dataSourceIds);
if (WSDataSourceEvent.CREATED.equals(event.getId()) || WSDataSourceEvent.UPDATED.equals(event.getId())) {
registry.refreshConfig(event.getDataSourceIds());
}
for (String dsId : dataSourceIds) {
for (String dsId : event.getDataSourceIds()) {
DataSourceDescriptor ds = (DataSourceDescriptor) registry.getDataSource(dsId);
if (ds == null) {
continue;
}
switch (type) {
case DATASOURCE_CREATED -> {
switch (event.getId()) {
case WSDataSourceEvent.CREATED -> {
addConnection(ds);
sendDataSourceUpdatedEvent = true;
}
case DATASOURCE_UPDATED -> // if settings were changed we need to send event
sendDataSourceUpdatedEvent |= !ds.equalSettings(oldDataSources.get(dsId));
case DATASOURCE_DELETED -> {
case WSDataSourceEvent.UPDATED -> {
if (event.getProperty() == WSDataSourceProperty.CONFIGURATION) {
WebDataSourceUtils.disconnectDataSource(webSession, ds);
}
if (event.getProperty() != WSDataSourceProperty.INTERNAL) {
sendDataSourceUpdatedEvent = true;
}
}
case WSDataSourceEvent.DELETED -> {
WebDataSourceUtils.disconnectDataSource(webSession, ds);
if (registry instanceof DBPDataSourceRegistryCache dsrc) {
dsrc.removeDataSourceFromList(ds);
@@ -211,4 +272,100 @@ public class WebSessionProjectImpl extends WebProjectImpl {
}
return sendDataSourceUpdatedEvent;
}
@NotNull
public WebConnectionInfo createConnectionInfo(@NotNull DBPDataSourceContainer dataSourceDescriptor) {
return new WebConnectionInfo(webSession, dataSourceDescriptor);
}
@NotNull
public WebConnectionInfo createConnection(@NotNull Map<String, Object> configMap) throws DBWebException {
if (CommonUtils.isEmpty(configMap)) {
throw new DBWebException("Connection configuration parameters are missing");
}
DBPDataSourceContainer newDataSource = getDataSourceContainerFromInput(getConnectionConfigInput(configMap));
return addDataSourceToProject(newDataSource);
}
@NotNull
public WebConnectionInfo addDataSourceToProject(@NotNull DBPDataSourceContainer newDataSource) throws DBWebException {
DBPDataSourceRegistry registry = getDataSourceRegistry();
try {
registry.addDataSource(newDataSource);
registry.checkForErrors();
} catch (DBException e) {
registry.removeDataSource(newDataSource);
throw new DBWebException("Failed to create connection", e);
}
WebConnectionInfo connectionInfo = addConnection(newDataSource);
webSession.addInfoMessage("New connection was created - " + WebDataSourceUtils.getConnectionContainerInfo(
newDataSource));
log.info(String.format(
"New connection was created: [info=%s, user=%s]",
WebDataSourceUtils.getConnectionContainerInfo(newDataSource),
webSession.getUserId()
));
return connectionInfo;
}
@NotNull
public WebConnectionInfo updateConnection(@Nullable Map<String, Object> configMap) throws DBWebException {
WebConnectionConfig config = getConnectionConfigInput(configMap);
WebConnectionInfo connectionInfo = getWebConnectionInfo(config.getConnectionId());
DataSourceDescriptor dataSource = (DataSourceDescriptor) connectionInfo.getDataSourceContainer();
webSession.addInfoMessage("Update connection - " + WebDataSourceUtils.getConnectionContainerInfo(dataSource));
DBPDataSourceRegistry registry = getDataSourceRegistry();
getInputConfigHandler(config).updateDataSource(dataSource);
connectionInfo.setCredentialsSavedInSession(null);
try {
registry.updateDataSource(dataSource);
registry.checkForErrors();
} catch (DBException e) {
throw new DBWebException("Failed to update connection", e);
}
return connectionInfo;
}
public boolean deleteConnection(@NotNull String connectionId) throws DBWebException {
WebConnectionInfo connectionInfo = getWebConnectionInfo(connectionId);
webSession.addInfoMessage("Delete connection - " +
WebDataSourceUtils.getConnectionContainerInfo(connectionInfo.getDataSourceContainer()));
closeAndDeleteConnection(connectionInfo);
log.info(String.format(
"Connection deleted: [info=%s, userId=%s]",
WebDataSourceUtils.getConnectionContainerInfo(connectionInfo.getDataSourceContainer()),
webSession.getUserId()
));
return true;
}
@NotNull
private WebConnectionInfo closeAndDeleteConnection(@NotNull WebConnectionInfo connectionInfo) throws DBWebException {
DBPDataSourceContainer dataSourceContainer = connectionInfo.getDataSourceContainer();
WebDataSourceUtils.disconnectDataSource(webSession, dataSourceContainer);
DBPDataSourceRegistry registry = getDataSourceRegistry();
registry.removeDataSource(dataSourceContainer);
removeConnection(dataSourceContainer);
return connectionInfo;
}
@NotNull
public DataSourceDescriptor getDataSourceContainerFromInput(@NotNull WebConnectionConfig configInput) throws DBWebException {
return getInputConfigHandler(configInput).createDataSourceContainer();
}
@NotNull
public WebConnectionConfig getConnectionConfigInput(@Nullable Map<String, Object> configMap) {
return new WebConnectionConfig(configMap == null ? Map.of() : configMap);
}
@NotNull
protected WebConnectionConfigInputHandler getInputConfigHandler(@NotNull WebConnectionConfig configInput) {
return new WebConnectionConfigInputHandler<>(webSession, getDataSourceRegistry(), configInput);
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,6 +17,7 @@
package io.cloudbeaver.auth;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.security.SMAuthProviderCustomConfiguration;
@@ -36,6 +37,7 @@ public interface SMAuthProviderAssigner {
@NotNull Map<String, Object> authParameters
) throws DBException;
@Nullable
String getExternalTeamIdMetadataFieldName();
}
@@ -69,4 +69,13 @@ public interface SMAuthProviderExternal<AUTH_SESSION extends SMSession> extends
@NotNull WebUser user,
boolean selfIdentity) throws DBException;
/**
* Make some post authentication actions
*/
default void postAuthentication() {}
@Override
default boolean supportsOpeningSessionAsChild() {
return true;
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -30,27 +30,50 @@ import java.util.Map;
public interface SMAuthProviderFederated extends SMSignOutLinkProvider {
@NotNull
String getSignInLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
String getSignInLink(@NotNull String id, @NotNull String origin) throws DBException;
@Override
default String getUserSignOutLink(
@NotNull SMAuthProviderCustomConfiguration providerConfig,
@NotNull Map<String, Object> userCredentials
@NotNull Map<String, Object> userCredentials,
@NotNull String origin
) throws DBException {
return getCommonSignOutLink(providerConfig.getId(), providerConfig.getParameters());
return getCommonSignOutLink(providerConfig.getId(), providerConfig.getParameters(), origin);
}
@Nullable
String getMetadataLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
default String getMetadataLink(
@NotNull String providerId,
@NotNull Map<String, Object> providerConfig,
@NotNull String origin
) throws DBException {
return null;
}
@Nullable
String getAcsLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
default String getAcsLink(
@NotNull String providerId,
@NotNull Map<String, Object> providerConfig,
@NotNull String origin
) throws DBException {
return null;
}
@Nullable
String getEntityIdLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
default String getEntityIdLink(
@NotNull String providerId,
@NotNull Map<String, Object> providerConfig,
@NotNull String origin
) throws DBException {
return null;
}
@Nullable
default String getRedirectLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException {
default String getRedirectLink(
@NotNull String providerId,
@NotNull Map<String, Object> providerConfig,
@NotNull String origin
) throws DBException {
return null;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -17,11 +17,14 @@
package io.cloudbeaver.auth;
import org.jkiss.code.Nullable;
import java.util.ArrayList;
import java.util.List;
public class SMAutoAssign {
private String authRole;
private String authRoleAssignReason;
private List<String> externalTeamIds = new ArrayList<>();
public SMAutoAssign() {
@@ -47,4 +50,13 @@ public class SMAutoAssign {
public void addExternalTeamId(String externalRoleId) {
this.externalTeamIds.add(externalRoleId);
}
@Nullable
public String getAuthRoleAssignReason() {
return authRoleAssignReason;
}
public void setAuthRoleAssignReason(@Nullable String authRoleChangedReason) {
this.authRoleAssignReason = authRoleChangedReason;
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -28,10 +28,15 @@ public interface SMSignOutLinkProvider {
* @return a common link for logout, not related with the user context
*/
@NotNull
String getCommonSignOutLink(String id, @NotNull Map<String, Object> providerConfig) throws DBException;
String getCommonSignOutLink(
@NotNull String providerId,
@NotNull Map<String, Object> providerConfig,
@NotNull String origin
) throws DBException;
String getUserSignOutLink(
@NotNull SMAuthProviderCustomConfiguration providerConfig,
@NotNull Map<String, Object> userCredentials
@NotNull Map<String, Object> userCredentials,
@NotNull String origin
) throws DBException;
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -24,7 +24,8 @@ import org.jkiss.utils.CommonUtils;
/**
* Abstract external auth provider
*/
public abstract class AbstractExternalAuthProvider<SESSION extends SMSession> implements SMAuthProviderExternal<SESSION> {
public abstract class AbstractExternalAuthProvider<SESSION extends SMSession>
implements SMAuthProviderExternal<SESSION> {
public static final String META_AUTH_PROVIDER = "$provider";
public static final String META_AUTH_SPACE_ID = "$space";
@@ -21,5 +21,6 @@ package io.cloudbeaver.auth.provider.local;
public class LocalAuthProviderConstants {
public static final String PROVIDER_ID = "local";
public static final String CRED_USER = "user";
public static final String CRED_DISPLAY_NAME = "displayName";
public static final String CRED_PASSWORD = "password";
}
@@ -0,0 +1,40 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.utils.WebEventUtils;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.runtime.AbstractJob;
public abstract class AbstractCancelableJob extends AbstractJob implements CustomCancelableJob {
protected AbstractCancelableJob(@NotNull String name) {
super(name);
}
@Override
public void cancelJob(@NotNull WebSession webSession, @NotNull WebAsyncTaskInfo taskInfo) {
cancelJob(webSession, taskInfo, "Canceled by the user");
}
public void cancelJob(@NotNull WebSession webSession, @NotNull WebAsyncTaskInfo taskInfo, @NotNull String errorMessage) {
taskInfo.setRunning(false);
taskInfo.setJobError(new DBException(errorMessage));
WebEventUtils.sendAsyncTaskEvent(webSession, taskInfo);
}
}
@@ -1,3 +1,19 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
@@ -10,7 +26,7 @@ import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
public abstract class BaseDatasourceAccessCheckHandler implements DBPDataSourceHandler {
@Override
public void beforeConnect(
DBRProgressMonitor monitor,
@NotNull DBRProgressMonitor monitor,
@NotNull DBPDataSourceContainer dataSourceContainer
) throws DBException {
if (isDriverDisabled(dataSourceContainer.getDriver())) {
@@ -20,7 +36,7 @@ public abstract class BaseDatasourceAccessCheckHandler implements DBPDataSourceH
@Override
public void beforeDisconnect(
DBRProgressMonitor monitor,
@NotNull DBRProgressMonitor monitor,
@NotNull DBPDataSourceContainer dataSourceContainer
) throws DBException {
@@ -0,0 +1,24 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import io.cloudbeaver.model.session.WebSession;
import org.jkiss.code.NotNull;
public interface CustomCancelableJob {
void cancelJob(@NotNull WebSession webSession, @NotNull WebAsyncTaskInfo taskInfo);
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,44 +16,42 @@
*/
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.runtime.AbstractJob;
/**
* Web connection info
* Web async task info
*/
public class WebAsyncTaskInfo {
private String id;
private String name;
private boolean running;
@NotNull
private final String id;
@NotNull
private final String name;
private boolean running = false;
private Object result;
private Object extendedResult;
private String status;
private Throwable jobError;
private AbstractJob job;
private boolean cancelled = false;
public WebAsyncTaskInfo(String id, String name) {
public WebAsyncTaskInfo(@NotNull String id, @NotNull String name) {
this.id = id;
this.name = name;
}
@NotNull
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@NotNull
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isRunning() {
return running;
}
@@ -110,5 +108,4 @@ public class WebAsyncTaskInfo {
public void setJob(AbstractJob job) {
this.job = job;
}
}
@@ -0,0 +1,50 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2025 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
public class WebBasicEnumObjectInfo {
@NotNull
private String displayName;
@NotNull
private String value;
public WebBasicEnumObjectInfo(@NotNull String displayName, @NotNull String value) {
this.displayName = displayName;
this.value = value;
}
@NotNull
public String getDisplayName() {
return displayName;
}
public void setDisplayName(@NotNull String displayName) {
this.displayName = displayName;
}
@NotNull
public String getValue() {
return value;
}
public void setValue(@NotNull String value) {
this.value = value;
}
}
@@ -0,0 +1,370 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.connection.DBPDriverConfigurationType;
import org.jkiss.dbeaver.model.data.json.JSONUtils;
import org.jkiss.dbeaver.model.meta.Property;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Web connection config
*/
public class WebConnectionConfig {
private String connectionId;
private String driverId;
private boolean readOnly;
private String host;
private String port;
private String serverName;
private String databaseName;
private String url;
private Integer keepAliveInterval;
private String name;
private String description;
private String folder;
private Map<String, Object> properties;
private String userName;
private String userPassword;
private String authModelId;
private Map<String, Object> credentials;
private Boolean saveCredentials;
private Boolean sharedCredentials;
private Map<String, Object> mainPropertyValues;
private Map<String, Object> expertSettingsValues;
private Map<String, Object> providerProperties;
private List<WebNetworkHandlerConfigInput> networkHandlersConfig;
private DBPDriverConfigurationType configurationType;
private String selectedSecretId;
private Boolean defaultAutoCommit;
private String defaultCatalogName;
private String defaultSchemaName;
public WebConnectionConfig() {
}
public WebConnectionConfig(@NotNull Map<String, Object> params) {
connectionId = JSONUtils.getString(params, "connectionId");
driverId = JSONUtils.getString(params, "driverId");
host = JSONUtils.getString(params, "host");
port = JSONUtils.getString(params, "port");
serverName = JSONUtils.getString(params, "serverName");
databaseName = JSONUtils.getString(params, "databaseName");
url = JSONUtils.getString(params, "url");
name = JSONUtils.getString(params, "name");
description = JSONUtils.getString(params, "description");
folder = JSONUtils.getString(params, "folder");
properties = JSONUtils.getObjectOrNull(params, "properties");
userName = JSONUtils.getString(params, "userName");
userPassword = JSONUtils.getString(params, "userPassword");
selectedSecretId = JSONUtils.getString(params, "selectedSecretId");
authModelId = JSONUtils.getString(params, "authModelId");
credentials = JSONUtils.getObjectOrNull(params, "credentials");
saveCredentials = JSONUtils.getBoolean(params, "saveCredentials");
sharedCredentials = JSONUtils.getBoolean(params, "sharedCredentials");
mainPropertyValues = JSONUtils.getObjectOrNull(params, "mainPropertyValues");
providerProperties = JSONUtils.getObjectOrNull(params, "providerProperties");
expertSettingsValues = JSONUtils.getObjectOrNull(params, "expertSettingsValues");
keepAliveInterval = JSONUtils.getInteger(
expertSettingsValues != null ? expertSettingsValues : params, WebExpertSettingsProperties.PROP_KEEP_ALIVE_INTERVAL, -1);
readOnly = JSONUtils.getBoolean(
expertSettingsValues != null ? expertSettingsValues : params, WebExpertSettingsProperties.PROP_READ_ONLY);
defaultAutoCommit = JSONUtils.getBoolean(
expertSettingsValues != null ? expertSettingsValues : params, WebExpertSettingsProperties.PROP_AUTO_COMMIT, true);
defaultCatalogName = JSONUtils.getString(
expertSettingsValues != null ? expertSettingsValues : params, WebExpertSettingsProperties.PROP_DEFAULT_CATALOG);
defaultSchemaName = JSONUtils.getString(
expertSettingsValues != null ? expertSettingsValues : params,
WebExpertSettingsProperties.PROP_DEFAULT_SCHEMA
);
String configType = JSONUtils.getString(params, "configurationType");
configurationType = configType == null ? null : DBPDriverConfigurationType.valueOf(configType);
networkHandlersConfig = new ArrayList<>();
for (Map<String, Object> nhc : JSONUtils.getObjectList(params, "networkHandlersConfig")) {
networkHandlersConfig.add(new WebNetworkHandlerConfigInput(nhc));
}
}
@Property
public String getConnectionId() {
return connectionId;
}
public void setConnectionId(String connectionId) {
this.connectionId = connectionId;
}
@Property
public String getDriverId() {
return driverId;
}
public void setDriverId(String driverId) {
this.driverId = driverId;
}
@Property
public boolean isReadOnly() {
return readOnly;
}
public void setReadOnly(boolean readOnly) {
this.readOnly = readOnly;
}
@Property
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Property
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Property
public String getFolder() {
return folder;
}
public void setFolder(String folder) {
this.folder = folder;
}
@Property
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
@Property
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
@Property
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
@Property
public String getDatabaseName() {
return databaseName;
}
public void setDatabaseName(String databaseName) {
this.databaseName = databaseName;
}
@Property
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
@Property
public Map<String, Object> getProperties() {
return properties;
}
public void setProperties(Map<String, Object> properties) {
this.properties = properties;
}
@Property
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Property
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
@Property
public String getAuthModelId() {
return authModelId;
}
public void setAuthModelId(String authModelId) {
this.authModelId = authModelId;
}
@Property
public DBPDriverConfigurationType getConfigurationType() {
return configurationType;
}
public void setConfigurationType(DBPDriverConfigurationType configurationType) {
this.configurationType = configurationType;
}
@Property
public Map<String, Object> getCredentials() {
return credentials;
}
public void setCredentials(Map<String, Object> credentials) {
this.credentials = credentials;
}
public List<WebNetworkHandlerConfigInput> getNetworkHandlersConfig() {
return networkHandlersConfig;
}
public void setNetworkHandlersConfig(List<WebNetworkHandlerConfigInput> networkHandlersConfig) {
this.networkHandlersConfig = networkHandlersConfig;
}
@Property
public boolean isSaveCredentials() {
return saveCredentials;
}
public void setSaveCredentials(boolean saveCredentials) {
this.saveCredentials = saveCredentials;
}
@Property
public boolean isSharedCredentials() {
return sharedCredentials;
}
public void setSharedCredentials(boolean sharedCredentials) {
this.sharedCredentials = sharedCredentials;
}
@Property
public Map<String, Object> getMainPropertyValues() {
return mainPropertyValues;
}
public void setMainPropertyValues(Map<String, Object> mainPropertyValues) {
this.mainPropertyValues = mainPropertyValues;
}
@Property
public Map<String, Object> getExpertSettingsValues() {
return expertSettingsValues;
}
public void setExpertSettingsValues(Map<String, Object> expertSettingsValues) {
this.expertSettingsValues = expertSettingsValues;
}
@Property
public Map<String, Object> getProviderProperties() {
return providerProperties;
}
public void setProviderProperties(Map<String, Object> providerProperties) {
this.providerProperties = providerProperties;
}
@Property
public Integer getKeepAliveInterval() {
return keepAliveInterval;
}
public void setKeepAliveInterval(int keepAliveInterval) {
this.keepAliveInterval = keepAliveInterval;
}
@Property
public Boolean isDefaultAutoCommit() {
return defaultAutoCommit;
}
public void setDefaultAutoCommit(boolean defaultAutoCommit) {
this.defaultAutoCommit = defaultAutoCommit;
}
@Nullable
public String getSelectedSecretId() {
return selectedSecretId;
}
public void setSelectedSecretId(String selectedSecretId) {
this.selectedSecretId = selectedSecretId;
}
@Property
public String getDefaultCatalogName() {
return defaultCatalogName;
}
public void setDefaultCatalogName(String defaultCatalogName) {
this.defaultCatalogName = defaultCatalogName;
}
@Property
public String getDefaultSchemaName() {
return defaultSchemaName;
}
public void setDefaultSchemaName(String defaultSchemaName) {
this.defaultSchemaName = defaultSchemaName;
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2026 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,15 +16,18 @@
*/
package io.cloudbeaver.model;
import io.cloudbeaver.DBWebException;
import io.cloudbeaver.WebProjectImpl;
import io.cloudbeaver.model.app.BaseWebAppConfiguration;
import io.cloudbeaver.model.session.WebSession;
import io.cloudbeaver.server.CBConstants;
import io.cloudbeaver.service.security.SMUtils;
import io.cloudbeaver.service.sql.WebDataFormat;
import io.cloudbeaver.utils.CBModelConstants;
import io.cloudbeaver.utils.WebAppUtils;
import io.cloudbeaver.utils.ServletAppUtils;
import io.cloudbeaver.utils.WebCommonUtils;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
@@ -42,6 +45,8 @@ import org.jkiss.dbeaver.model.preferences.DBPPropertySource;
import org.jkiss.dbeaver.model.rm.RMConstants;
import org.jkiss.dbeaver.model.rm.RMProjectPermission;
import org.jkiss.dbeaver.model.runtime.DBRRunnableParametrized;
import org.jkiss.dbeaver.registry.network.NetworkHandlerDescriptor;
import org.jkiss.dbeaver.registry.network.NetworkHandlerRegistry;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils;
@@ -55,7 +60,6 @@ import java.util.stream.Collectors;
public class WebConnectionInfo {
private static final Log log = Log.getLog(WebConnectionInfo.class);
public static final String SECURED_VALUE = "********";
private static final String FEATURE_HAS_TOOLS = "hasTools";
private static final String FEATURE_CONNECTED = "connected";
@@ -74,6 +78,8 @@ public class WebConnectionInfo {
private String connectTime;
private String serverVersion;
private String clientVersion;
@Nullable
private Boolean credentialsSavedInSession;
private transient Map<String, Object> savedAuthProperties;
private transient List<WebNetworkHandlerConfigInput> savedNetworkCredentials;
@@ -121,7 +127,7 @@ public class WebConnectionInfo {
if (canViewReadOnlyConnections()) {
return dataSourceContainer.getConnectionConfiguration().getHostName();
}
return SECURED_VALUE;
return CBConstants.SECURED_VALUE;
}
@Property
@@ -129,7 +135,7 @@ public class WebConnectionInfo {
if (canViewReadOnlyConnections()) {
return dataSourceContainer.getConnectionConfiguration().getHostPort();
}
return SECURED_VALUE;
return CBConstants.SECURED_VALUE;
}
@Property
@@ -142,7 +148,7 @@ public class WebConnectionInfo {
if (canViewReadOnlyConnections()) {
return dataSourceContainer.getConnectionConfiguration().getDatabaseName();
}
return SECURED_VALUE;
return CBConstants.SECURED_VALUE;
}
@Property
@@ -150,7 +156,7 @@ public class WebConnectionInfo {
if (canViewReadOnlyConnections()) {
return dataSourceContainer.getConnectionConfiguration().getUrl();
}
return SECURED_VALUE;
return CBConstants.SECURED_VALUE;
}
@Property
@@ -166,11 +172,6 @@ public class WebConnectionInfo {
return dataSourceContainer.isConnected();
}
@Property
public boolean isTemplate() {
return dataSourceContainer.isTemplate();
}
@Property
public boolean isProvided() {
return dataSourceContainer.isProvided();
@@ -193,7 +194,8 @@ public class WebConnectionInfo {
@Property
public boolean isCredentialsSaved() throws DBException {
return dataSourceContainer.isCredentialsSaved();
// isCredentialsSaved can be true if credentials were saved during connection init for global project
return dataSourceContainer.isCredentialsSaved() && !(credentialsSavedInSession != null && credentialsSavedInSession);
}
@Property
@@ -250,6 +252,7 @@ public class WebConnectionInfo {
}
@Property
@NotNull
public String[] getFeatures() {
List<String> features = new ArrayList<>();
@@ -279,11 +282,19 @@ public class WebConnectionInfo {
}
@Property
@NotNull
public DBNBrowseSettings getNavigatorSettings() {
return dataSourceContainer.getNavigatorSettings();
}
@Property
@NotNull
public DBNBrowseSettings getDefaultNavigatorSettings() {
return dataSourceContainer.getNavigatorSettings().getOriginalSettings();
}
@Property
@NotNull
public List<WebDataFormat> getSupportedDataFormats() {
List<WebDataFormat> formats = new ArrayList<>();
formats.add(WebDataFormat.resultset);
@@ -298,11 +309,13 @@ public class WebConnectionInfo {
}
@Property
@NotNull
public WebConnectionOriginInfo getOrigin() {
return new WebConnectionOriginInfo(session, dataSourceContainer, dataSourceContainer.getOrigin());
}
@Property
@NotNull
public DBPDriverConfigurationType getConfigurationType() {
DBPDriverConfigurationType configurationType = dataSourceContainer.getConnectionConfiguration().getConfigurationType();
if (configurationType == null) {
@@ -318,21 +331,37 @@ public class WebConnectionInfo {
!dataSourceContainer.getDriver().isAnonymousAccess();
}
public void validateConnection() throws DBWebException {
}
// we don't show non-secured properties in FE when connecting to DB without saved credentials
private boolean isAuthPropertiesEmpty() {
return Arrays.stream(getAuthProperties()).allMatch(f -> f.hasFeature(DBConstants.PROP_FEATURE_NON_SECURED));
}
@Property
@NotNull
public String getAuthModel() {
String authModelId = dataSourceContainer.getConnectionConfiguration().getAuthModelId();
if (CommonUtils.isEmpty(authModelId)) {
authModelId = AuthModelDatabaseNative.ID;
}
// Patch auth model
DBPAuthModelDescriptor authModel = DBWorkbench.getPlatform().getDataSourceProviderRegistry().getAuthModel(authModelId);
if (authModel != null) {
DBPAuthModelDescriptor amReplace = authModel.getReplacedBy(dataSourceContainer.getDriver());
if (amReplace != null && amReplace != authModel) {
return amReplace.getId();
}
}
return authModelId;
}
@Property
@NotNull
public WebPropertyInfo[] getAuthProperties() {
String authModelId = getAuthModel();
DBPAuthModelDescriptor authModel = DBWorkbench.getPlatform().getDataSourceProviderRegistry().getAuthModel(authModelId);
@@ -355,26 +384,38 @@ public class WebConnectionInfo {
}
@Property
@NotNull
public List<WebNetworkHandlerConfig> getNetworkHandlersConfig() {
return dataSourceContainer.getConnectionConfiguration().getHandlers().stream()
.map(WebNetworkHandlerConfig::new).collect(Collectors.toList());
var registry = NetworkHandlerRegistry.getInstance();
return dataSourceContainer.getConnectionConfiguration()
.getHandlers()
.stream()
.filter(handlerConf -> {
NetworkHandlerDescriptor descriptor = registry.getDescriptor(handlerConf.getId());
return descriptor != null && !descriptor.isDesktopHandler();
})
.map(WebNetworkHandlerConfig::new)
.collect(Collectors.toList());
}
@Property
@Nullable
public Map<String, Object> getCredentials() {
//dataSourceContainer.getConnectionConfiguration().getCredentialsProvider().getCredentials();
return null;
}
@Nullable
public Map<String, Object> getSavedAuthProperties() {
return savedAuthProperties;
}
@Nullable
public List<WebNetworkHandlerConfigInput> getSavedNetworkCredentials() {
return savedNetworkCredentials;
}
public void setSavedCredentials(Map<String, Object> authProperties, List<WebNetworkHandlerConfigInput> networkCredentials) {
public void setSavedCredentials(@Nullable Map<String, Object> authProperties, @Nullable List<WebNetworkHandlerConfigInput> networkCredentials) {
this.savedAuthProperties = authProperties;
this.savedNetworkCredentials = networkCredentials;
}
@@ -399,6 +440,7 @@ public class WebConnectionInfo {
}
@Property
@NotNull
public Map<String, String> getMainPropertyValues() {
Map<String, String> mainProperties = new LinkedHashMap<>();
mainProperties.put(DBConstants.PROP_HOST, getHost());
@@ -408,6 +450,17 @@ public class WebConnectionInfo {
return mainProperties;
}
@Property
public Map<String, Object> getExpertSettingsValues() {
Map<String, Object> expertSettings = new LinkedHashMap<>();
expertSettings.put(WebExpertSettingsProperties.PROP_AUTO_COMMIT, isAutocommit());
expertSettings.put(WebExpertSettingsProperties.PROP_KEEP_ALIVE_INTERVAL, getKeepAliveInterval());
expertSettings.put(WebExpertSettingsProperties.PROP_READ_ONLY, isReadOnly());
expertSettings.put(WebExpertSettingsProperties.PROP_DEFAULT_CATALOG, getDefaultCatalogName());
expertSettings.put(WebExpertSettingsProperties.PROP_DEFAULT_SCHEMA, getDefaultSchemaName());
return expertSettings;
}
@Property
public Map<String, String> getProviderProperties() {
return dataSourceContainer.getConnectionConfiguration().getProviderProperties();
@@ -443,7 +496,7 @@ public class WebConnectionInfo {
return dataSourceContainer.getRequiredExternalAuth();
}
private boolean hasProjectPermission(RMProjectPermission projectPermission) {
private boolean hasProjectPermission(@NotNull RMProjectPermission projectPermission) {
DBPProject project = dataSourceContainer.getProject();
if (!(project instanceof WebProjectImpl webProject)) {
return false;
@@ -455,7 +508,8 @@ public class WebConnectionInfo {
if (isCanEdit()) {
return true;
}
BaseWebAppConfiguration appConfig = (BaseWebAppConfiguration) WebAppUtils.getWebApplication().getAppConfiguration();
BaseWebAppConfiguration appConfig = (BaseWebAppConfiguration) ServletAppUtils.getServletApplication()
.getAppConfiguration();
return appConfig.isShowReadOnlyConnectionInfo();
}
@@ -482,6 +536,21 @@ public class WebConnectionInfo {
}
@Property
@Nullable
public String getDefaultCatalogName() {
DBPConnectionConfiguration connectionConfiguration = dataSourceContainer.getConnectionConfiguration();
return connectionConfiguration.getBootstrap().getDefaultCatalogName();
}
@Property
@Nullable
public String getDefaultSchemaName() {
DBPConnectionConfiguration connectionConfiguration = dataSourceContainer.getConnectionConfiguration();
return connectionConfiguration.getBootstrap().getDefaultSchemaName();
}
@Property
@NotNull
public List<WebSecretInfo> getSharedSecrets() throws DBException {
return dataSourceContainer.listSharedCredentials()
.stream()
@@ -489,8 +558,8 @@ public class WebConnectionInfo {
.collect(Collectors.toList());
}
@NotNull
@Property
@NotNull
public List<String> getTools() {
if (!session.hasPermission(RMConstants.PERMISSION_DATABASE_DEVELOPER)) {
return List.of();
@@ -503,4 +572,10 @@ public class WebConnectionInfo {
return tools;
}
/**
* Updates param that checks whether credentials were saved only in session.
*/
public void setCredentialsSavedInSession(@Nullable Boolean credentialsSavedInSession) {
this.credentialsSavedInSession = credentialsSavedInSession;
}
}
@@ -0,0 +1,88 @@
package io.cloudbeaver.model;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPObject;
import org.jkiss.dbeaver.model.connection.DBPDriver;
import org.jkiss.dbeaver.model.connection.DBPDriverConstants;
import org.jkiss.dbeaver.model.meta.IPropertyValueValidator;
import org.jkiss.dbeaver.model.meta.Property;
import org.jkiss.utils.CommonUtils;
/**
* Web expert settings properties. Class for returning filtered expert settings properties in web interface.
*/
public class WebExpertSettingsProperties implements DBPObject {
public static final String PROP_READ_ONLY = "readOnly";
public static final String PROP_AUTO_COMMIT = "autocommit";
public static final String PROP_KEEP_ALIVE_INTERVAL = "keepAliveInterval";
public static final String PROP_DEFAULT_CATALOG = "defaultCatalogName";
public static final String PROP_DEFAULT_SCHEMA = "defaultSchemaName";
private final DBPDriver driver;
public WebExpertSettingsProperties(@NotNull DBPDriver driver) {
this.driver = driver;
}
@Property(order = 1, id = PROP_KEEP_ALIVE_INTERVAL, visibleIf = KeepAliveIntervalFieldValidator.class)
public int getKeepAliveInterval() {
return 0;
}
@Property(order = 2, id = PROP_AUTO_COMMIT, visibleIf = AutoCommitFieldValidator.class)
public boolean isAutoCommit() {
return true;
}
@Property(order = 3, id = PROP_READ_ONLY, visibleIf = ReadOnlyFieldValidator.class)
public boolean isReadOnly() {
return false;
}
@Property(order = 4, id = PROP_DEFAULT_CATALOG, visibleIf = DefaultCatalogFieldVisibleValidator.class)
public String getDefaultCatalog() {
return null;
}
@Property(order = 5, id = PROP_DEFAULT_SCHEMA, visibleIf = DefaultSchemaFieldVisibleValidator.class)
public String getDefaultSchema() {
return null;
}
public static class KeepAliveIntervalFieldValidator implements IPropertyValueValidator<WebExpertSettingsProperties, Object> {
@Override
public boolean isValidValue(@NotNull WebExpertSettingsProperties object, @Nullable Object value) throws IllegalArgumentException {
return CommonUtils.toBoolean(!object.driver.isEmbedded(), true);
}
}
public static class AutoCommitFieldValidator implements IPropertyValueValidator<WebExpertSettingsProperties, Object> {
@Override
public boolean isValidValue(@NotNull WebExpertSettingsProperties object, @Nullable Object value) throws IllegalArgumentException {
return CommonUtils.toBoolean(object.driver.getDriverParameter(DBPDriverConstants.PARAM_SUPPORTS_TRANSACTIONS), true);
}
}
public static class ReadOnlyFieldValidator implements IPropertyValueValidator<WebExpertSettingsProperties, Object> {
@Override
public boolean isValidValue(@NotNull WebExpertSettingsProperties object, @Nullable Object value) throws IllegalArgumentException {
return CommonUtils.toBoolean(object.driver.getDriverParameter(DBPDriverConstants.PARAM_SUPPORTS_READ_ONLY_MODE), true);
}
}
public static class DefaultCatalogFieldVisibleValidator implements IPropertyValueValidator<WebExpertSettingsProperties, Object> {
@Override
public boolean isValidValue(@NotNull WebExpertSettingsProperties object, @Nullable Object value) throws IllegalArgumentException {
return CommonUtils.toBoolean(object.driver.getDriverParameter(DBPDriverConstants.PARAM_SUPPORTS_CATALOG_SELECTION), true);
}
}
public static class DefaultSchemaFieldVisibleValidator implements IPropertyValueValidator<WebExpertSettingsProperties, Object> {
@Override
public boolean isValidValue(@NotNull WebExpertSettingsProperties object, @Nullable Object value) throws IllegalArgumentException {
return CommonUtils.toBoolean(object.driver.getDriverParameter(DBPDriverConstants.PARAM_SUPPORTS_SCHEMA_SELECTION), true);
}
}
}
@@ -1,6 +1,6 @@
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2024 DBeaver Corp and others
* Copyright (C) 2010-2026 DBeaver Corp and others
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
*/
package io.cloudbeaver.model;
import io.cloudbeaver.server.CBConstants;
import org.jkiss.code.NotNull;
import org.jkiss.dbeaver.model.net.DBWHandlerConfiguration;
import org.jkiss.dbeaver.model.net.DBWHandlerType;
@@ -88,7 +89,9 @@ public class WebNetworkHandlerConfig {
DBPPropertyDescriptor[] descriptor = configuration.getHandlerDescriptor().getHandlerProperties();
for (DBPPropertyDescriptor p : descriptor) {
if (p.hasFeature(RegistryConstants.ATTR_PASSWORD)) {
secureProperties.computeIfPresent(p.getId(), (k, v) -> CommonUtils.isEmpty(v) ? null : WebConnectionInfo.SECURED_VALUE);
secureProperties.computeIfPresent(p.getId(), (k, v) ->
CommonUtils.isEmpty(v) ? null : CBConstants.SECURED_VALUE
);
}
}
return secureProperties;

Some files were not shown because too many files have changed in this diff Show More