The release has the following notable improvements:
- Dark theme is complete and no longer an experimental feature
 - Transactions are now locked after reconciling
 - Mobile: account creation
 - Mobile: pull-down-to-sync available in the budget page
 - Mobile: swipe up in the footer menu to reveal more pages
 
We are also proud to announce two new experimental features:
Docker tag: 23.12.0
Actual
Version: 23.12.0
Features
- #1739 Added a Sankey chart report as an experimental feature. — thanks shaankhosla
 - #1789 Lock transactions after reconciliation. — thanks zachwhelchel
 - #1791 Create and implement a customizable charts page. Currently hidden under feature flag (experimental). To include ability to save charts and show tiles on Overview page (future PR) — thanks carkom
 - #1925 Dark theme is live!! — thanks carkom
 
Enhancements
- #1758 Swipe up mobile navbar to reveal more menus. — thanks joel-jeremy
 - #1780 Goals: Add indicator of goal status. Add db entries for saving the goal, and for the template json. — thanks shall0pass & youngcw
 - #1788 Added option to select in/out field during import. — thanks Jessseee
 - #1798 Consolidating and making more consistent the warning and upcoming colors. Also includes some dark mode fixes. — thanks carkom
 - #1833 Not allowed duplicated Category names in Category Groups — thanks Shazib
 - #1853 Mobile create account. — thanks joel-jeremy
 - #1858 Mobile budget pull down to sync. — thanks joel-jeremy
 - #1862 Allow month names and abbreviations in dates (e.g. "December 24 2020") when importing — thanks jamescostian
 - #1874 Standardizes mobile colors so that the mobile view feels much more unified. — thanks carkom
 - #1876 Support import of OFX transactions of type INVSTMTMSGSRSV1 — thanks joel-jeremy
 - #1880 Mobile report budget — thanks joel-jeremy
 - #1887 Updates dark theme sidebar color and clean up theme files. — thanks carkom
 - #1900 Larger mobile autocomplete component fonts and paddings. — thanks joel-jeremy
 - #1944 Create category rules during ynab imports — thanks twk3
 - #1980 Validates minimum node version to 18.12.0 for actual-app/api npm package — thanks Marethyu1
 
Bugfix
- #1765 Dark mode - darker tint for pageTextLink. — thanks Evomatic
 - #1820 Fix styling of transaction page on mobile. — thanks KaiBelmo
 - #1836 UPDATES NYNAB import to support importing transactions that contain sub transactions that are account transfers — thanks Marethyu1
 - #1840 Schedule creation modal notify user of weekend skip option — thanks sethgillett
 - #1864 Make Select All respect filters and splits — thanks jamescostian
 - #1867 Fix account filter for budgeted and offbudget accounts, fixes #1577 — thanks sreetamdas
 - #1885 Fix crash when hitting undo after applying a rule to some transactions — thanks jfdoming
 - #1911 Fixing duplicate color issue. — thanks carkom
 - #1916 Fix mobile accounts page padding regression. — thanks joel-jeremy
 - #1917 Goals: Fix infinite loop situation with Schedule keyword — thanks shall0pass
 - #1921 Experimental OFX parser: Support multiple months in OFX file — thanks joel-jeremy
 - #1926 Fix issue with electron builds being stuck on a blank screen. — thanks Shazib
 - #1929 Fix flickering scroll bar that may appear when interacting with the new transaction input amount. — thanks miqh
 - #1930 Bug fixes for custom reports. — thanks carkom
 - #1933 Fix switching budget from rollover budget to report budget and immediately back does not work — thanks paulsukow
 - #1934 Sets minimum node version to 18.12.0 for actual-app/api npm package — thanks Marethyu1
 - #1938 Fix space-comma format for newer NodeJS versions (18.18, and 21.x), fixes #1937 — thanks twk3
 - #1951 Consistent button sizes in budget title bar — thanks joel-jeremy
 - #1955 "Transfer" and "Off Budget" categories in mobile transaction page — thanks joel-jeremy
 - #1962 Fix broken modals. Unlock transactions moved to another account. — thanks zachwhelchel
 - #1965 Fix mobile budget cell save issue — thanks joel-jeremy
 - #1970 Style: change GoCardless success button color — thanks MatissJanis
 - #1975 Bug fixes for cancel add category group. — thanks williamk19
 - #1976 Fix bug in rule transaction apply preventing amount overrides — thanks jfdoming
 - #1984 Goals: Fix Schedule over-budget condition — thanks shall0pass
 - #1987 Fix rule ranker in API. — thanks carkom
 - #1992 Fix locked amount sign in schedule editor — thanks youngcw
 - #2000 Goals: Fix priority sorting — thanks youngcw
 
