Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
240 commits
Select commit Hold shift + click to select a range
8afc005
fix(arraystore): Fix arraystore behaviour for collection like fields …
ajivanyandev Sep 1, 2026
eb88910
GridCore data: Remove `DataSourceAdapter` dynamic member-copy and typ…
bit-byte0 Sep 1, 2026
d65ae0d
DataGrid: extract the row update path from dataController (#34986)
Alyar666 Sep 2, 2026
7bb9ee2
Core(Events): remove m_ prefix from the remaining event files
EugeniyKiyashko Sep 2, 2026
5842e75
Core(Events): improve typing of the events engine and the remaining e…
EugeniyKiyashko Sep 2, 2026
87e40d0
Grids: encapsulate FilterSyncController's cross-module surface (#35009)
anna-shakhova Sep 2, 2026
be7a8c9
GridCore data: Type `DataSourceAdapter` public methods and props (#35…
bit-byte0 Sep 3, 2026
54e3d3f
GridCore - CustomLoadPipeline - Refactor (#35002)
Tucchhaa Sep 3, 2026
159b84e
chore(security): override browserslist and postcss-selector-parser vu…
bit-byte0 Sep 3, 2026
b9f5de6
Grids columns: move focus and stateStoring resolution to their extend…
anna-shakhova Sep 3, 2026
e0f16b3
Grids - DataController: Extract fields to extenders (#35030)
Alyar666 Sep 3, 2026
e541fba
Up gantt and diagram versions (#35041)
zabelin-vladimir Sep 3, 2026
2fa7292
feature(chore, security): Remove SystemJS from app demos (#34676)
vorobey Sep 3, 2026
53ee3b1
A11y: expose the disabled state on the widget root, restore the check…
EugeniyKiyashko Sep 3, 2026
bb54d9b
e2e demos: remove unreachable screenshot etalons and mask (#35038)
EugeniyKiyashko Sep 4, 2026
76f83a7
e2e demos: compare demo screenshots without the blanket tolerance ove…
EugeniyKiyashko Sep 4, 2026
f810dfc
Scheduler - mock date in demo for screenshots testing (#35054)
dmlvr Sep 4, 2026
49d66d6
Tooltip: ESC key does not close both the Tooltip and its parent overl…
pharret31 Sep 4, 2026
90beeb9
chore(security): bump fast-uri, qs and fflate overrides to patched ve…
bit-byte0 Sep 4, 2026
674e0aa
CI: fail a hung TestCafe test after 3 minutes instead of waiting for …
EugeniyKiyashko Sep 5, 2026
ea9296e
Grids - DataController: Extract row type knowledge to extenders (#35031)
Alyar666 Sep 6, 2026
064edf9
CardView - flaky tests in 26.1 (#35051)
bit-byte0 Sep 7, 2026
c4768c3
Grids - DataController: Extract editing state knowledge to extenders …
Alyar666 Sep 7, 2026
0712ad3
TreeList - DataSourceAdapter - Extract tree building utils (#35053)
Tucchhaa Sep 7, 2026
9ad4252
chore(security): override fast-uri and qs in sbom package (GHSA-5jgf-…
bit-byte0 Sep 7, 2026
d860df8
Grids: create dataSourceController (#35040)
anna-shakhova Sep 7, 2026
35f2b92
CI: Always run full test matrix in visual-test-demos workflow (#35020)
alexslavr Sep 7, 2026
d2dd8ad
Overlay: SpeedDialAction has no right offset when a vertical scrollba…
EugeniyKiyashko Sep 7, 2026
dc890c7
Styles: lint theme variables for branch duplicates, missing !default …
EugeniyKiyashko Sep 7, 2026
5a13cc5
fix (demos): Workaround the broken pivotgrid demo (#35044)
ajivanyandev Sep 7, 2026
63b1929
Core(Data): remove m_ prefix from files
pharret31 Sep 4, 2026
b88332b
Core(Data): fix typing and eslint issues
pharret31 Sep 4, 2026
8c9dd6e
chore(deps): bump axe to v4.13.0 (#34935)
EugeniyKiyashko Sep 7, 2026
2035e3c
Grids: retarget `dataController._dataSource` readers (#35076)
anna-shakhova Sep 8, 2026
4083ca6
Lookup - Screen readers do not pick up NoDataText when Lookup is empt…
dmlvr Sep 8, 2026
d89ef0a
fix (demos): Revert the ResolveTimeConflicts date hardcode and mask t…
aleksei-semikozov Sep 8, 2026
d96abb4
Grids - DataController: Extract user state knowledge to extenders (#3…
Alyar666 Sep 8, 2026
a65d008
Legacy themes: remove the dead pull-down raster and the duplicated co…
EugeniyKiyashko Sep 8, 2026
9e6dd03
refactor(ci): store flaky candidates in an artifact (#35083)
IlyaKhD Sep 8, 2026
b37a475
chore: fix demos render signal origin (#35078)
vorobey Sep 8, 2026
2dc7b76
Grids: retarget `dataController.dataSource()` method (#35093)
anna-shakhova Sep 8, 2026
742b7d4
T1334644: Themebuilder swatch fix (#35075)
vorobey Sep 8, 2026
fde2943
Grids - FilterController: Move the filter build into FilterController…
Alyar666 Sep 9, 2026
5b08774
feat(ci): build flaky test report for the repository monitor (#35100)
IlyaKhD Sep 9, 2026
378a677
Core(Events): fix dxclick nodes disposing unsubscribe (#35014)
dmlvr Sep 9, 2026
a702623
Grids - FilterController: Cover the current filter behavior with test…
Alyar666 Sep 9, 2026
8cedccf
Grids: retarget store, getDataSource, getCachedStoreData, loadingOper…
anna-shakhova Sep 9, 2026
8cae709
Grids - FilterController: Move `isFilterSyncActive` into FilterContro…
Alyar666 Sep 9, 2026
56d91f1
chore(deps): fix deps alerts (#35110)
dmlvr Sep 9, 2026
da52969
Nx: remove the dead lint-css and test-styles targets of the devextrem…
EugeniyKiyashko Sep 9, 2026
17aba21
Grids: retarget `key` and `keyOf` methods (#35115)
anna-shakhova Sep 9, 2026
38da153
Grids - DataController: Extract summary loadAll knowledge to extender…
bit-byte0 Sep 9, 2026
0e7bae2
Rename files: remove m_ prefix
Raushen Aug 14, 2026
f5efe48
NumberBox: refactor and improve typing
Raushen Sep 8, 2026
475c227
fix(env): restore minimumReleaseAge (#35133)
IlyaKhD Sep 9, 2026
e4054af
Tabs: label icon-only tabs after their icon, as Button does (#5077) (…
EugeniyKiyashko Sep 9, 2026
452d172
Grids - DataController: Extract scrolling knowledge to extenders (#35…
bit-byte0 Sep 10, 2026
ed2e328
CI: Extend on-demand runners usage (#35141)
alexslavr Sep 10, 2026
bdc81f4
HtmlEditor - AI Text Editing demo: fix typo in Angular import path (#…
artem-kurchenko Sep 10, 2026
92883d8
Grids - DataController: Extract getRowIndicesForExpand into master de…
bit-byte0 Sep 10, 2026
2045c33
chore: partial revert for demo-render-signal origins (#35124)
vorobey Sep 10, 2026
f7f1db2
Grids: retarget `dataController.push` method (#35123)
anna-shakhova Sep 11, 2026
370fc84
chore(deps): fix deps alerts (#35145)
dmlvr Sep 11, 2026
d5d3e32
Grids - DataController: Reuse a shared column value predicate (#35148)
bit-byte0 Sep 11, 2026
4d46169
Core: remove m_ prefix from events_strategy file
EugeniyKiyashko Sep 9, 2026
e4bf563
Core: fix eslint/ts errors after rename events_strategy
EugeniyKiyashko Sep 10, 2026
2fee135
Grids: retarget counting methods to dataSourceController (#35131)
anna-shakhova Sep 11, 2026
2332c4f
Chat - fix Prompt Suggestions Angular demo (#35163)
dmlvr Sep 11, 2026
8ebea88
chore(deps): fix angular alerts (#35165)
dmlvr Sep 11, 2026
ecebedb
CardView: fix editing form fill when `customizeItem` set (T1335190) (…
anna-shakhova Sep 14, 2026
8facfdf
Grids - FilterController: Move `updateFilter` into FilterController (…
bit-byte0 Sep 14, 2026
c7ac0d9
chore(deps): update dependency @types/lodash to v4.17.25 (#34704)
renovate[bot] Sep 14, 2026
51da703
T1334896 - DateBox — Value isn't reset after selecting a date and cle…
Raushen Sep 14, 2026
8cddca4
QUnit tests: remove systemjs (#35021)
vorobey Sep 14, 2026
e6ccdfb
Grids - FilterRow: Extract the filter row expressions into utils (#35…
Alyar666 Sep 14, 2026
ece12fc
Grids: remove _dataSource field from dataController (#35177)
anna-shakhova Sep 14, 2026
f12009e
Demo: chat-ai-integration imporved error handling (#35081)
flagmanAndrew Sep 14, 2026
6884276
Grid Demos: Remove babel-polyfill (#35152)
Alyar666 Sep 14, 2026
c480b59
Core: remove m_ prefix from the small core files and improve typing (…
EugeniyKiyashko Sep 15, 2026
0e6e5f3
Grids - FilterController: Move the filter expression vocabulary into …
bit-byte0 Sep 15, 2026
e34364d
Core: remove m_ prefix from action & element_data files
EugeniyKiyashko Sep 15, 2026
5a74a93
Core: fix eslint/ts errors after rename action & element_data
EugeniyKiyashko Sep 15, 2026
c27711b
Element_data: cleanData must accept array-likes without Symbol.iterat…
EugeniyKiyashko Sep 15, 2026
c6c4ab6
Charts: convert the theme managers into ES6 classes and improve typin…
EugeniyKiyashko Sep 15, 2026
069af77
Feature/react inline eslint rules (#35189)
DuckTieCorpMember Sep 16, 2026
7826d2e
Core: remove the dead originalAdd fallback from EventsStrategy.on (#3…
EugeniyKiyashko Sep 16, 2026
2a48e3d
Charts: convert the gauge indicators, range containers and tracker in…
EugeniyKiyashko Sep 16, 2026
50a0075
Grids - HeaderFilter: Extract the header filter expressions into util…
Alyar666 Sep 16, 2026
85ff854
Core: remove m_ prefix from dom_adapter & template_manager files
EugeniyKiyashko Sep 15, 2026
9855f47
Core: fix eslint/ts errors after rename dom_adapter & template_manager
EugeniyKiyashko Sep 15, 2026
8fadf90
Grids - Search: Extract the search filter expression into utils (#35197)
Alyar666 Sep 16, 2026
c02a6a9
Grids - FilterSync: Small code refactoring and addition of Jest tests…
Alyar666 Sep 16, 2026
b3dce61
Grids AIColumn: fix dataSource subscription on adapter rebuild (#35192)
anna-shakhova Sep 16, 2026
f67970e
CardView: answer hasAdapter from the dataSource option (#35231)
anna-shakhova Sep 16, 2026
fded72b
GridCore - ColumnsController - Remove usage of DataController (#35185)
Tucchhaa Sep 16, 2026
45a25db
Grids: fix dataSourceAdapter naming (#35209)
anna-shakhova Sep 16, 2026
a14651c
Core: remove m_ prefix from devices file
EugeniyKiyashko Sep 16, 2026
869941b
Core: fix eslint/ts errors after rename devices
EugeniyKiyashko Sep 16, 2026
14dd03a
Charts: convert the gauge widgets into ES6 classes and improve typing…
EugeniyKiyashko Sep 16, 2026
f73b4a2
chore(security): codeql fixes for demos build scripts (#35208)
vorobey Sep 16, 2026
e8c1eb5
Charts: convert the sparklines into ES6 classes and improve typing (#…
EugeniyKiyashko Sep 17, 2026
de73428
Renderer_base: remove m_ prefix and improve typing (#35239)
EugeniyKiyashko Sep 17, 2026
60e8d8e
DataGrid / TreeList: Use module-specific RowDragging exported types (…
mpreyskurantov Sep 17, 2026
a6a600d
Grids: remove deprecated allowSearch in HeaderFilter, ColumnHeaderFil…
anna-shakhova Sep 17, 2026
e7c495d
Update to Angular 21 (#35258)
GoodDayForSurf Sep 17, 2026
dcbd479
Grids: remove deprecated ColumnChooser options (#35262)
anna-shakhova Sep 17, 2026
a3cd9fa
Scheduler: add Multilevel Grouping demo description (#35143)
vladaskorohodova Sep 17, 2026
27dde93
fix(wrappers): resolve PivotGrid/FieldChooser texts naming (#34932)
ajivanyandev Sep 17, 2026
687f996
chore: fixes for codeQL (#35263)
vorobey Sep 17, 2026
11f87df
GridCore data: Invert focus push-reactions (`_fireChanged`, `_handleD…
bit-byte0 Sep 17, 2026
88c2b96
Grids - FilterController: Build the additional filter from filter sou…
Alyar666 Sep 17, 2026
cf7520f
Charts: convert the funnel into an ES6 class and improve typing (#35259)
EugeniyKiyashko Sep 17, 2026
2c554ee
TreeList - DataSourceAdapter - Extract branch loading util (#35136)
Tucchhaa Sep 18, 2026
44f7a09
Demos: Fix typo in HtmlEditor texts (#35268)
flagmanAndrew Sep 18, 2026
828e06c
Demos: remove columnsAutoWidth prop in DataGrid (#35271)
flagmanAndrew Sep 18, 2026
8356bd4
Grids: remove deprecated HeaderFilter options (#35265)
anna-shakhova Sep 21, 2026
74f4a45
fix(sbom): add devextreme-extra-deps (#35269)
IlyaKhD Sep 21, 2026
6aa21e7
Chart - ScrollBar: the thumb jumps to the beginning of the bar when t…
dmlvr Sep 22, 2026
d0af480
Themes: drop the declarations the cascade never renders (#35251)
EugeniyKiyashko Sep 22, 2026
e4d87e2
Charts: convert the treeMap into an ES6 class and improve typing (#35…
EugeniyKiyashko Sep 22, 2026
2e835a7
Charts: convert the sankey into an ES6 class and improve typing (#35286)
EugeniyKiyashko Sep 22, 2026
a696e70
Charts: convert the vectorMap into an ES6 class and improve typing (#…
EugeniyKiyashko Sep 22, 2026
e1ff8aa
Core(Utils - Array): remove m_ prefix & improve typing (#35291)
pharret31 Sep 22, 2026
ea7e988
Charts: convert the rangeSelector into an ES6 class and improve typin…
EugeniyKiyashko Sep 22, 2026
5f3445b
Popup: take the drag and resize area from the view port (#35301)
EugeniyKiyashko Sep 23, 2026
3aa7fd3
Scheduler: update Multilevel Grouping demo description (#35308)
vladaskorohodova Sep 23, 2026
e1ab58d
Themes: drop the module variables nothing reads (#35300)
EugeniyKiyashko Sep 23, 2026
66c3f89
Charts: convert the BaseWidget into an ES6 class and improve typing (…
EugeniyKiyashko Sep 23, 2026
64921f6
GridCore data: Decompose `_updateFocusedRowIfNeeded`, delete `_focusC…
bit-byte0 Sep 23, 2026
b80c131
GridCore - Remove 'rowDragging.filter' option from d.ts and 'useKeybo…
Tucchhaa Sep 23, 2026
dc743da
Grids - FilterSync: Move the column option synchronization into the c…
Alyar666 Sep 23, 2026
759dafc
Charts: convert the BaseChart and AdvancedChart into ES6 classes and …
EugeniyKiyashko Sep 23, 2026
8c766d5
Charts: convert the dxChart, dxPolarChart, dxPieChart, the trackers a…
EugeniyKiyashko Sep 23, 2026
ebc47cb
CodeQL: fix false-positive alerts (#35323)
pharret31 Sep 23, 2026
d565b65
DataGrid: Refactor ResizingController._synchronizeColumns (#34325)
nightskylark Sep 23, 2026
3c23f04
T1329677 DataGrid - Column width changes are not applied immediately …
nightskylark Sep 24, 2026
5fb5f08
Core: remove m_ prefix from version & browser files
dmlvr Sep 21, 2026
99005ec
Core: fix eslint/ts errors after rename version & browser
dmlvr Sep 23, 2026
b125d90
Core: remove m_ prefix from ajax & ajax_utils files
dmlvr Sep 22, 2026
43799d5
Core: fix eslint/ts errors after rename ajax & ajax_utils
dmlvr Sep 23, 2026
3b3aee3
Grids: add shared types for columnsController methods (#35320)
anna-shakhova Sep 24, 2026
f63e16c
Add the e2e/playwright package with the component test infrastructure…
aleksei-semikozov Sep 24, 2026
fff9072
chore: clear empty lines in generated devextreme-angular files (#35330)
alexslavr Sep 24, 2026
985e143
GridCore data: Decompose `_updateFocusedRowIfNeeded`, delete `_focusC…
bit-byte0 Sep 24, 2026
c8b7023
Grids: type columnsController index and data-type utils (#35331)
anna-shakhova Sep 24, 2026
bcf6a82
DataGrid - Remove deprecated 'rowTemplate' option (#35280)
Tucchhaa Sep 25, 2026
30b4e25
Add DataGrid - AI-Powered Detail View Demo (#34775)
markallenramirez Sep 25, 2026
b9acafb
chore(deps): up chrome to 153 (#35284)
vorobey Sep 25, 2026
3cac356
Grids: type columnsController controller methods (part 1) (#35335)
bit-byte0 Sep 25, 2026
1b95f0b
fix(nx): Add info logs for pnpm run dev (#35347)
ajivanyandev Sep 25, 2026
016f583
Charts: redraw the chart when a visualRange applied together with a f…
EugeniyKiyashko Sep 25, 2026
dc81680
Grids: type utils for columns creation (#35334)
anna-shakhova Sep 25, 2026
2949864
LoadPanel - Remove deprecated 'indicatorSrc' option (#35355)
Tucchhaa Sep 26, 2026
07f7e8f
DataGrid: Fix horizontal scroll position jumping during vertical scro…
Alyar666 Sep 28, 2026
51a0ded
RangeSelector: keep the slider marker text inside its marker in RTL m…
EugeniyKiyashko Sep 28, 2026
d36886b
Angular Demos - detectChanges fix for Angular ChangeDetectionStrategy…
flagmanAndrew Sep 28, 2026
10deda5
DataGrid: fix AI-Powered Detail View Demo styles (#35366)
pharret31 Sep 28, 2026
4dada30
Core: remove m_ prefix from templates & options files
EugeniyKiyashko Sep 26, 2026
e7d1956
Core: fix eslint/ts errors after rename templates & options
EugeniyKiyashko Sep 26, 2026
98e5b2d
Grids - ColumnsController: Extract applyUserState into the UserStateA…
Alyar666 Sep 28, 2026
dab3f3a
chore(deps): remove unused dependencies from devextreme (#35367)
EugeniyKiyashko Sep 28, 2026
d443e4e
Grids: type utils findColumn and columnOptionCore (#35342)
anna-shakhova Sep 28, 2026
8ee6360
Playwright - Pass widget handlers through a page factory instead of n…
aleksei-semikozov Sep 28, 2026
4de6b5d
Grids: type visible and band column layout utils (#35354)
anna-shakhova Sep 29, 2026
6739169
Grids: type move and sort utils, cover them with Jest tests (#35374)
anna-shakhova Sep 29, 2026
a181ecb
Grids: type columnsController controller state (#35384)
bit-byte0 Sep 29, 2026
76fb222
Themes: ship Roboto 3.015 (SIL OFL 1.1) as the material fallback font…
EugeniyKiyashko Sep 29, 2026
cf07148
chore(deps): update dependency @eslint/eslintrc to v3.3.7 (#34703)
renovate[bot] Sep 29, 2026
1f9c01f
Charts: rename the vector map parsers from .js to .ts
EugeniyKiyashko Sep 25, 2026
c411ea0
Charts: move the vector map parsers to TypeScript
EugeniyKiyashko Sep 29, 2026
fcd8e6b
Angular Demos - fix NG0100 in component and grid demos (#35375)
flagmanAndrew Sep 29, 2026
5408480
Themes: embed the DevExtreme copyright, license and version into the …
EugeniyKiyashko Sep 29, 2026
b4f471d
Grids - Columns controller: Extract the ignored column options rule f…
Alyar666 Sep 30, 2026
aca83ee
Core: apply default options rules with a device array only on the lis…
EugeniyKiyashko Sep 30, 2026
ffc7ca8
Playground: remove old approaches, leave vite playground (#35332)
vorobey Sep 30, 2026
1f2184d
Create skill to type m_ prefixed files (#35415)
anna-shakhova Sep 30, 2026
d03c9f4
DataGrid: Fix a column added at runtime being duplicated on every sta…
Alyar666 Sep 30, 2026
52ad681
Grids: type rest columns controller utils (#35408)
anna-shakhova Sep 30, 2026
74f33fa
Grids - ColumnsController - Implement integration tests for applyUser…
Tucchhaa Sep 30, 2026
6bc6c39
Grids - Remove 'm_' prefixes - AI Column, Toast & misc (#35432)
Tucchhaa Oct 1, 2026
c11c1cc
Grids: remove m_ prefix from clean test files and fix eslint config (…
anna-shakhova Oct 1, 2026
b7028ee
Fix: DataGrid Demos - Edit State Management demo template error when …
16adianay Oct 1, 2026
960e3f7
Grids: type and remove m_ prefix from DataGrid and TreeList core modu…
Alyar666 Oct 1, 2026
fc2d77e
Grids: type columnsController file-local members and public API (#35433)
bit-byte0 Oct 1, 2026
87c36cd
chore(deps): alert overrides, remove old overrides (#35397)
vorobey Oct 2, 2026
18575eb
fix(angular): remove loadPanel.indicatorOptions from legacy nested co…
mpreyskurantov Oct 2, 2026
2af6f2d
Angular Demos - remove eager (#35419)
flagmanAndrew Oct 2, 2026
704e0ef
GridCore - ColumnsController - Add types to the controller state (#35…
bit-byte0 Oct 2, 2026
d8710ae
angular demos - fix ng-if (#35429)
flagmanAndrew Oct 2, 2026
c063dba
Fix Demos: Use public API to detect the current theme (#35454)
16adianay Oct 2, 2026
69fe5cc
Grids: convert the pivot grid LocalStore into an ES6 class and remove…
EugeniyKiyashko Oct 5, 2026
4d4b140
Grids: remove m_ prefix from files in grid_core columns_controller mo…
bit-byte0 Oct 5, 2026
b977902
Grids: type core m_modules file (#35458)
anna-shakhova Oct 5, 2026
fd325db
Charts: convert the prototype-based constructors into ES6 classes and…
EugeniyKiyashko Oct 5, 2026
549fe5d
Grids: remove m_ prefix from m_modules (#35476)
anna-shakhova Oct 5, 2026
a5c4e4e
Core: remove m_ prefix from call_once & locker files
dmlvr Sep 29, 2026
e501504
Core: fix eslint/ts errors after rename call_once & locker
dmlvr Sep 29, 2026
d723c49
Core: type the knockout locks, import callOnce from the internal modu…
EugeniyKiyashko Oct 5, 2026
7acf8a4
update devexpress-gantt version to 4.1.71 (#35418)
karamyanvahan Oct 5, 2026
96f82d2
Charts: convert the renderer and animation into ES6 classes and impro…
EugeniyKiyashko Oct 5, 2026
738fd04
Charts: fix the bugs and clean up the code found during the ES6 conve…
EugeniyKiyashko Oct 6, 2026
1d2d343
chore(deps): update typescript to 5.9.3 (#35428)
EugeniyKiyashko Oct 6, 2026
42e61dc
Core(utils): type 20 m_ files ahead of the rename, part 1 (#35484)
EugeniyKiyashko Oct 6, 2026
dbf9a35
Core(utils): fix the getNavigator typing error that TypeScript 5.9 re…
EugeniyKiyashko Oct 6, 2026
3cf667f
chore(deps): update sbom-toolkit (#35493)
mpreyskurantov Oct 6, 2026
eae1289
fix(dxHttpModule): Fix devextreme angular http module total reporting…
ajivanyandev Oct 6, 2026
774307c
Charts: import the internal modules instead of their public re-export…
EugeniyKiyashko Oct 6, 2026
7fdaeed
FilterBuilder: fix errors and improve typing (#35477)
EugeniyKiyashko Oct 6, 2026
a5f5e2a
Pagination: ignore layout measurements taken before the theme CSS is …
EugeniyKiyashko Oct 6, 2026
4f06959
DataGrid: Fix the column headers scroll position reset in RTL mode wi…
Alyar666 Oct 6, 2026
0ad61de
Charts: import the transform event names from the internal module (#3…
EugeniyKiyashko Oct 6, 2026
439fba2
DataGrid: Fix the column separator position when resizing a column ne…
Alyar666 Oct 6, 2026
85a61e9
Templates, Options: align the public d.ts, type deprecated options, v…
EugeniyKiyashko Oct 6, 2026
976322e
Core: type the Options getters and integrationOptions, drop dead temp…
EugeniyKiyashko Oct 6, 2026
264d03f
T1336404 - ColorBox - Clearing the value with the delete/backspace ke…
dmlvr Oct 6, 2026
599df3d
Draggable, Sortable: fix errors and improve typing (#35481)
EugeniyKiyashko Oct 6, 2026
980c9bf
Grids: fix keyboard focus jumping back with async templates (T1336240…
anna-shakhova Oct 7, 2026
e5cbfd0
FilterBuilder, Draggable, Sortable: remove m_ prefix (#35525)
EugeniyKiyashko Oct 7, 2026
37ac010
Wrappers: verify the published React and Vue declarations with the co…
EugeniyKiyashko Oct 7, 2026
0ec3320
Data source adapter, virtual data loader, TreeList data controller an…
bit-byte0 Oct 7, 2026
36bd5ed
Grids: deduplicate CSS class constants used in ColumnsView (#35540)
anna-shakhova Oct 7, 2026
6b9c5a3
Fix anti-forgery request handling in demos (#35513)
GoodDayForSurf Oct 7, 2026
f877ed1
Core: replace Class.abstract() with abstract methods and drop the ins…
EugeniyKiyashko Oct 7, 2026
fe1f34b
GridCore - Fix eslint and add types to leaf helpers (m_aggregate_calc…
Tucchhaa Oct 7, 2026
928a0dd
Demo - remove redundant accessibility exceptions (#35511)
flagmanAndrew Oct 7, 2026
c9c5c98
FilterBuilder, Draggable, Sortable: fix the follow-up bugs and improv…
EugeniyKiyashko Oct 7, 2026
6cd8a16
Themes: align the icon font attribution with the DevExtreme EULA (#35…
EugeniyKiyashko Oct 7, 2026
fa6d868
Animation, Diagram, Knockout: convert the Class.inherit leftovers int…
EugeniyKiyashko Oct 7, 2026
7cca5ac
Animation: remove the m_ prefix from the presets module (#35549)
EugeniyKiyashko Oct 7, 2026
05e9aab
chore(security): Add overrides to get rid of audit alerts (#35526)
ajivanyandev Oct 8, 2026
ba2669b
chore(deps): update sbom-toolkit to 0.15.1 (#35553)
r-farkhutdinov Oct 8, 2026
157550f
Stop wrapper regeneration entirely (#35270)
alexslavr Oct 8, 2026
204df64
Grids: type m_column_state_mixin and m_columns_view (#35510)
anna-shakhova Oct 8, 2026
89664d4
Data source adapter, virtual data loader, TreeList data controller an…
bit-byte0 Oct 8, 2026
099ce4f
Data source adapter, virtual data loader, TreeList data controller an…
bit-byte0 Oct 8, 2026
2dac251
chore(security): override compression and http-cache-semantics in sbo…
anna-shakhova Oct 8, 2026
c83034a
Core(utils): type 6 m_ files ahead of the rename, part 2 (#35504)
EugeniyKiyashko Oct 8, 2026
547f468
Merge main into feature/demo_custom_AI_assistant
dmlvr Oct 8, 2026
84e53ea
Chat - Page-Level AI Assistant: migrate demo from SystemJS to bundled…
dmlvr Oct 8, 2026
123cba1
Chat - Page-Level AI Assistant: remove duplicated demo-container wrap…
dmlvr Oct 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
127 changes: 127 additions & 0 deletions .claude/skills/typing-m-files/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
---
name: typing-m-files
description: Two separate jobs for `m_*.ts` files under `packages/devextreme/js/__internal`. Type: bring a file (or a line range of one) to 0 strict ESLint errors without changing behaviour. Rename: once a typed file is merged at 0, drop its `m_` prefix in a rename-only PR. Use when someone asks to type an `m_` file or part of it, fix the strict lint of an `m_` file, or rename a typed `m_` file.
---

# Typing `m_` files

An `m_*.ts` file under `js/__internal` was migrated from JS, and gets relaxed lint rules (mostly `warn`). Its **strict errors** and **warnings** are what it gets once the `m_` prefix is gone. The typing work brings a file to 0 strict errors while it still has the `m_` prefix. It also fixes the warnings whose fix provably behaves the same.

**Type or rename, never both.** The developer asks for one of the two:
- **Type** a file or a range: this file, from "Input" on.
- **Rename** a typed file: [rename.md](rename.md).

They are always two PRs from two branches, one after the other. PRs are squash-merged into `main`, so separate commits in one PR don't help: the squashed commit holds the rename and the rewrite together, and git then shows a delete plus an add. The rename branch is made from `main` after the typing PR has been merged; for a file typed in parts, after every part's PR. If you're asked for both at once, do the typing and say the rename comes after the merge.

**Area rules:** for a file under `js/__internal/grids/`, also follow [grids.md](grids.md).

## Input

The developer gives the files one per line, in the format of the typing checklists. There is a line range when only a part of a file is the task:

```
`packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts`, lines 1–542
`packages/devextreme/js/__internal/grids/tree_list/m_focus.ts`
```

- Without `lines`, the task is the whole file.
- A line may also name the part and its first and last member: `` `…/m_columns_view.ts`, lines 553–825 (part 2 of 4: `ColumnsView.renderDelayedTemplates` … `ColumnsView._renderCells`) ``. Check that the range starts at the first member and ends with the last one. If it doesn't, the lines have moved since the range was picked. Find the members, and tell the developer the new range before starting.
- Without member names, if a range starts or ends inside a class member or a statement, tell the developer before starting.
- Use the same format whenever you name a file or a range in your report.

## Count strict errors and warnings

```bash
# from the repo root; paths may be repo-relative, packages/devextreme-relative or absolute
node .claude/skills/typing-m-files/scripts/strict-lint.mjs \
'`packages/devextreme/js/__internal/grids/grid_core/selection/m_selection.ts`, lines 1–542' \
'`packages/devextreme/js/__internal/grids/tree_list/m_focus.ts`' \
[--summary] [--errors] [--json] [--check]
```

The script takes the input lines as they are, including a trailing `(part …)` and a leading `- [ ] `. Put them in single quotes, or the shell runs the backticks. Several lines can go in one argument. The short form `path/m_x.ts:1-542` works too.

For each file the script prints its strict errors and its warnings (inside the range, if given), a count per rule for each, and each message. `--errors` leaves the warning messages out of the list. It also shows how many errors inline disables hide; that number is for information only. `--check` exits with 1 while any errors are left; warnings don't fail it. It takes the strict rules from `packages/devextreme/eslint.config.mjs` each time it runs, so its numbers stay correct when the config changes.

Not counted at all: `max-classes-per-file`, `simple-import-sort/imports` and `spellcheck/spell-checker` (kept on purpose).

## Workflow

1. **List the work.** Run the script on the file or range. Its errors and warnings are what the task fixes.
2. **Type, in this order.**
1. Class fields. Only in a whole file, or in the part that holds the class fields (usually the first): every later method depends on them.
2. Signatures: param types and return types.
3. The remaining rules inside bodies.
4. Warnings, one at a time, only where the fix provably behaves the same (see Warnings below).

[fixes.md](fixes.md) has the team's fix for each rule, most frequent first, and a section on warnings.
3. **Review your own diff against [traps.md](traps.md).** Every body edit must keep behaviour exactly the same.
4. **Checks** (below).
5. **Report:**
- strict errors and warnings, before and after, for each file or range in the input format;
- every body edit, one line each, with why it behaves the same;
- what was added to the module's `types.ts`;
- the warnings left, grouped by rule, with the reason each was left.

## Rules

**Scope**
- The task's files are the given files plus the module's own `types.ts`, where new types go (create it if the module has none). With a range, touch only those lines of the given file, plus its import block.
- Anything else needs the developer's OK before you touch it: the test file for an agreed refactor, another module's `types.ts`, or callers in other files.
- If a new type (usually a return type) breaks callers in other files, stop and ask the developer. The options are a compile-only fix at those callers, a wider type, or agreeing it with whoever is typing those files.
- Don't change public API: no edits to `js/**/*.d.ts`.

**Typing only**
- Annotate params, locals, returns and fields.
- Change a body only where a new type makes it fail to compile (a guard, a `?? fallback`, a narrowing), or where a strict rule needs it (`fixes.md`). Either way, the edit must provably behave the same for every value the code can get. A value from a source that isn't typed yet gets a directive, not a cast (see Disables).
- Don't refactor. That means no extracting functions, rewriting loops, renaming members or functions, removing dead code or dropping unused params, unless the developer agrees for that one function. Renaming a local variable to fix `no-shadow` is fine.
- An agreed refactor gets tests first: written and passing on the old code, then the change, then a mutation check that the tests catch a broken version. The test file is outside the task: name it when you ask for the agreement.
- A bug found while typing is not fixed in the typing PR. Tell the developer, with file, line and why it's a bug.

**Warnings**
- The target is 0 errors. Warnings are best effort.
- Fix a warning when the fix provably behaves the same, for every value the code can get. "Provably" means you can show it from the types or the code: a trustworthy type (not `any`), or the surrounding code. A test run is not proof.
- Otherwise leave the warning as it is, and don't add a disable for it.
- `fixes.md` ("Warnings") says when each warning rule's fix behaves the same.

**Where types go**
- Reuse before creating: public types from the `js/**/*.d.ts` files (`@js/common`, `@js/core/utils/callbacks`, the component's own `@js/ui/<component>`, …), then the module's own `types.ts`.
- A new type goes into the module's own `types.ts`. Other modules import it from there.

**Disables**
- Existing inline `eslint-disable` comments and `@ts-expect-error` may stay.
- **A value from a source that isn't typed yet gets a directive, not a cast.** A cast stays silent once the source gets typed. A directive is then reported as unused, so someone sees it and removes it.
- The value is `any`, which is what `no-unsafe-return` reports: use `// eslint-disable-next-line @typescript-eslint/no-unsafe-return -- <what isn't typed yet>`. Don't use `@ts-expect-error` here: TypeScript sees no error on an `any` value, so tsc fails at once with TS2578 (unused directive).
- TypeScript rejects the value, because it is `unknown` or has a wider or wrong type: use `// @ts-expect-error <what isn't typed yet>`. Keep that line short, because the directive hides every error on it.
- Remove a directive once it is reported as unused: TS2578 from tsc, or "Unused eslint-disable directive" from ESLint. ESLint shows that as a warning, and `strict-lint.mjs` shows it as a note.
- Any other new disable is a last resort: line-level, with a reason (`-- <why>`). Never a file-level disable.

**Style**
- Braces around every `if` body, including one-line guards.
- No `_` prefix on new members.
- No new comments, except a short one that says *why*.

**Never**
- Run `pnpm run dev`. The developer runs it and tells you when the build is ready.
- Edit the generated wrappers (`packages/devextreme-{angular,react,vue}/src`), `localization/default_messages.ts` or `cldr-data`.
- Commit or push without being asked.

## Checks before a PR

Run from `packages/devextreme`:

```bash
node ../../.claude/skills/typing-m-files/scripts/strict-lint.mjs --check '<input lines>' # 0 errors; the warnings left go in the report
pnpm exec eslint <files> # no errors
pnpm exec tsc --noEmit -p js/__internal/tsconfig.json; echo "exit $?" # exit 0
```

- `tsc`: use `js/__internal/tsconfig.json`. The root `tsconfig.json` compiles only `.d.ts` files, so it passes no matter what. In a fresh worktree, run `pnpm nx build:localization:generate devextreme` first, or you get phantom TS2307 errors for `cldr-data`.
- With a range, only the range must be at 0. The rest of the file keeps its errors until its own part.
- Tests: only those that cover the changed code. Pick them by tracing what uses it, not by folder. Whole-tree runs happen on CI.
- Jest (Jest 30, the flag is plural):
```bash
pnpm exec jest --no-coverage --runInBand --selectProjects jsdom-tests --testPathPatterns "<pattern>"
```
- QUnit (`testing/tests/<suite>/…`) runs on the developer's dev server. Ask them to start it and tell you when the build is ready. Then open `http://localhost:20060/run/<path under testing/tests>?notimers=true&nojquery=true&nocsp=true`.
- Before trusting a QUnit result, check the built file of *every* file you changed, under `packages/devextreme/artifacts/transpiled/`. The watch build sometimes skips one without saying so. The built file must be newer than the source and must contain your body edits. Type-only edits leave no trace in the built JS. If a built file is stale, ask the developer to rebuild (`rm -rf .nx/cache`, then restart the dev build).
Loading
Loading