Maintenance
- #1834 Convert Titlebar, BudgetPageHeader, DynamicBudgetTable, Tooltips components to Typescript. — thanks MikesGlitch
 - #1860 Added dark mode VRT (screenshot) tests — thanks MatissJanis
 - #1868 Consolidating colors so they are more consistent across the app from one page to the next — thanks carkom
 - #1871 Consolidating colors so they are more consistent across the app from one page to the next. — thanks carkom
 - #1875 Removing the last of the static colors and replacing with theme colors. — thanks carkom
 - #1879 Convert BudgetSummaries, MonthPicker, SidebarCategory components to Typescript. — thanks MikesGlitch
 - #1888 Goals: Move goal target calculations to individual files. — thanks shall0pass
 - #1893 Enabled 
react/no-unstable-nested-componentseslint rule. — thanks MatissJanis - #1895 Add budget tables to AQL schema — thanks youngcw
 - #1897 Convert ExpenseGroup, ExpenseCategory, IncomeCategory components to Typescript. — thanks MikesGlitch
 - #1902 Upgrade 
yarnto v4 and better-sqlite3 to v9.1.1. — thanks MatissJanis - #1909 Type hardening action operator in rules.tsx — thanks Marethyu1
 - #1923 Convert CloseAccount, AccountAutocomplete, SavedFilterAutocomplete, PayeeAutocomplete components to Typescript. — thanks MikesGlitch
 - #1936 Refactor AmountInput component to TypeScript. — thanks kymckay
 - #1941 Ported 
GoCardlessfile to TypeScript — thanks MatissJanis - #1942 Ported 
global-eventsto TypeScript — thanks MatissJanis - #1946 Refactor DiscoverSchedules component to tsx and enrich types for schedules discover endpoint. — thanks muhsinkamil
 - #1948 Refactor Payee table to TypeScript and harden generic 
Tablecomponent typing. — thanks kymckay - #1949 eslint: disallow using 'var': no-var rule — thanks MatissJanis
 - #1950 Split up large payee management components file. — thanks kymckay
 - #1956 ESLint prefer-const rule — thanks joel-jeremy
 - #1958 ESLint prefer-const rule — thanks joel-jeremy
 - #1959 Eslint: enable object-shorthand:properties eslint rule — thanks MatissJanis
 - #1960 Make screenshot comparisons more strict to improve reliability — thanks MatissJanis
 - #1972 Update ConfirmCategoryDelete, GoCardlessExternalMsg, ManageRulesModal to tsx — thanks MikesGlitch
 
Actual Server
Version: 23.12.0
Enhancements
- #267 Ability to add and run database/fs migrations — thanks MatissJanis
 - #282 Improved error handling of GoCardless issues — thanks MatissJanis
 
Bugfix
- #274 Add "docker.io/" registry prefix to docker compose image — thanks Valloric
 - #275 Fix: add missing migrations folder for docker — thanks MatissJanis
 - #278 Fix: GoCardless bank sync not working as expected after last migration PR merge — thanks MatissJanis
 - #281 Fix: 
ERR_UNSUPPORTED_ESM_URL_SCHEMEby upgrading node-migrate to v2.0.1 — thanks MikesGlitch & MatissJanis - #283 Fix: non-unique transactionId values for Belfius bank causing missing data. — thanks Nudded
 - #285 Fix: add fixes for BNP Paribas Fortis and Hello Bank — thanks feliciaan
 
Maintenance
- #277 Upgrade 
yarnto v4 andbetter-sqlite3to v9.1.1 — thanks MatissJanis 
