├── .devcontainer ├── devcontainer.json └── docker-compose.yml ├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml ├── ISSUE_TEMPLATE │ ├── bug-report.yml │ ├── config.yml │ └── feature-request.yml ├── PULL_REQUEST_TEMPLATE.md ├── actions │ ├── bump-package-versions │ ├── check-migrations.js │ ├── handle-feature-requests.js │ ├── netlify-wait-for-build │ └── setup │ │ └── action.yml └── workflows │ ├── build.yml │ ├── check.yml │ ├── codeql.yml │ ├── docker-edge.yml │ ├── docker-release.yml │ ├── e2e-test.yml │ ├── electron-master.yml │ ├── electron-pr.yml │ ├── generate-release-pr.yml │ ├── i18n-string-extract-master.yml │ ├── issues-close-feature-requests.yml │ ├── issues-feature-implemented.yml │ ├── issues-remove-help-wanted.yml │ ├── netlify-release.yml │ ├── publish-npm-packages.yml │ ├── release-notes.yml │ ├── size-compare.yml │ ├── stale.yml │ └── update-vrt.yml ├── .gitignore ├── .husky └── pre-commit ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── .secret-tokens.example ├── .yarn ├── patches │ └── adm-zip-npm-0.5.16-4556fea098.patch └── releases │ └── yarn-4.9.1.cjs ├── .yarnrc.yml ├── CONTRIBUTING.md ├── Dockerfile ├── LICENSE.txt ├── README.md ├── bin ├── docker-start ├── package-browser ├── package-electron ├── release-note-generator.ts └── run-vrt ├── data └── .gitkeep ├── demo.png ├── docker-compose.yml ├── eslint.config.mjs ├── package.json ├── packages ├── api │ ├── .gitignore │ ├── README.md │ ├── __snapshots__ │ │ └── methods.test.ts.snap │ ├── app │ │ └── query.js │ ├── index.ts │ ├── injected.js │ ├── methods.test.ts │ ├── methods.ts │ ├── mocks │ │ └── budgets │ │ │ └── .gitkeep │ ├── package.json │ ├── tsconfig.dist.json │ ├── utils.js │ ├── validateNodeVersion.js │ └── vitest.config.ts ├── component-library │ ├── package.json │ ├── src │ │ ├── AlignedText.tsx │ │ ├── Block.tsx │ │ ├── Button.tsx │ │ ├── Card.tsx │ │ ├── FormError.tsx │ │ ├── InitialFocus.ts │ │ ├── InitialFocus.web.test.tsx │ │ ├── InlineField.tsx │ │ ├── Input.tsx │ │ ├── Label.tsx │ │ ├── Menu.tsx │ │ ├── Paragraph.tsx │ │ ├── Popover.tsx │ │ ├── Select.tsx │ │ ├── SpaceBetween.tsx │ │ ├── Stack.tsx │ │ ├── Text.tsx │ │ ├── TextOneLine.tsx │ │ ├── Toggle.tsx │ │ ├── Tooltip.tsx │ │ ├── View.tsx │ │ ├── hooks │ │ │ └── useResponsive.ts │ │ ├── icons │ │ │ ├── .gitignore │ │ │ ├── .svgrrc.js │ │ │ ├── AnimatedLoading.tsx │ │ │ ├── Loading.tsx │ │ │ ├── add-attribute.js │ │ │ ├── index-template.ts │ │ │ ├── logo │ │ │ │ ├── Logo.tsx │ │ │ │ ├── index.ts │ │ │ │ └── logo.svg │ │ │ ├── template.ts │ │ │ ├── v0 │ │ │ │ ├── Add.svg │ │ │ │ ├── Add.tsx │ │ │ │ ├── Delete.svg │ │ │ │ ├── Delete.tsx │ │ │ │ ├── ExpandArrow.svg │ │ │ │ ├── ExpandArrow.tsx │ │ │ │ ├── LeftArrow2.svg │ │ │ │ ├── LeftArrow2.tsx │ │ │ │ ├── Math.svg │ │ │ │ ├── Math.tsx │ │ │ │ ├── Merge.tsx │ │ │ │ ├── RightArrow2.svg │ │ │ │ ├── RightArrow2.tsx │ │ │ │ ├── Split.tsx │ │ │ │ ├── Subtract.svg │ │ │ │ ├── Subtract.tsx │ │ │ │ ├── index.ts │ │ │ │ ├── merge.svg │ │ │ │ └── split.svg │ │ │ ├── v1 │ │ │ │ ├── Add.tsx │ │ │ │ ├── AddOutline.tsx │ │ │ │ ├── AddSolid.tsx │ │ │ │ ├── Adjust.tsx │ │ │ │ ├── Airplane.tsx │ │ │ │ ├── Album.tsx │ │ │ │ ├── AlignCenter.tsx │ │ │ │ ├── AlignJustified.tsx │ │ │ │ ├── AlignLeft.tsx │ │ │ │ ├── AlignRight.tsx │ │ │ │ ├── Anchor.tsx │ │ │ │ ├── Announcement.tsx │ │ │ │ ├── Apparel.tsx │ │ │ │ ├── ArrowDown.tsx │ │ │ │ ├── ArrowLeft.tsx │ │ │ │ ├── ArrowOutlineDown.tsx │ │ │ │ ├── ArrowOutlineLeft.tsx │ │ │ │ ├── ArrowOutlineRight.tsx │ │ │ │ ├── ArrowOutlineUp.tsx │ │ │ │ ├── ArrowRight.tsx │ │ │ │ ├── ArrowThickDown.tsx │ │ │ │ ├── ArrowThickLeft.tsx │ │ │ │ ├── ArrowThickRight.tsx │ │ │ │ ├── ArrowThickUp.tsx │ │ │ │ ├── ArrowThinDown.tsx │ │ │ │ ├── ArrowThinLeft.tsx │ │ │ │ ├── ArrowThinRight.tsx │ │ │ │ ├── ArrowThinUp.tsx │ │ │ │ ├── ArrowUp.tsx │ │ │ │ ├── Artist.tsx │ │ │ │ ├── AtSymbol.tsx │ │ │ │ ├── Attachment.tsx │ │ │ │ ├── Backspace.tsx │ │ │ │ ├── Backward.tsx │ │ │ │ ├── BackwardStep.tsx │ │ │ │ ├── Badge.tsx │ │ │ │ ├── BatteryFull.tsx │ │ │ │ ├── BatteryHalf.tsx │ │ │ │ ├── BatteryLow.tsx │ │ │ │ ├── Beverage.tsx │ │ │ │ ├── Block.tsx │ │ │ │ ├── Bluetooth.tsx │ │ │ │ ├── Bolt.tsx │ │ │ │ ├── BookReference.tsx │ │ │ │ ├── Bookmark.tsx │ │ │ │ ├── BookmarkCopy2.tsx │ │ │ │ ├── BookmarkCopy3.tsx │ │ │ │ ├── BookmarkOutline.tsx │ │ │ │ ├── BookmarkOutlineAdd.tsx │ │ │ │ ├── BorderAll.tsx │ │ │ │ ├── BorderBottom.tsx │ │ │ │ ├── BorderHorizontal.tsx │ │ │ │ ├── BorderInner.tsx │ │ │ │ ├── BorderLeft.tsx │ │ │ │ ├── BorderNone.tsx │ │ │ │ ├── BorderOuter.tsx │ │ │ │ ├── BorderRight.tsx │ │ │ │ ├── BorderTop.tsx │ │ │ │ ├── BorderVertical.tsx │ │ │ │ ├── Box.tsx │ │ │ │ ├── BrightnessDown.tsx │ │ │ │ ├── BrightnessUp.tsx │ │ │ │ ├── BrowserWindow.tsx │ │ │ │ ├── BrowserWindowNew.tsx │ │ │ │ ├── BrowserWindowOpen.tsx │ │ │ │ ├── Bug.tsx │ │ │ │ ├── Buoy.tsx │ │ │ │ ├── Calculator.tsx │ │ │ │ ├── Calendar.tsx │ │ │ │ ├── Camera.tsx │ │ │ │ ├── Chart.tsx │ │ │ │ ├── ChartArea.tsx │ │ │ │ ├── ChartBar.tsx │ │ │ │ ├── ChartPie.tsx │ │ │ │ ├── ChatBubbleDots.tsx │ │ │ │ ├── CheckAlternative.tsx │ │ │ │ ├── Checkmark.tsx │ │ │ │ ├── CheckmarkOutline.tsx │ │ │ │ ├── CheveronDown.tsx │ │ │ │ ├── CheveronLeft.tsx │ │ │ │ ├── CheveronOutlineDown.tsx │ │ │ │ ├── CheveronOutlineLeft.tsx │ │ │ │ ├── CheveronOutlineRight.tsx │ │ │ │ ├── CheveronOutlineUp.tsx │ │ │ │ ├── CheveronRight.tsx │ │ │ │ ├── CheveronUp.tsx │ │ │ │ ├── Clipboard.tsx │ │ │ │ ├── Close.tsx │ │ │ │ ├── CloseOutline.tsx │ │ │ │ ├── CloseSolid.tsx │ │ │ │ ├── Cloud.tsx │ │ │ │ ├── CloudCheck.tsx │ │ │ │ ├── CloudDownload.tsx │ │ │ │ ├── CloudUpload.tsx │ │ │ │ ├── CloudWarning.tsx │ │ │ │ ├── Code.tsx │ │ │ │ ├── Coffee.tsx │ │ │ │ ├── Cog.tsx │ │ │ │ ├── ColorPalette.tsx │ │ │ │ ├── Compose.tsx │ │ │ │ ├── ComputerDesktop.tsx │ │ │ │ ├── ComputerLaptop.tsx │ │ │ │ ├── Conversation.tsx │ │ │ │ ├── Copy.tsx │ │ │ │ ├── CreditCard.tsx │ │ │ │ ├── CurrencyDollar.tsx │ │ │ │ ├── Dashboard.tsx │ │ │ │ ├── DateAdd.tsx │ │ │ │ ├── DialPad.tsx │ │ │ │ ├── Directions.tsx │ │ │ │ ├── Document.tsx │ │ │ │ ├── DocumentAdd.tsx │ │ │ │ ├── DotsHorizontalDouble.tsx │ │ │ │ ├── DotsHorizontalTriple.tsx │ │ │ │ ├── Download.tsx │ │ │ │ ├── Duplicate.tsx │ │ │ │ ├── EditCopy.tsx │ │ │ │ ├── EditCrop.tsx │ │ │ │ ├── EditCut.tsx │ │ │ │ ├── EditPencil.tsx │ │ │ │ ├── Education.tsx │ │ │ │ ├── Envelope.tsx │ │ │ │ ├── Equals.tsx │ │ │ │ ├── ExclamationOutline.tsx │ │ │ │ ├── ExclamationSolid.tsx │ │ │ │ ├── Explore.tsx │ │ │ │ ├── Factory.tsx │ │ │ │ ├── FastForward.tsx │ │ │ │ ├── FastRewind.tsx │ │ │ │ ├── FileDouble.tsx │ │ │ │ ├── Film.tsx │ │ │ │ ├── Filter.tsx │ │ │ │ ├── Flag.tsx │ │ │ │ ├── Flashlight.tsx │ │ │ │ ├── Folder.tsx │ │ │ │ ├── FolderOutline.tsx │ │ │ │ ├── FolderOutlineAdd.tsx │ │ │ │ ├── FormatBold.tsx │ │ │ │ ├── FormatFontSize.tsx │ │ │ │ ├── FormatItalic.tsx │ │ │ │ ├── FormatTextSize.tsx │ │ │ │ ├── FormatUnderline.tsx │ │ │ │ ├── Forward.tsx │ │ │ │ ├── ForwardStep.tsx │ │ │ │ ├── Gift.tsx │ │ │ │ ├── Globe.tsx │ │ │ │ ├── HandStop.tsx │ │ │ │ ├── HardDrive.tsx │ │ │ │ ├── Headphones.tsx │ │ │ │ ├── Heart.tsx │ │ │ │ ├── Home.tsx │ │ │ │ ├── Hot.tsx │ │ │ │ ├── HourGlass.tsx │ │ │ │ ├── Inbox.tsx │ │ │ │ ├── InboxCheck.tsx │ │ │ │ ├── InboxDownload.tsx │ │ │ │ ├── InboxFull.tsx │ │ │ │ ├── IndentDecrease.tsx │ │ │ │ ├── IndentIncrease.tsx │ │ │ │ ├── InformationOutline.tsx │ │ │ │ ├── InformationSolid.tsx │ │ │ │ ├── Key.tsx │ │ │ │ ├── Keyboard.tsx │ │ │ │ ├── Layers.tsx │ │ │ │ ├── Library.tsx │ │ │ │ ├── LightBulb.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── List.tsx │ │ │ │ ├── ListAdd.tsx │ │ │ │ ├── ListBullet.tsx │ │ │ │ ├── LoadBalancer.tsx │ │ │ │ ├── Location.tsx │ │ │ │ ├── LocationCurrent.tsx │ │ │ │ ├── LocationFood.tsx │ │ │ │ ├── LocationGasStation.tsx │ │ │ │ ├── LocationHotel.tsx │ │ │ │ ├── LocationMarina.tsx │ │ │ │ ├── LocationPark.tsx │ │ │ │ ├── LocationRestroom.tsx │ │ │ │ ├── LocationShopping.tsx │ │ │ │ ├── LockClosed.tsx │ │ │ │ ├── LockOpen.tsx │ │ │ │ ├── Map.tsx │ │ │ │ ├── Menu.tsx │ │ │ │ ├── Mic.tsx │ │ │ │ ├── MinusOutline.tsx │ │ │ │ ├── MinusSolid.tsx │ │ │ │ ├── MobileDevices.tsx │ │ │ │ ├── MoneyBag.tsx │ │ │ │ ├── MoodHappyOutline.tsx │ │ │ │ ├── MoodHappySolid.tsx │ │ │ │ ├── MoodNeutralOutline.tsx │ │ │ │ ├── MoodNeutralSolid.tsx │ │ │ │ ├── MoodSadOutline.tsx │ │ │ │ ├── MoodSadSolid.tsx │ │ │ │ ├── Mouse.tsx │ │ │ │ ├── MoveBack.tsx │ │ │ │ ├── MusicAlbum.tsx │ │ │ │ ├── MusicArtist.tsx │ │ │ │ ├── MusicNotes.tsx │ │ │ │ ├── MusicPlaylist.tsx │ │ │ │ ├── NavigationMore.tsx │ │ │ │ ├── Network.tsx │ │ │ │ ├── NewsPaper.tsx │ │ │ │ ├── Notification.tsx │ │ │ │ ├── Notifications.tsx │ │ │ │ ├── NotificationsOutline.tsx │ │ │ │ ├── Paste.tsx │ │ │ │ ├── Pause.tsx │ │ │ │ ├── PauseOutline.tsx │ │ │ │ ├── PauseSolid.tsx │ │ │ │ ├── PenTool.tsx │ │ │ │ ├── PencilWrite.tsx │ │ │ │ ├── Phone.tsx │ │ │ │ ├── Photo.tsx │ │ │ │ ├── PhpElephant.tsx │ │ │ │ ├── PiggyBank.tsx │ │ │ │ ├── Pin.tsx │ │ │ │ ├── Play.tsx │ │ │ │ ├── PlayOutline.tsx │ │ │ │ ├── Playlist.tsx │ │ │ │ ├── Plugin.tsx │ │ │ │ ├── Portfolio.tsx │ │ │ │ ├── Printer.tsx │ │ │ │ ├── Pylon.tsx │ │ │ │ ├── Question.tsx │ │ │ │ ├── Queue.tsx │ │ │ │ ├── Radar.tsx │ │ │ │ ├── RadarCopy2.tsx │ │ │ │ ├── Radio.tsx │ │ │ │ ├── Refresh.tsx │ │ │ │ ├── Reload.tsx │ │ │ │ ├── Reply.tsx │ │ │ │ ├── ReplyAll.tsx │ │ │ │ ├── Reports.tsx │ │ │ │ ├── Repost.tsx │ │ │ │ ├── SaveDisk.tsx │ │ │ │ ├── ScreenFull.tsx │ │ │ │ ├── Search.tsx │ │ │ │ ├── Send.tsx │ │ │ │ ├── Servers.tsx │ │ │ │ ├── Share.tsx │ │ │ │ ├── Share01.tsx │ │ │ │ ├── ShareAlt.tsx │ │ │ │ ├── Shield.tsx │ │ │ │ ├── ShoppingCart.tsx │ │ │ │ ├── ShowSidebar.tsx │ │ │ │ ├── Shuffle.tsx │ │ │ │ ├── StandBy.tsx │ │ │ │ ├── StarFull.tsx │ │ │ │ ├── Station.tsx │ │ │ │ ├── StepBackward.tsx │ │ │ │ ├── StepForward.tsx │ │ │ │ ├── Stethoscope.tsx │ │ │ │ ├── StoreFront.tsx │ │ │ │ ├── StrokeWidth.tsx │ │ │ │ ├── SubdirectoryLeft.tsx │ │ │ │ ├── SubdirectoryRight.tsx │ │ │ │ ├── Subtract.tsx │ │ │ │ ├── Swap.tsx │ │ │ │ ├── Tablet.tsx │ │ │ │ ├── Tag.tsx │ │ │ │ ├── Target.tsx │ │ │ │ ├── TextBox.tsx │ │ │ │ ├── TextDecoration.tsx │ │ │ │ ├── Thermometer.tsx │ │ │ │ ├── ThumbsDown.tsx │ │ │ │ ├── ThumbsUp.tsx │ │ │ │ ├── Ticket.tsx │ │ │ │ ├── Time.tsx │ │ │ │ ├── Timer.tsx │ │ │ │ ├── ToolsCopy.tsx │ │ │ │ ├── Translate.tsx │ │ │ │ ├── Trash.tsx │ │ │ │ ├── Travel.tsx │ │ │ │ ├── TravelBus.tsx │ │ │ │ ├── TravelCar.tsx │ │ │ │ ├── TravelCase.tsx │ │ │ │ ├── TravelTaxiCab.tsx │ │ │ │ ├── TravelTrain.tsx │ │ │ │ ├── TravelWalk.tsx │ │ │ │ ├── Trophy.tsx │ │ │ │ ├── Tuning.tsx │ │ │ │ ├── Upload.tsx │ │ │ │ ├── Usb.tsx │ │ │ │ ├── User.tsx │ │ │ │ ├── UserAdd.tsx │ │ │ │ ├── UserGroup.tsx │ │ │ │ ├── UserSolidCircle.tsx │ │ │ │ ├── UserSolidSquare.tsx │ │ │ │ ├── Vector.tsx │ │ │ │ ├── VideoCamera.tsx │ │ │ │ ├── ViewCarousel.tsx │ │ │ │ ├── ViewColumn.tsx │ │ │ │ ├── ViewHide.tsx │ │ │ │ ├── ViewList.tsx │ │ │ │ ├── ViewShow.tsx │ │ │ │ ├── ViewTile.tsx │ │ │ │ ├── VolumeDown.tsx │ │ │ │ ├── VolumeMute.tsx │ │ │ │ ├── VolumeOff.tsx │ │ │ │ ├── VolumeUp.tsx │ │ │ │ ├── Wallet.tsx │ │ │ │ ├── Watch.tsx │ │ │ │ ├── Window.tsx │ │ │ │ ├── WindowNew.tsx │ │ │ │ ├── WindowOpen.tsx │ │ │ │ ├── Wrench.tsx │ │ │ │ ├── YinYang.tsx │ │ │ │ ├── ZoomIn.tsx │ │ │ │ ├── ZoomOut.tsx │ │ │ │ ├── add-outline.svg │ │ │ │ ├── add-solid.svg │ │ │ │ ├── add.svg │ │ │ │ ├── adjust.svg │ │ │ │ ├── airplane.svg │ │ │ │ ├── album.svg │ │ │ │ ├── align-center.svg │ │ │ │ ├── align-justified.svg │ │ │ │ ├── align-left.svg │ │ │ │ ├── align-right.svg │ │ │ │ ├── anchor.svg │ │ │ │ ├── announcement.svg │ │ │ │ ├── apparel.svg │ │ │ │ ├── arrow-down.svg │ │ │ │ ├── arrow-left.svg │ │ │ │ ├── arrow-outline-down.svg │ │ │ │ ├── arrow-outline-left.svg │ │ │ │ ├── arrow-outline-right.svg │ │ │ │ ├── arrow-outline-up.svg │ │ │ │ ├── arrow-right.svg │ │ │ │ ├── arrow-thick-down.svg │ │ │ │ ├── arrow-thick-left.svg │ │ │ │ ├── arrow-thick-right.svg │ │ │ │ ├── arrow-thick-up.svg │ │ │ │ ├── arrow-thin-down.svg │ │ │ │ ├── arrow-thin-left.svg │ │ │ │ ├── arrow-thin-right.svg │ │ │ │ ├── arrow-thin-up.svg │ │ │ │ ├── arrow-up.svg │ │ │ │ ├── artist.svg │ │ │ │ ├── at-symbol.svg │ │ │ │ ├── attachment.svg │ │ │ │ ├── backspace.svg │ │ │ │ ├── backward-step.svg │ │ │ │ ├── backward.svg │ │ │ │ ├── badge.svg │ │ │ │ ├── battery-full.svg │ │ │ │ ├── battery-half.svg │ │ │ │ ├── battery-low.svg │ │ │ │ ├── beverage.svg │ │ │ │ ├── block.svg │ │ │ │ ├── bluetooth.svg │ │ │ │ ├── bolt.svg │ │ │ │ ├── book-reference.svg │ │ │ │ ├── bookmark copy 2.svg │ │ │ │ ├── bookmark copy 3.svg │ │ │ │ ├── bookmark-outline-add.svg │ │ │ │ ├── bookmark-outline.svg │ │ │ │ ├── bookmark.svg │ │ │ │ ├── border-all.svg │ │ │ │ ├── border-bottom.svg │ │ │ │ ├── border-horizontal.svg │ │ │ │ ├── border-inner.svg │ │ │ │ ├── border-left.svg │ │ │ │ ├── border-none.svg │ │ │ │ ├── border-outer.svg │ │ │ │ ├── border-right.svg │ │ │ │ ├── border-top.svg │ │ │ │ ├── border-vertical.svg │ │ │ │ ├── box.svg │ │ │ │ ├── brightness-down.svg │ │ │ │ ├── brightness-up.svg │ │ │ │ ├── browser-window-new.svg │ │ │ │ ├── browser-window-open.svg │ │ │ │ ├── browser-window.svg │ │ │ │ ├── bug.svg │ │ │ │ ├── buoy.svg │ │ │ │ ├── calculator.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── camera.svg │ │ │ │ ├── chart-bar.svg │ │ │ │ ├── chart-pie.svg │ │ │ │ ├── chart.svg │ │ │ │ ├── chat-bubble-dots.svg │ │ │ │ ├── check-alternative.svg │ │ │ │ ├── checkmark-outline.svg │ │ │ │ ├── checkmark.svg │ │ │ │ ├── cheveron-down.svg │ │ │ │ ├── cheveron-left.svg │ │ │ │ ├── cheveron-outline-down.svg │ │ │ │ ├── cheveron-outline-left.svg │ │ │ │ ├── cheveron-outline-right.svg │ │ │ │ ├── cheveron-outline-up.svg │ │ │ │ ├── cheveron-right.svg │ │ │ │ ├── cheveron-up.svg │ │ │ │ ├── clipboard.svg │ │ │ │ ├── close-outline.svg │ │ │ │ ├── close-solid.svg │ │ │ │ ├── close.svg │ │ │ │ ├── cloud-check.svg │ │ │ │ ├── cloud-download.svg │ │ │ │ ├── cloud-upload.svg │ │ │ │ ├── cloud-warning.svg │ │ │ │ ├── cloud.svg │ │ │ │ ├── code.svg │ │ │ │ ├── coffee.svg │ │ │ │ ├── cog.svg │ │ │ │ ├── color-palette.svg │ │ │ │ ├── compose.svg │ │ │ │ ├── computer-desktop.svg │ │ │ │ ├── computer-laptop.svg │ │ │ │ ├── conversation.svg │ │ │ │ ├── copy.svg │ │ │ │ ├── credit-card.svg │ │ │ │ ├── currency-dollar.svg │ │ │ │ ├── dashboard.svg │ │ │ │ ├── date-add.svg │ │ │ │ ├── dial-pad.svg │ │ │ │ ├── directions.svg │ │ │ │ ├── document-add.svg │ │ │ │ ├── document.svg │ │ │ │ ├── dots-horizontal-double.svg │ │ │ │ ├── dots-horizontal-triple.svg │ │ │ │ ├── download.svg │ │ │ │ ├── duplicate.svg │ │ │ │ ├── edit-copy.svg │ │ │ │ ├── edit-crop.svg │ │ │ │ ├── edit-cut.svg │ │ │ │ ├── edit-pencil.svg │ │ │ │ ├── education.svg │ │ │ │ ├── envelope.svg │ │ │ │ ├── equals.svg │ │ │ │ ├── exclamation-outline.svg │ │ │ │ ├── exclamation-solid.svg │ │ │ │ ├── explore.svg │ │ │ │ ├── factory.svg │ │ │ │ ├── fast-forward.svg │ │ │ │ ├── fast-rewind.svg │ │ │ │ ├── file-double.svg │ │ │ │ ├── film.svg │ │ │ │ ├── filter.svg │ │ │ │ ├── flag.svg │ │ │ │ ├── flashlight.svg │ │ │ │ ├── folder-outline-add.svg │ │ │ │ ├── folder-outline.svg │ │ │ │ ├── folder.svg │ │ │ │ ├── format-bold.svg │ │ │ │ ├── format-font-size.svg │ │ │ │ ├── format-italic.svg │ │ │ │ ├── format-text-size.svg │ │ │ │ ├── format-underline.svg │ │ │ │ ├── forward-step.svg │ │ │ │ ├── forward.svg │ │ │ │ ├── gift.svg │ │ │ │ ├── globe.svg │ │ │ │ ├── hand-stop.svg │ │ │ │ ├── hard-drive.svg │ │ │ │ ├── headphones.svg │ │ │ │ ├── heart.svg │ │ │ │ ├── home.svg │ │ │ │ ├── hot.svg │ │ │ │ ├── hour-glass.svg │ │ │ │ ├── inbox-check.svg │ │ │ │ ├── inbox-download.svg │ │ │ │ ├── inbox-full.svg │ │ │ │ ├── inbox.svg │ │ │ │ ├── indent-decrease.svg │ │ │ │ ├── indent-increase.svg │ │ │ │ ├── index.ts │ │ │ │ ├── information-outline.svg │ │ │ │ ├── information-solid.svg │ │ │ │ ├── key.svg │ │ │ │ ├── keyboard.svg │ │ │ │ ├── layers.svg │ │ │ │ ├── library.svg │ │ │ │ ├── light-bulb.svg │ │ │ │ ├── link.svg │ │ │ │ ├── list-add.svg │ │ │ │ ├── list-bullet.svg │ │ │ │ ├── list.svg │ │ │ │ ├── load-balancer.svg │ │ │ │ ├── location-current.svg │ │ │ │ ├── location-food.svg │ │ │ │ ├── location-gas-station.svg │ │ │ │ ├── location-hotel.svg │ │ │ │ ├── location-marina.svg │ │ │ │ ├── location-park.svg │ │ │ │ ├── location-restroom.svg │ │ │ │ ├── location-shopping.svg │ │ │ │ ├── location.svg │ │ │ │ ├── lock-closed.svg │ │ │ │ ├── lock-open.svg │ │ │ │ ├── map.svg │ │ │ │ ├── menu.svg │ │ │ │ ├── mic.svg │ │ │ │ ├── minus-outline.svg │ │ │ │ ├── minus-solid.svg │ │ │ │ ├── mobile-devices.svg │ │ │ │ ├── money-bag.svg │ │ │ │ ├── mood-happy-outline.svg │ │ │ │ ├── mood-happy-solid.svg │ │ │ │ ├── mood-neutral-outline.svg │ │ │ │ ├── mood-neutral-solid.svg │ │ │ │ ├── mood-sad-outline.svg │ │ │ │ ├── mood-sad-solid.svg │ │ │ │ ├── mouse.svg │ │ │ │ ├── move-back.svg │ │ │ │ ├── music-album.svg │ │ │ │ ├── music-artist.svg │ │ │ │ ├── music-notes.svg │ │ │ │ ├── music-playlist.svg │ │ │ │ ├── navigation-more.svg │ │ │ │ ├── network.svg │ │ │ │ ├── news-paper.svg │ │ │ │ ├── notification.svg │ │ │ │ ├── notifications-outline.svg │ │ │ │ ├── notifications.svg │ │ │ │ ├── paste.svg │ │ │ │ ├── pause-outline.svg │ │ │ │ ├── pause-solid.svg │ │ │ │ ├── pause.svg │ │ │ │ ├── pen-tool.svg │ │ │ │ ├── pencil-write.svg │ │ │ │ ├── phone.svg │ │ │ │ ├── photo.svg │ │ │ │ ├── php-elephant.svg │ │ │ │ ├── piggy-bank.svg │ │ │ │ ├── pin.svg │ │ │ │ ├── play-outline.svg │ │ │ │ ├── play.svg │ │ │ │ ├── playlist.svg │ │ │ │ ├── plugin.svg │ │ │ │ ├── portfolio.svg │ │ │ │ ├── printer.svg │ │ │ │ ├── pylon.svg │ │ │ │ ├── question.svg │ │ │ │ ├── queue.svg │ │ │ │ ├── radar copy 2.svg │ │ │ │ ├── radar.svg │ │ │ │ ├── radio.svg │ │ │ │ ├── refresh.svg │ │ │ │ ├── reload.svg │ │ │ │ ├── reply-all.svg │ │ │ │ ├── reply.svg │ │ │ │ ├── reports.svg │ │ │ │ ├── repost.svg │ │ │ │ ├── save-disk.svg │ │ │ │ ├── screen-full.svg │ │ │ │ ├── search.svg │ │ │ │ ├── send.svg │ │ │ │ ├── servers.svg │ │ │ │ ├── share-01.svg │ │ │ │ ├── share-alt.svg │ │ │ │ ├── share.svg │ │ │ │ ├── shield.svg │ │ │ │ ├── shopping-cart.svg │ │ │ │ ├── show-sidebar.svg │ │ │ │ ├── shuffle.svg │ │ │ │ ├── stand-by.svg │ │ │ │ ├── star-full.svg │ │ │ │ ├── station.svg │ │ │ │ ├── step-backward.svg │ │ │ │ ├── step-forward.svg │ │ │ │ ├── stethoscope.svg │ │ │ │ ├── store-front.svg │ │ │ │ ├── stroke-width.svg │ │ │ │ ├── subdirectory-left.svg │ │ │ │ ├── subdirectory-right.svg │ │ │ │ ├── subtract.svg │ │ │ │ ├── swap.svg │ │ │ │ ├── tablet.svg │ │ │ │ ├── tag.svg │ │ │ │ ├── target.svg │ │ │ │ ├── text-box.svg │ │ │ │ ├── text-decoration.svg │ │ │ │ ├── thermometer.svg │ │ │ │ ├── thumbs-down.svg │ │ │ │ ├── thumbs-up.svg │ │ │ │ ├── ticket.svg │ │ │ │ ├── time.svg │ │ │ │ ├── timer.svg │ │ │ │ ├── tools copy.svg │ │ │ │ ├── translate.svg │ │ │ │ ├── trash.svg │ │ │ │ ├── travel-bus.svg │ │ │ │ ├── travel-car.svg │ │ │ │ ├── travel-case.svg │ │ │ │ ├── travel-taxi-cab.svg │ │ │ │ ├── travel-train.svg │ │ │ │ ├── travel-walk.svg │ │ │ │ ├── travel.svg │ │ │ │ ├── trophy.svg │ │ │ │ ├── tuning.svg │ │ │ │ ├── upload.svg │ │ │ │ ├── usb.svg │ │ │ │ ├── user-add.svg │ │ │ │ ├── user-group.svg │ │ │ │ ├── user-solid-circle.svg │ │ │ │ ├── user-solid-square.svg │ │ │ │ ├── user.svg │ │ │ │ ├── vector.svg │ │ │ │ ├── video-camera.svg │ │ │ │ ├── view-carousel.svg │ │ │ │ ├── view-column.svg │ │ │ │ ├── view-hide.svg │ │ │ │ ├── view-list.svg │ │ │ │ ├── view-show.svg │ │ │ │ ├── view-tile.svg │ │ │ │ ├── volume-down.svg │ │ │ │ ├── volume-mute.svg │ │ │ │ ├── volume-off.svg │ │ │ │ ├── volume-up.svg │ │ │ │ ├── wallet.svg │ │ │ │ ├── watch.svg │ │ │ │ ├── window-new.svg │ │ │ │ ├── window-open.svg │ │ │ │ ├── window.svg │ │ │ │ ├── wrench.svg │ │ │ │ ├── yin-yang.svg │ │ │ │ ├── zoom-in.svg │ │ │ │ └── zoom-out.svg │ │ │ └── v2 │ │ │ │ ├── AlertTriangle.tsx │ │ │ │ ├── ArrowButtonDown1.tsx │ │ │ │ ├── ArrowButtonLeft1.tsx │ │ │ │ ├── ArrowButtonRight1.tsx │ │ │ │ ├── ArrowButtonSingleLeft1.tsx │ │ │ │ ├── ArrowButtonUp1.tsx │ │ │ │ ├── ArrowsExpand3.tsx │ │ │ │ ├── ArrowsShrink3.tsx │ │ │ │ ├── ArrowsSynchronize.tsx │ │ │ │ ├── Calendar.tsx │ │ │ │ ├── Calendar3.tsx │ │ │ │ ├── Check.tsx │ │ │ │ ├── CheckAll.tsx │ │ │ │ ├── CheckCircle1.tsx │ │ │ │ ├── CheckCircleHollow.tsx │ │ │ │ ├── CloseParenthesis.svg │ │ │ │ ├── CloseParenthesis.tsx │ │ │ │ ├── CloudUnknown.tsx │ │ │ │ ├── CloudUpload.tsx │ │ │ │ ├── CustomNotesPaper.tsx │ │ │ │ ├── DownAndRightArrow.tsx │ │ │ │ ├── DownloadThickBottom.tsx │ │ │ │ ├── EditSkull1.tsx │ │ │ │ ├── FavoriteStar.tsx │ │ │ │ ├── Filter2.tsx │ │ │ │ ├── Help.tsx │ │ │ │ ├── Hyperlink2.tsx │ │ │ │ ├── Hyperlink3.tsx │ │ │ │ ├── InformationCircle.tsx │ │ │ │ ├── Key.tsx │ │ │ │ ├── LockClosed.tsx │ │ │ │ ├── MoonStars.tsx │ │ │ │ ├── NavigationMenu.tsx │ │ │ │ ├── NotesPaper.tsx │ │ │ │ ├── NotesPaperText.tsx │ │ │ │ ├── OpenParenthesis.svg │ │ │ │ ├── OpenParenthesis.tsx │ │ │ │ ├── Pencil1.tsx │ │ │ │ ├── PencilWriteAlternate.tsx │ │ │ │ ├── RefreshArrow.tsx │ │ │ │ ├── Remove.tsx │ │ │ │ ├── RemoveAlternate.tsx │ │ │ │ ├── Search1.tsx │ │ │ │ ├── SearchAlternate.tsx │ │ │ │ ├── SettingsSliderAlternate.tsx │ │ │ │ ├── Subtract.tsx │ │ │ │ ├── Sum.svg │ │ │ │ ├── Sum.tsx │ │ │ │ ├── Sun.tsx │ │ │ │ ├── System.svg │ │ │ │ ├── System.tsx │ │ │ │ ├── UncheckAll.tsx │ │ │ │ ├── UploadThickBottom.tsx │ │ │ │ ├── ValidationCheck.tsx │ │ │ │ ├── ViewHide.tsx │ │ │ │ ├── ViewShow.tsx │ │ │ │ ├── alert-triangle.svg │ │ │ │ ├── arrow-button-down-1.svg │ │ │ │ ├── arrow-button-left-1.svg │ │ │ │ ├── arrow-button-right-1.svg │ │ │ │ ├── arrow-button-single-left-1.svg │ │ │ │ ├── arrow-button-up-1.svg │ │ │ │ ├── arrows-expand-3.svg │ │ │ │ ├── arrows-shrink-3.svg │ │ │ │ ├── arrows-synchronize.svg │ │ │ │ ├── calendar-3.svg │ │ │ │ ├── calendar.svg │ │ │ │ ├── check-all.svg │ │ │ │ ├── check-circle-1.svg │ │ │ │ ├── check-circle-hollow.svg │ │ │ │ ├── check.svg │ │ │ │ ├── cloud-unknown.svg │ │ │ │ ├── cloud-upload.svg │ │ │ │ ├── custom-notes-paper.svg │ │ │ │ ├── down-and-right-arrow.svg │ │ │ │ ├── download-thick-bottom.svg │ │ │ │ ├── edit-skull-1.svg │ │ │ │ ├── favorite-star.svg │ │ │ │ ├── filter-2.svg │ │ │ │ ├── help.svg │ │ │ │ ├── hyperlink-2.svg │ │ │ │ ├── hyperlink-3.svg │ │ │ │ ├── index.ts │ │ │ │ ├── information-circle.svg │ │ │ │ ├── key.svg │ │ │ │ ├── lock-closed.svg │ │ │ │ ├── moon-stars.svg │ │ │ │ ├── navigation-menu.svg │ │ │ │ ├── notes-paper-text.svg │ │ │ │ ├── notes-paper.svg │ │ │ │ ├── pencil-1.svg │ │ │ │ ├── pencil-write-alternate.svg │ │ │ │ ├── refresh-arrow.svg │ │ │ │ ├── remove-alternate.svg │ │ │ │ ├── remove.svg │ │ │ │ ├── search-1.svg │ │ │ │ ├── search-alternate.svg │ │ │ │ ├── settings-slider-alternate.svg │ │ │ │ ├── subtract.svg │ │ │ │ ├── sun.svg │ │ │ │ ├── uncheck-all.svg │ │ │ │ ├── upload-thick-bottom.svg │ │ │ │ ├── validation-check.svg │ │ │ │ ├── view-hide.svg │ │ │ │ └── view-show.svg │ │ ├── styles.ts │ │ ├── theme.ts │ │ └── tokens.ts │ └── vitest.web.config.ts ├── crdt │ ├── .gitignore │ ├── README.md │ ├── bin │ │ └── generate-proto │ ├── index.ts │ ├── package.json │ ├── src │ │ ├── crdt │ │ │ ├── __snapshots__ │ │ │ │ └── merkle.test.ts.snap │ │ │ ├── index.ts │ │ │ ├── merkle.test.ts │ │ │ ├── merkle.ts │ │ │ ├── timestamp.test.ts │ │ │ └── timestamp.ts │ │ ├── index.ts │ │ └── proto │ │ │ ├── sync.proto │ │ │ ├── sync_pb.d.ts │ │ │ └── sync_pb.js │ └── tsconfig.dist.json ├── desktop-client │ ├── .gitignore │ ├── .swcrc │ ├── README.md │ ├── bin │ │ ├── build-browser │ │ ├── remove-untranslated-languages │ │ └── watch-browser │ ├── e2e │ │ ├── accounts.mobile.test.ts │ │ ├── accounts.mobile.test.ts-snapshots │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-1-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-2-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-3-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-4-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-5-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-6-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-7-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-8-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-individual-account-page-and-checks-that-filtering-is-working-9-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-the-accounts-page-and-asserts-on-balances-1-chromium-linux.png │ │ │ ├── Mobile-Accounts-opens-the-accounts-page-and-asserts-on-balances-2-chromium-linux.png │ │ │ └── Mobile-Accounts-opens-the-accounts-page-and-asserts-on-balances-3-chromium-linux.png │ │ ├── accounts.test.ts │ │ ├── accounts.test.ts-snapshots │ │ │ ├── Accounts-Import-Transactions-import-csv-file-twice-1-chromium-linux.png │ │ │ ├── Accounts-Import-Transactions-import-csv-file-twice-2-chromium-linux.png │ │ │ ├── Accounts-Import-Transactions-import-csv-file-twice-3-chromium-linux.png │ │ │ ├── Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-1-chromium-linux.png │ │ │ ├── Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-2-chromium-linux.png │ │ │ ├── Accounts-Import-Transactions-imports-transactions-from-a-CSV-file-3-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-1-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-2-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-3-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-4-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-5-chromium-linux.png │ │ │ ├── Accounts-closes-an-account-6-chromium-linux.png │ │ │ ├── Accounts-creates-a-new-account-and-views-the-initial-balance-transaction-1-chromium-linux.png │ │ │ ├── Accounts-creates-a-new-account-and-views-the-initial-balance-transaction-2-chromium-linux.png │ │ │ └── Accounts-creates-a-new-account-and-views-the-initial-balance-transaction-3-chromium-linux.png │ │ ├── budget.mobile.test.ts │ │ ├── budget.mobile.test.ts-snapshots │ │ │ ├── Mobile-Budget-Envelope-applies-budget-template-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-applies-budget-template-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-applies-budget-template-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--14404-in-the-page-header-opens-the-month-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--321fd-ed-amount-opens-the-budget-summary-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--4bb70-ed-amount-opens-the-budget-summary-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--589a6-the-page-header-shows-the-next-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--6ab37-roup-name-opens-the-category-group-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--6dbdb-page-header-shows-the-previous-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--7bd8f-the-page-header-shows-the-next-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--884ac-the-page-header-shows-the-next-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--94a79-roup-name-opens-the-category-group-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--94a85-ed-amount-opens-the-budget-summary-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--96ebb-page-header-shows-the-previous-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--9e6aa-in-the-page-header-opens-the-budget-page-menu-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--bbde3-roup-name-opens-the-category-group-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--bed18-in-the-page-header-opens-the-month-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--c18ad-l-redirects-to-the-category-transactions-page-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--ceb3a-in-the-page-header-opens-the-month-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--d270d-in-the-page-header-opens-the-budget-page-menu-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--d7184-page-header-shows-the-previous-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--e995e-l-redirects-to-the-category-transactions-page-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--fdd57-in-the-page-header-opens-the-budget-page-menu-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking--ff568-l-redirects-to-the-category-transactions-page-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-category-name-opens-the-category-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-category-name-opens-the-category-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-checks-that-clicking-the-category-name-opens-the-category-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-copies-last-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-copies-last-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-copies-last-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-loads-the-budget-page-with-budgeted-amounts-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-loads-the-budget-page-with-budgeted-amounts-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-loads-the-budget-page-with-budgeted-amounts-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-12-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-12-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-12-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-3-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-3-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-3-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-6-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-6-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-set-budget-to-6-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-updates-the-budgeted-amount-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-updates-the-budgeted-amount-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Envelope-updates-the-budgeted-amount-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-applies-budget-template-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-applies-budget-template-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-applies-budget-template-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--0ba04-nt-amount-opens-the-budget-summary-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--0dfe7-page-header-shows-the-previous-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--11290-l-redirects-to-the-category-transactions-page-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--1ce6d-nt-amount-opens-the-budget-summary-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--42062-in-the-page-header-opens-the-month-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--49fb6-in-the-page-header-opens-the-month-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--57d88-l-redirects-to-the-category-transactions-page-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--5d90c-l-redirects-to-the-category-transactions-page-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--5f098-roup-name-opens-the-category-group-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--7c353-the-page-header-shows-the-next-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--929be-roup-name-opens-the-category-group-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--a3783-in-the-page-header-opens-the-budget-page-menu-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--a8b5e-in-the-page-header-opens-the-budget-page-menu-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--b1562-in-the-page-header-opens-the-month-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--cfb69-page-header-shows-the-previous-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--d5af6-the-page-header-shows-the-next-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--dc927-roup-name-opens-the-category-group-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--f2198-the-page-header-shows-the-next-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--f224f-nt-amount-opens-the-budget-summary-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--f7fa3-page-header-shows-the-previous-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking--f8a19-in-the-page-header-opens-the-budget-page-menu-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-balance-cell-opens-the-balance-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-budgeted-cell-opens-the-budget-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-category-name-opens-the-category-menu-modal-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-category-name-opens-the-category-menu-modal-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-checks-that-clicking-the-category-name-opens-the-category-menu-modal-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-copies-last-month-s-budget-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-copies-last-month-s-budget-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-copies-last-month-s-budget-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-loads-the-budget-page-with-budgeted-amounts-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-loads-the-budget-page-with-budgeted-amounts-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-loads-the-budget-page-with-budgeted-amounts-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-12-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-12-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-12-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-3-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-3-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-3-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-6-month-average-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-6-month-average-2-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-set-budget-to-6-month-average-3-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-updates-the-budgeted-amount-1-chromium-linux.png │ │ │ ├── Mobile-Budget-Tracking-updates-the-budgeted-amount-2-chromium-linux.png │ │ │ └── Mobile-Budget-Tracking-updates-the-budgeted-amount-3-chromium-linux.png │ │ ├── budget.test.ts │ │ ├── budget.test.ts-snapshots │ │ │ ├── Budget-renders-the-summary-information-available-funds-overspent-budgeted-and-for-next-month-1-chromium-linux.png │ │ │ ├── Budget-renders-the-summary-information-available-funds-overspent-budgeted-and-for-next-month-2-chromium-linux.png │ │ │ ├── Budget-renders-the-summary-information-available-funds-overspent-budgeted-and-for-next-month-3-chromium-linux.png │ │ │ ├── Budget-transfer-funds-to-another-category-1-chromium-linux.png │ │ │ ├── Budget-transfer-funds-to-another-category-2-chromium-linux.png │ │ │ └── Budget-transfer-funds-to-another-category-3-chromium-linux.png │ │ ├── data │ │ │ ├── actual-demo-budget.zip │ │ │ ├── test.csv │ │ │ ├── ynab4-demo-budget.zip │ │ │ └── ynab5-demo-budget.json │ │ ├── fixtures.ts │ │ ├── onboarding.test.ts │ │ ├── onboarding.test.ts-snapshots │ │ │ ├── Onboarding-checks-the-page-visuals-1-chromium-linux.png │ │ │ ├── Onboarding-checks-the-page-visuals-2-chromium-linux.png │ │ │ ├── Onboarding-checks-the-page-visuals-3-chromium-linux.png │ │ │ ├── Onboarding-checks-the-page-visuals-4-chromium-linux.png │ │ │ ├── Onboarding-checks-the-page-visuals-5-chromium-linux.png │ │ │ └── Onboarding-checks-the-page-visuals-6-chromium-linux.png │ │ ├── page-models │ │ │ ├── account-page.ts │ │ │ ├── budget-page.ts │ │ │ ├── close-account-modal.ts │ │ │ ├── configuration-page.ts │ │ │ ├── custom-report-page.ts │ │ │ ├── mobile-account-page.ts │ │ │ ├── mobile-accounts-page.ts │ │ │ ├── mobile-balance-menu-modal.ts │ │ │ ├── mobile-budget-menu-modal.ts │ │ │ ├── mobile-budget-page.ts │ │ │ ├── mobile-category-menu-modal.ts │ │ │ ├── mobile-edit-notes-modal.ts │ │ │ ├── mobile-envelope-budget-summary-modal.ts │ │ │ ├── mobile-navigation.ts │ │ │ ├── mobile-reports-page.ts │ │ │ ├── mobile-tracking-budget-summary-modal.ts │ │ │ ├── mobile-transaction-entry-page.ts │ │ │ ├── navigation.ts │ │ │ ├── payees-page.ts │ │ │ ├── reports-page.ts │ │ │ ├── rules-page.ts │ │ │ ├── schedules-page.ts │ │ │ └── settings-page.ts │ │ ├── payees.test.ts │ │ ├── payees.test.ts-snapshots │ │ │ ├── Payees-checks-the-payees-page-visuals-1-chromium-linux.png │ │ │ ├── Payees-checks-the-payees-page-visuals-2-chromium-linux.png │ │ │ ├── Payees-checks-the-payees-page-visuals-3-chromium-linux.png │ │ │ ├── Payees-checks-the-payees-page-visuals-4-chromium-linux.png │ │ │ ├── Payees-checks-the-payees-page-visuals-5-chromium-linux.png │ │ │ └── Payees-checks-the-payees-page-visuals-6-chromium-linux.png │ │ ├── reports.test.ts │ │ ├── reports.test.ts-snapshots │ │ │ ├── Reports-custom-reports-Switches-to-Area-Graph-and-checks-the-visuals-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Area-Graph-and-checks-the-visuals-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Area-Graph-and-checks-the-visuals-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Bar-Graph-and-checks-the-visuals-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Bar-Graph-and-checks-the-visuals-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Bar-Graph-and-checks-the-visuals-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Data-Table-and-checks-the-visuals-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Data-Table-and-checks-the-visuals-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Data-Table-and-checks-the-visuals-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Donut-Graph-and-checks-the-visuals-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Donut-Graph-and-checks-the-visuals-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Donut-Graph-and-checks-the-visuals-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Line-Graph-and-checks-the-visuals-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Line-Graph-and-checks-the-visuals-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Switches-to-Line-Graph-and-checks-the-visuals-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-labels-button-shows-the-labels-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-labels-button-shows-the-labels-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-labels-button-shows-the-labels-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-legend-button-shows-the-legend-side-bar-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-legend-button-shows-the-legend-side-bar-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-legend-button-shows-the-legend-side-bar-3-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-summary-button-shows-the-summary-1-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-summary-button-shows-the-summary-2-chromium-linux.png │ │ │ ├── Reports-custom-reports-Validates-that-show-summary-button-shows-the-summary-3-chromium-linux.png │ │ │ ├── Reports-loads-cash-flow-graph-and-checks-visuals-1-chromium-linux.png │ │ │ ├── Reports-loads-cash-flow-graph-and-checks-visuals-2-chromium-linux.png │ │ │ ├── Reports-loads-cash-flow-graph-and-checks-visuals-3-chromium-linux.png │ │ │ ├── Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png │ │ │ ├── Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png │ │ │ ├── Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png │ │ │ ├── Reports-loads-net-worth-graph-and-checks-visuals-1-chromium-linux.png │ │ │ ├── Reports-loads-net-worth-graph-and-checks-visuals-2-chromium-linux.png │ │ │ └── Reports-loads-net-worth-graph-and-checks-visuals-3-chromium-linux.png │ │ ├── rules.test.ts │ │ ├── rules.test.ts-snapshots │ │ │ ├── Rules-checks-the-page-visuals-1-chromium-linux.png │ │ │ ├── Rules-checks-the-page-visuals-2-chromium-linux.png │ │ │ ├── Rules-checks-the-page-visuals-3-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-4-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-5-chromium-linux.png │ │ │ ├── Rules-creates-a-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-6-chromium-linux.png │ │ │ ├── Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-1-chromium-linux.png │ │ │ ├── Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-2-chromium-linux.png │ │ │ └── Rules-creates-a-split-transaction-rule-and-makes-sure-it-is-applied-when-creating-a-transaction-3-chromium-linux.png │ │ ├── schedules.test.ts │ │ ├── schedules.test.ts-snapshots │ │ │ ├── Schedules-checks-the-page-visuals-1-chromium-linux.png │ │ │ ├── Schedules-checks-the-page-visuals-2-chromium-linux.png │ │ │ ├── Schedules-checks-the-page-visuals-3-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-1-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-10-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-11-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-12-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-13-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-14-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-15-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-2-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-3-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-4-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-5-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-6-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-7-chromium-linux.png │ │ │ ├── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-8-chromium-linux.png │ │ │ └── Schedules-creates-a-new-schedule-posts-the-transaction-and-later-completes-it-9-chromium-linux.png │ │ ├── settings.mobile.test.ts │ │ ├── settings.mobile.test.ts-snapshots │ │ │ ├── Mobile-Settings-checks-that-settings-page-can-be-opened-1-chromium-linux.png │ │ │ ├── Mobile-Settings-checks-that-settings-page-can-be-opened-2-chromium-linux.png │ │ │ ├── Mobile-Settings-checks-that-settings-page-can-be-opened-3-chromium-linux.png │ │ │ ├── Mobile-Settings-checks-that-settings-page-can-be-opened-4-chromium-linux.png │ │ │ ├── Mobile-Settings-checks-that-settings-page-can-be-opened-5-chromium-linux.png │ │ │ └── Mobile-Settings-checks-that-settings-page-can-be-opened-6-chromium-linux.png │ │ ├── settings.test.ts │ │ ├── settings.test.ts-snapshots │ │ │ ├── Settings-checks-the-page-visuals-1-chromium-linux.png │ │ │ ├── Settings-checks-the-page-visuals-2-chromium-linux.png │ │ │ └── Settings-checks-the-page-visuals-3-chromium-linux.png │ │ ├── transactions.mobile.test.ts │ │ ├── transactions.mobile.test.ts-snapshots │ │ │ ├── Mobile-Transactions-creates-a-categorized-transaction-from-accounts-uncategorized-page-1-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-categorized-transaction-from-accounts-uncategorized-page-2-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-categorized-transaction-from-accounts-uncategorized-page-3-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-from-accounts-id-page-1-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-from-accounts-id-page-2-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-from-accounts-id-page-3-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-1-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-2-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-3-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-4-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-5-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-6-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-7-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-8-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-a-transaction-via-footer-button-9-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-an-uncategorized-transaction-from-accounts-uncategorized-page-1-chromium-linux.png │ │ │ ├── Mobile-Transactions-creates-an-uncategorized-transaction-from-accounts-uncategorized-page-2-chromium-linux.png │ │ │ └── Mobile-Transactions-creates-an-uncategorized-transaction-from-accounts-uncategorized-page-3-chromium-linux.png │ │ ├── transactions.test.ts │ │ └── transactions.test.ts-snapshots │ │ │ ├── Transactions-checks-the-page-visuals-1-chromium-linux.png │ │ │ ├── Transactions-checks-the-page-visuals-2-chromium-linux.png │ │ │ ├── Transactions-checks-the-page-visuals-3-chromium-linux.png │ │ │ ├── Transactions-creates-a-split-test-transaction-1-chromium-linux.png │ │ │ ├── Transactions-creates-a-split-test-transaction-2-chromium-linux.png │ │ │ ├── Transactions-creates-a-split-test-transaction-3-chromium-linux.png │ │ │ ├── Transactions-creates-a-test-transaction-1-chromium-linux.png │ │ │ ├── Transactions-creates-a-test-transaction-2-chromium-linux.png │ │ │ ├── Transactions-creates-a-test-transaction-3-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-1-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-2-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-3-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-4-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-5-chromium-linux.png │ │ │ ├── Transactions-creates-a-transfer-test-transaction-6-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-1-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-2-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-3-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-4-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-5-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-6-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-7-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-8-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-category-9-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-1-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-2-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-3-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-4-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-5-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-6-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-7-chromium-linux.png │ │ │ ├── Transactions-filters-transactions-by-date-8-chromium-linux.png │ │ │ └── Transactions-filters-transactions-by-date-9-chromium-linux.png │ ├── globals.d.ts │ ├── i18next-parser.config.js │ ├── index.html │ ├── package.json │ ├── playwright.config.ts │ ├── public │ │ ├── _headers │ │ ├── _redirects │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── browserconfig.xml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── maskable-192x192.png │ │ ├── maskable-512x512.png │ │ ├── mstile-150x150.png │ │ ├── screenshot_narrow.png │ │ ├── screenshot_wide.png │ │ ├── shortcut-accounts.svg │ │ ├── shortcut-reports.svg │ │ ├── shortcut-transaction.svg │ │ └── site.webmanifest │ ├── src │ │ ├── accounts │ │ │ └── accountsSlice.ts │ │ ├── app │ │ │ └── appSlice.ts │ │ ├── auth │ │ │ ├── AuthProvider.tsx │ │ │ ├── ProtectedRoute.tsx │ │ │ └── types.ts │ │ ├── browser-preload.browser.js │ │ ├── browser-preload.js │ │ ├── browser-server.js │ │ ├── budgets │ │ │ └── budgetsSlice.ts │ │ ├── build-shims.js │ │ ├── components │ │ │ ├── AnimatedRefresh.tsx │ │ │ ├── App.tsx │ │ │ ├── AppBackground.tsx │ │ │ ├── Background.tsx │ │ │ ├── BackgroundImage.tsx │ │ │ ├── BankSyncStatus.tsx │ │ │ ├── DevelopmentTopBar.tsx │ │ │ ├── EditablePageHeaderTitle.tsx │ │ │ ├── FatalError.tsx │ │ │ ├── FinancesApp.tsx │ │ │ ├── FixedSizeList.tsx │ │ │ ├── GlobalKeys.ts │ │ │ ├── HelpMenu.tsx │ │ │ ├── LoggedInUser.tsx │ │ │ ├── ManageRules.tsx │ │ │ ├── ManageRulesPage.tsx │ │ │ ├── Modals.tsx │ │ │ ├── Notes.tsx │ │ │ ├── NotesButton.tsx │ │ │ ├── Notifications.tsx │ │ │ ├── Page.tsx │ │ │ ├── PrivacyFilter.tsx │ │ │ ├── ScrollProvider.tsx │ │ │ ├── ServerContext.tsx │ │ │ ├── SyncRefresh.tsx │ │ │ ├── ThemeSelector.tsx │ │ │ ├── Titlebar.tsx │ │ │ ├── UpdateNotification.tsx │ │ │ ├── accounts │ │ │ │ ├── Account.tsx │ │ │ │ ├── AccountEmptyMessage.tsx │ │ │ │ ├── AccountSyncCheck.tsx │ │ │ │ ├── Balance.tsx │ │ │ │ ├── Header.tsx │ │ │ │ └── Reconcile.tsx │ │ │ ├── admin │ │ │ │ ├── UserAccess │ │ │ │ │ ├── UserAccess.tsx │ │ │ │ │ ├── UserAccessHeader.tsx │ │ │ │ │ ├── UserAccessPage.tsx │ │ │ │ │ └── UserAccessRow.tsx │ │ │ │ └── UserDirectory │ │ │ │ │ ├── UserDirectory.tsx │ │ │ │ │ ├── UserDirectoryHeader.tsx │ │ │ │ │ ├── UserDirectoryPage.tsx │ │ │ │ │ └── UserDirectoryRow.tsx │ │ │ ├── alerts.tsx │ │ │ ├── autocomplete │ │ │ │ ├── AccountAutocomplete.tsx │ │ │ │ ├── Autocomplete.tsx │ │ │ │ ├── CategoryAutocomplete.tsx │ │ │ │ ├── FilterAutocomplete.tsx │ │ │ │ ├── FilterList.tsx │ │ │ │ ├── ItemHeader.tsx │ │ │ │ ├── PayeeAutocomplete.test.tsx │ │ │ │ ├── PayeeAutocomplete.tsx │ │ │ │ ├── ReportAutocomplete.tsx │ │ │ │ └── ReportList.tsx │ │ │ ├── banksync │ │ │ │ ├── AccountRow.tsx │ │ │ │ ├── AccountsHeader.tsx │ │ │ │ ├── AccountsList.tsx │ │ │ │ ├── EditSyncAccount.tsx │ │ │ │ ├── FieldMapping.tsx │ │ │ │ └── index.tsx │ │ │ ├── budget │ │ │ │ ├── BalanceWithCarryover.tsx │ │ │ │ ├── BudgetCategories.jsx │ │ │ │ ├── BudgetMonthCountContext.tsx │ │ │ │ ├── BudgetPageHeader.tsx │ │ │ │ ├── BudgetSummaries.tsx │ │ │ │ ├── BudgetTable.tsx │ │ │ │ ├── BudgetTotals.tsx │ │ │ │ ├── DynamicBudgetTable.tsx │ │ │ │ ├── ExpenseCategory.tsx │ │ │ │ ├── ExpenseGroup.tsx │ │ │ │ ├── IncomeCategory.tsx │ │ │ │ ├── IncomeGroup.tsx │ │ │ │ ├── IncomeHeader.tsx │ │ │ │ ├── MonthCountSelector.tsx │ │ │ │ ├── MonthPicker.tsx │ │ │ │ ├── MonthsContext.tsx │ │ │ │ ├── RenderMonths.tsx │ │ │ │ ├── SidebarCategory.tsx │ │ │ │ ├── SidebarGroup.tsx │ │ │ │ ├── envelope │ │ │ │ │ ├── BalanceMenu.tsx │ │ │ │ │ ├── BalanceMovementMenu.tsx │ │ │ │ │ ├── BudgetMenu.tsx │ │ │ │ │ ├── CoverMenu.tsx │ │ │ │ │ ├── EnvelopeBudgetComponents.tsx │ │ │ │ │ ├── EnvelopeBudgetContext.tsx │ │ │ │ │ ├── HoldMenu.tsx │ │ │ │ │ ├── TransferMenu.tsx │ │ │ │ │ └── budgetsummary │ │ │ │ │ │ ├── BudgetMonthMenu.tsx │ │ │ │ │ │ ├── BudgetSummary.tsx │ │ │ │ │ │ ├── ToBudget.tsx │ │ │ │ │ │ ├── ToBudgetAmount.tsx │ │ │ │ │ │ ├── ToBudgetMenu.tsx │ │ │ │ │ │ └── TotalsList.tsx │ │ │ │ ├── goals │ │ │ │ │ ├── BudgetAutomation.tsx │ │ │ │ │ ├── BudgetAutomationEditor.tsx │ │ │ │ │ ├── BudgetAutomationReadOnly.tsx │ │ │ │ │ ├── CategoryAutomationButton.tsx │ │ │ │ │ ├── actions.ts │ │ │ │ │ ├── constants.ts │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── HistoricalAutomation.tsx │ │ │ │ │ │ ├── HistoricalAutomationReadOnly.tsx │ │ │ │ │ │ ├── PercentageAutomation.tsx │ │ │ │ │ │ ├── PercentageAutomationReadOnly.tsx │ │ │ │ │ │ ├── ScheduleAutomation.tsx │ │ │ │ │ │ ├── ScheduleAutomationReadOnly.tsx │ │ │ │ │ │ ├── SimpleAutomation.tsx │ │ │ │ │ │ ├── SimpleAutomationReadOnly.tsx │ │ │ │ │ │ ├── WeekAutomation.tsx │ │ │ │ │ │ └── WeekAutomationReadOnly.tsx │ │ │ │ │ ├── reducer.ts │ │ │ │ │ └── useBudgetAutomationCategories.ts │ │ │ │ ├── index.tsx │ │ │ │ ├── tracking │ │ │ │ │ ├── BalanceMenu.tsx │ │ │ │ │ ├── BudgetMenu.tsx │ │ │ │ │ ├── TrackingBudgetComponents.tsx │ │ │ │ │ ├── TrackingBudgetContext.tsx │ │ │ │ │ └── budgetsummary │ │ │ │ │ │ ├── BudgetMonthMenu.tsx │ │ │ │ │ │ ├── BudgetSummary.tsx │ │ │ │ │ │ ├── BudgetTotal.tsx │ │ │ │ │ │ ├── ExpenseProgress.tsx │ │ │ │ │ │ ├── ExpenseTotal.tsx │ │ │ │ │ │ ├── IncomeProgress.tsx │ │ │ │ │ │ ├── IncomeTotal.tsx │ │ │ │ │ │ ├── PieProgress.tsx │ │ │ │ │ │ ├── Saved.tsx │ │ │ │ │ │ └── fraction.ts │ │ │ │ └── util.ts │ │ │ ├── common │ │ │ │ ├── InfiniteScrollWrapper.tsx │ │ │ │ ├── Link.tsx │ │ │ │ ├── Modal.tsx │ │ │ │ └── Search.tsx │ │ │ ├── filters │ │ │ │ ├── AppliedFilters.tsx │ │ │ │ ├── CompactFiltersButton.tsx │ │ │ │ ├── ConditionsOpMenu.tsx │ │ │ │ ├── FilterExpression.tsx │ │ │ │ ├── FilterMenu.tsx │ │ │ │ ├── FiltersButton.tsx │ │ │ │ ├── FiltersMenu.jsx │ │ │ │ ├── FiltersStack.tsx │ │ │ │ ├── NameFilter.tsx │ │ │ │ ├── OpButton.tsx │ │ │ │ ├── SavedFilterMenuButton.tsx │ │ │ │ ├── subfieldFromFilter.ts │ │ │ │ ├── subfieldToOptions.ts │ │ │ │ └── updateFilterReducer.ts │ │ │ ├── forms.tsx │ │ │ ├── gocardless │ │ │ │ └── GoCardlessLink.tsx │ │ │ ├── manager │ │ │ │ ├── BudgetFileSelection.tsx │ │ │ │ ├── ConfigServer.tsx │ │ │ │ ├── ManagementApp.tsx │ │ │ │ ├── ServerURL.tsx │ │ │ │ ├── WelcomeScreen.tsx │ │ │ │ └── subscribe │ │ │ │ │ ├── Bootstrap.tsx │ │ │ │ │ ├── ChangePassword.tsx │ │ │ │ │ ├── ConfirmPasswordForm.tsx │ │ │ │ │ ├── Error.tsx │ │ │ │ │ ├── Login.tsx │ │ │ │ │ ├── OpenIdCallback.ts │ │ │ │ │ ├── OpenIdForm.tsx │ │ │ │ │ └── common.tsx │ │ │ ├── mobile │ │ │ │ ├── FloatingActionBar.tsx │ │ │ │ ├── MobileBackButton.tsx │ │ │ │ ├── MobileForms.tsx │ │ │ │ ├── MobileNavTabs.tsx │ │ │ │ ├── PullToRefresh.tsx │ │ │ │ ├── accounts │ │ │ │ │ ├── Account.tsx │ │ │ │ │ ├── AccountTransactions.tsx │ │ │ │ │ └── Accounts.tsx │ │ │ │ ├── budget │ │ │ │ │ ├── BalanceCell.tsx │ │ │ │ │ ├── BudgetCell.tsx │ │ │ │ │ ├── BudgetTable.jsx │ │ │ │ │ ├── Category.tsx │ │ │ │ │ ├── CategoryTransactions.tsx │ │ │ │ │ ├── ExpenseCategoryList.tsx │ │ │ │ │ ├── ExpenseCategoryListItem.tsx │ │ │ │ │ ├── ExpenseGroupList.tsx │ │ │ │ │ ├── ExpenseGroupListItem.tsx │ │ │ │ │ ├── IncomeCategoryList.tsx │ │ │ │ │ ├── IncomeCategoryListItem.tsx │ │ │ │ │ ├── IncomeGroup.tsx │ │ │ │ │ ├── SpentCell.tsx │ │ │ │ │ └── index.tsx │ │ │ │ ├── transactions │ │ │ │ │ ├── AddTransactionButton.tsx │ │ │ │ │ ├── FocusableAmountInput.tsx │ │ │ │ │ ├── TransactionEdit.jsx │ │ │ │ │ ├── TransactionList.tsx │ │ │ │ │ ├── TransactionListItem.tsx │ │ │ │ │ └── TransactionListWithBalances.tsx │ │ │ │ └── utils.ts │ │ │ ├── modals │ │ │ │ ├── AccountAutocompleteModal.tsx │ │ │ │ ├── AccountMenuModal.tsx │ │ │ │ ├── BudgetAutomationsModal.tsx │ │ │ │ ├── BudgetFileSelectionModal.tsx │ │ │ │ ├── BudgetPageMenuModal.tsx │ │ │ │ ├── CategoryAutocompleteModal.tsx │ │ │ │ ├── CategoryGroupMenuModal.tsx │ │ │ │ ├── CategoryMenuModal.tsx │ │ │ │ ├── CloseAccountModal.tsx │ │ │ │ ├── ConfirmCategoryDeleteModal.tsx │ │ │ │ ├── ConfirmTransactionDeleteModal.tsx │ │ │ │ ├── ConfirmTransactionEditModal.tsx │ │ │ │ ├── ConfirmUnlinkAccountModal.tsx │ │ │ │ ├── CoverModal.tsx │ │ │ │ ├── CreateAccountModal.tsx │ │ │ │ ├── CreateEncryptionKeyModal.tsx │ │ │ │ ├── CreateLocalAccountModal.tsx │ │ │ │ ├── EditAccess.tsx │ │ │ │ ├── EditFieldModal.tsx │ │ │ │ ├── EditRuleModal.jsx │ │ │ │ ├── EditUser.tsx │ │ │ │ ├── EnvelopeBalanceMenuModal.tsx │ │ │ │ ├── EnvelopeBudgetMenuModal.tsx │ │ │ │ ├── EnvelopeBudgetMonthMenuModal.tsx │ │ │ │ ├── EnvelopeBudgetSummaryModal.tsx │ │ │ │ ├── EnvelopeToBudgetMenuModal.tsx │ │ │ │ ├── FixEncryptionKeyModal.tsx │ │ │ │ ├── GoCardlessExternalMsgModal.tsx │ │ │ │ ├── GoCardlessInitialiseModal.tsx │ │ │ │ ├── GoalTemplateModal.tsx │ │ │ │ ├── HoldBufferModal.tsx │ │ │ │ ├── ImportTransactionsModal │ │ │ │ │ ├── CheckboxOption.tsx │ │ │ │ │ ├── DateFormatSelect.tsx │ │ │ │ │ ├── FieldMappings.tsx │ │ │ │ │ ├── ImportTransactionsModal.jsx │ │ │ │ │ ├── InOutOption.tsx │ │ │ │ │ ├── MultiplierOption.tsx │ │ │ │ │ ├── ParsedDate.tsx │ │ │ │ │ ├── SelectField.tsx │ │ │ │ │ ├── SubLabel.tsx │ │ │ │ │ ├── Transaction.tsx │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── utils.test.ts │ │ │ │ │ └── utils.ts │ │ │ │ ├── KeyboardShortcutModal.tsx │ │ │ │ ├── LoadBackupModal.tsx │ │ │ │ ├── ManageRulesModal.tsx │ │ │ │ ├── MergeUnusedPayeesModal.tsx │ │ │ │ ├── NewCategoryGroupModal.tsx │ │ │ │ ├── NewCategoryModal.tsx │ │ │ │ ├── NotesModal.tsx │ │ │ │ ├── OpenIDEnableModal.tsx │ │ │ │ ├── OutOfSyncMigrationsModal.tsx │ │ │ │ ├── PasswordEnableModal.tsx │ │ │ │ ├── PayeeAutocompleteModal.tsx │ │ │ │ ├── PluggyAiInitialiseModal.tsx │ │ │ │ ├── ScheduledTransactionMenuModal.tsx │ │ │ │ ├── SelectLinkedAccountsModal.jsx │ │ │ │ ├── SimpleFinInitialiseModal.tsx │ │ │ │ ├── SingleInputModal.tsx │ │ │ │ ├── TrackingBalanceMenuModal.tsx │ │ │ │ ├── TrackingBudgetMenuModal.tsx │ │ │ │ ├── TrackingBudgetMonthMenuModal.tsx │ │ │ │ ├── TrackingBudgetSummaryModal.tsx │ │ │ │ ├── TransferModal.tsx │ │ │ │ ├── TransferOwnership.tsx │ │ │ │ └── manager │ │ │ │ │ ├── ConfirmChangeDocumentDir.tsx │ │ │ │ │ ├── DeleteFileModal.tsx │ │ │ │ │ ├── DuplicateFileModal.tsx │ │ │ │ │ ├── FilesSettingsModal.tsx │ │ │ │ │ ├── ImportActualModal.tsx │ │ │ │ │ ├── ImportModal.tsx │ │ │ │ │ ├── ImportYNAB4Modal.tsx │ │ │ │ │ └── ImportYNAB5Modal.tsx │ │ │ ├── payees │ │ │ │ ├── CategoryLearning.tsx │ │ │ │ ├── ManagePayees.tsx │ │ │ │ ├── ManagePayeesPage.tsx │ │ │ │ ├── ManagePayeesWithData.tsx │ │ │ │ ├── PayeeMenu.tsx │ │ │ │ ├── PayeeTable.tsx │ │ │ │ └── PayeeTableRow.tsx │ │ │ ├── reports │ │ │ │ ├── CategorySelector.tsx │ │ │ │ ├── Change.tsx │ │ │ │ ├── ChooseGraph.tsx │ │ │ │ ├── Container.tsx │ │ │ │ ├── DateRange.tsx │ │ │ │ ├── GraphButton.tsx │ │ │ │ ├── Header.tsx │ │ │ │ ├── LegendItem.tsx │ │ │ │ ├── LoadingIndicator.tsx │ │ │ │ ├── ModeButton.tsx │ │ │ │ ├── Overview.tsx │ │ │ │ ├── ReportCard.tsx │ │ │ │ ├── ReportCardName.tsx │ │ │ │ ├── ReportLegend.tsx │ │ │ │ ├── ReportOptions.ts │ │ │ │ ├── ReportRouter.tsx │ │ │ │ ├── ReportSidebar.tsx │ │ │ │ ├── ReportSummary.tsx │ │ │ │ ├── ReportTopbar.tsx │ │ │ │ ├── SaveReport.tsx │ │ │ │ ├── SaveReportChoose.tsx │ │ │ │ ├── SaveReportDelete.tsx │ │ │ │ ├── SaveReportMenu.tsx │ │ │ │ ├── SaveReportName.tsx │ │ │ │ ├── SnapshotButton.tsx │ │ │ │ ├── SummaryNumber.tsx │ │ │ │ ├── chart-theme.ts │ │ │ │ ├── constants.ts │ │ │ │ ├── disabledList.ts │ │ │ │ ├── getCustomTick.ts │ │ │ │ ├── getLiveRange.ts │ │ │ │ ├── graphs │ │ │ │ │ ├── AreaGraph.tsx │ │ │ │ │ ├── BarGraph.tsx │ │ │ │ │ ├── BarLineGraph.tsx │ │ │ │ │ ├── CalendarGraph.tsx │ │ │ │ │ ├── CashFlowGraph.tsx │ │ │ │ │ ├── DonutGraph.tsx │ │ │ │ │ ├── LineGraph.tsx │ │ │ │ │ ├── NetWorthGraph.tsx │ │ │ │ │ ├── SpendingGraph.tsx │ │ │ │ │ ├── StackedBarGraph.tsx │ │ │ │ │ ├── adjustTextSize.ts │ │ │ │ │ ├── renderCustomLabel.tsx │ │ │ │ │ ├── showActivity.ts │ │ │ │ │ └── tableGraph │ │ │ │ │ │ ├── RenderTableRow.tsx │ │ │ │ │ │ ├── ReportTable.tsx │ │ │ │ │ │ ├── ReportTableHeader.tsx │ │ │ │ │ │ ├── ReportTableList.tsx │ │ │ │ │ │ ├── ReportTableRow.tsx │ │ │ │ │ │ └── ReportTableTotals.tsx │ │ │ │ ├── index.tsx │ │ │ │ ├── numberFormatter.ts │ │ │ │ ├── overview.scss │ │ │ │ ├── reportRanges.ts │ │ │ │ ├── reports │ │ │ │ │ ├── Calendar.tsx │ │ │ │ │ ├── CalendarCard.tsx │ │ │ │ │ ├── CashFlow.tsx │ │ │ │ │ ├── CashFlowCard.tsx │ │ │ │ │ ├── CustomReport.tsx │ │ │ │ │ ├── CustomReportListCards.tsx │ │ │ │ │ ├── GetCardData.tsx │ │ │ │ │ ├── MarkdownCard.tsx │ │ │ │ │ ├── MissingReportCard.tsx │ │ │ │ │ ├── NetWorth.tsx │ │ │ │ │ ├── NetWorthCard.tsx │ │ │ │ │ ├── Spending.tsx │ │ │ │ │ ├── SpendingCard.tsx │ │ │ │ │ ├── Summary.tsx │ │ │ │ │ └── SummaryCard.tsx │ │ │ │ ├── setSessionReport.ts │ │ │ │ ├── spreadsheets │ │ │ │ │ ├── calculateLegend.ts │ │ │ │ │ ├── calendar-spreadsheet.ts │ │ │ │ │ ├── cash-flow-spreadsheet.tsx │ │ │ │ │ ├── custom-spreadsheet.ts │ │ │ │ │ ├── filterEmptyRows.ts │ │ │ │ │ ├── filterHiddenItems.ts │ │ │ │ │ ├── grouped-spreadsheet.ts │ │ │ │ │ ├── makeQuery.ts │ │ │ │ │ ├── net-worth-spreadsheet.ts │ │ │ │ │ ├── recalculate.ts │ │ │ │ │ ├── sortData.ts │ │ │ │ │ ├── spending-spreadsheet.ts │ │ │ │ │ └── summary-spreadsheet.ts │ │ │ │ ├── useReport.ts │ │ │ │ └── util.ts │ │ │ ├── responsive │ │ │ │ ├── index.tsx │ │ │ │ ├── narrow.ts │ │ │ │ └── wide.ts │ │ │ ├── rules │ │ │ │ ├── ActionExpression.tsx │ │ │ │ ├── ConditionExpression.tsx │ │ │ │ ├── RuleRow.tsx │ │ │ │ ├── RulesHeader.tsx │ │ │ │ ├── RulesList.tsx │ │ │ │ ├── ScheduleValue.tsx │ │ │ │ └── Value.tsx │ │ │ ├── schedules │ │ │ │ ├── CustomUpcomingLength.tsx │ │ │ │ ├── DiscoverSchedules.tsx │ │ │ │ ├── PostsOfflineNotification.tsx │ │ │ │ ├── ScheduleDetails.tsx │ │ │ │ ├── ScheduleLink.tsx │ │ │ │ ├── SchedulesTable.tsx │ │ │ │ ├── StatusBadge.tsx │ │ │ │ ├── UpcomingLength.tsx │ │ │ │ └── index.tsx │ │ │ ├── select │ │ │ │ ├── DateSelect.left.png │ │ │ │ ├── DateSelect.right.png │ │ │ │ ├── DateSelect.tsx │ │ │ │ └── RecurringSchedulePicker.tsx │ │ │ ├── settings │ │ │ │ ├── AuthSettings.tsx │ │ │ │ ├── Backups.tsx │ │ │ │ ├── BudgetTypeSettings.tsx │ │ │ │ ├── Encryption.tsx │ │ │ │ ├── Experimental.tsx │ │ │ │ ├── Export.tsx │ │ │ │ ├── Format.tsx │ │ │ │ ├── LanguageSettings.tsx │ │ │ │ ├── RepairTransactions.tsx │ │ │ │ ├── Reset.tsx │ │ │ │ ├── Themes.tsx │ │ │ │ ├── UI.tsx │ │ │ │ └── index.tsx │ │ │ ├── sidebar │ │ │ │ ├── Account.tsx │ │ │ │ ├── Accounts.tsx │ │ │ │ ├── BudgetName.tsx │ │ │ │ ├── Item.tsx │ │ │ │ ├── ItemContent.tsx │ │ │ │ ├── PrimaryButtons.tsx │ │ │ │ ├── SecondaryButtons.tsx │ │ │ │ ├── SecondaryItem.tsx │ │ │ │ ├── Sidebar.tsx │ │ │ │ ├── SidebarProvider.tsx │ │ │ │ ├── ToggleButton.tsx │ │ │ │ └── index.tsx │ │ │ ├── sort.tsx │ │ │ ├── spreadsheet │ │ │ │ ├── CellValue.tsx │ │ │ │ ├── NamespaceContext.ts │ │ │ │ ├── index.ts │ │ │ │ ├── useFormat.ts │ │ │ │ ├── useSheetName.ts │ │ │ │ └── useSheetValue.ts │ │ │ ├── table.tsx │ │ │ ├── transactions │ │ │ │ ├── SelectedTransactionsButton.tsx │ │ │ │ ├── SimpleTransactionsTable.tsx │ │ │ │ ├── TransactionList.tsx │ │ │ │ ├── TransactionMenu.tsx │ │ │ │ ├── TransactionsTable.test.tsx │ │ │ │ ├── TransactionsTable.tsx │ │ │ │ └── table │ │ │ │ │ └── utils.ts │ │ │ └── util │ │ │ │ ├── AmountInput.tsx │ │ │ │ ├── DisplayId.tsx │ │ │ │ ├── GenericInput.jsx │ │ │ │ ├── LoadComponent.tsx │ │ │ │ ├── PercentInput.tsx │ │ │ │ ├── accountValidation.ts │ │ │ │ └── countries.ts │ │ ├── fonts.scss │ │ ├── global-events.ts │ │ ├── gocardless.ts │ │ ├── hooks │ │ │ ├── useAccount.ts │ │ │ ├── useAccountPreviewTransactions.ts │ │ │ ├── useAccounts.ts │ │ │ ├── useCachedSchedules.tsx │ │ │ ├── useCategories.ts │ │ │ ├── useCategory.ts │ │ │ ├── useCategoryGroup.ts │ │ │ ├── useCategoryPreviewTransactions.ts │ │ │ ├── useCategoryScheduleGoalTemplateIndicator.ts │ │ │ ├── useCategoryScheduleGoalTemplates.ts │ │ │ ├── useClosedAccounts.ts │ │ │ ├── useContextMenu.ts │ │ │ ├── useDashboard.ts │ │ │ ├── useDateFormat.ts │ │ │ ├── useDisplayPayee.ts │ │ │ ├── useDragRef.ts │ │ │ ├── useFailedAccounts.ts │ │ │ ├── useFeatureFlag.ts │ │ │ ├── useFormatList.ts │ │ │ ├── useGlobalPref.ts │ │ │ ├── useGoCardlessStatus.ts │ │ │ ├── useInitialMount.ts │ │ │ ├── useIsInViewport.ts │ │ │ ├── useLatestVersion.ts │ │ │ ├── useLocalPref.ts │ │ │ ├── useLocale.ts │ │ │ ├── useMergedRefs.ts │ │ │ ├── useMetaThemeColor.ts │ │ │ ├── useMetadataPref.ts │ │ │ ├── useModalState.ts │ │ │ ├── useNavigate.ts │ │ │ ├── useNotes.ts │ │ │ ├── useOffBudgetAccounts.ts │ │ │ ├── useOnBudgetAccounts.ts │ │ │ ├── useOverspentCategories.ts │ │ │ ├── usePayee.ts │ │ │ ├── usePayees.ts │ │ │ ├── usePluggyAiStatus.ts │ │ │ ├── usePreviewTransactions.ts │ │ │ ├── usePrevious.ts │ │ │ ├── usePrivacyMode.ts │ │ │ ├── useProperFocus.tsx │ │ │ ├── useQuery.ts │ │ │ ├── useReport.ts │ │ │ ├── useReports.ts │ │ │ ├── useResizeObserver.ts │ │ │ ├── useRuleConditionFilters.ts │ │ │ ├── useSchedules.ts │ │ │ ├── useSelected.tsx │ │ │ ├── useSendPlatformRequest.ts │ │ │ ├── useSimpleFinStatus.ts │ │ │ ├── useSingleActiveEditForm.tsx │ │ │ ├── useSplitsExpanded.tsx │ │ │ ├── useSpreadsheet.tsx │ │ │ ├── useSyncServerStatus.ts │ │ │ ├── useSyncedPref.ts │ │ │ ├── useSyncedPrefs.ts │ │ │ ├── useTransactionBatchActions.ts │ │ │ ├── useTransactionFilters.ts │ │ │ ├── useTransactions.ts │ │ │ ├── useTransactionsSearch.ts │ │ │ ├── useUndo.ts │ │ │ ├── useUpdatedAccounts.ts │ │ │ └── useWidget.ts │ │ ├── i18n.test.ts │ │ ├── i18n.ts │ │ ├── index.tsx │ │ ├── modals │ │ │ └── modalsSlice.ts │ │ ├── notifications │ │ │ └── notificationsSlice.ts │ │ ├── polyfills.ts │ │ ├── prefs │ │ │ └── prefsSlice.ts │ │ ├── queries │ │ │ ├── aqlQuery.test.ts │ │ │ ├── aqlQuery.ts │ │ │ ├── liveQuery.test.ts │ │ │ ├── liveQuery.ts │ │ │ ├── pagedQuery.test.ts │ │ │ ├── pagedQuery.ts │ │ │ ├── queries.ts │ │ │ └── queriesSlice.ts │ │ ├── redux │ │ │ ├── index.ts │ │ │ ├── mock.tsx │ │ │ └── store.ts │ │ ├── setupTests.js │ │ ├── style │ │ │ ├── colors.ts │ │ │ ├── index.ts │ │ │ ├── palette.ts │ │ │ ├── styles.ts │ │ │ ├── theme.tsx │ │ │ └── themes │ │ │ │ ├── dark.ts │ │ │ │ ├── development.ts │ │ │ │ ├── light.ts │ │ │ │ └── midnight.ts │ │ ├── sync-events.ts │ │ ├── undo │ │ │ └── index.ts │ │ ├── users │ │ │ └── usersSlice.ts │ │ └── util │ │ │ ├── markdown.ts │ │ │ ├── router-tools.ts │ │ │ └── versions.ts │ └── vite.config.mts ├── desktop-electron │ ├── .babelrc │ ├── .gitignore │ ├── appx │ │ ├── LargeTile.png │ │ ├── LargeTile.scale-100.png │ │ ├── LargeTile.scale-125.png │ │ ├── LargeTile.scale-150.png │ │ ├── LargeTile.scale-200.png │ │ ├── LargeTile.scale-400.png │ │ ├── SmallTile.png │ │ ├── SmallTile.scale-100.png │ │ ├── SmallTile.scale-125.png │ │ ├── SmallTile.scale-150.png │ │ ├── SmallTile.scale-200.png │ │ ├── SmallTile.scale-400.png │ │ ├── SplashScreen.scale-100.png │ │ ├── SplashScreen.scale-125.png │ │ ├── SplashScreen.scale-150.png │ │ ├── SplashScreen.scale-200.png │ │ ├── SplashScreen.scale-400.png │ │ ├── Square150x150Logo.png │ │ ├── Square150x150Logo.scale-100.png │ │ ├── Square150x150Logo.scale-125.png │ │ ├── Square150x150Logo.scale-150.png │ │ ├── Square150x150Logo.scale-200.png │ │ ├── Square150x150Logo.scale-400.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-20.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-30.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-36.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-40.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-44.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-48.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-60.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-64.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-72.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-80.png │ │ ├── Square44x44Logo.altform-lightunplated_targetsize-96.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-20.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-24.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-30.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-36.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-40.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-44.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-60.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-64.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-72.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-80.png │ │ ├── Square44x44Logo.altform-unplated_targetsize-96.png │ │ ├── Square44x44Logo.png │ │ ├── Square44x44Logo.scale-100.png │ │ ├── Square44x44Logo.scale-125.png │ │ ├── Square44x44Logo.scale-150.png │ │ ├── Square44x44Logo.scale-200.png │ │ ├── Square44x44Logo.scale-400.png │ │ ├── Square44x44Logo.targetsize-16.png │ │ ├── Square44x44Logo.targetsize-20.png │ │ ├── Square44x44Logo.targetsize-24.png │ │ ├── Square44x44Logo.targetsize-256.png │ │ ├── Square44x44Logo.targetsize-30.png │ │ ├── Square44x44Logo.targetsize-32.png │ │ ├── Square44x44Logo.targetsize-36.png │ │ ├── Square44x44Logo.targetsize-40.png │ │ ├── Square44x44Logo.targetsize-44.png │ │ ├── Square44x44Logo.targetsize-48.png │ │ ├── Square44x44Logo.targetsize-60.png │ │ ├── Square44x44Logo.targetsize-64.png │ │ ├── Square44x44Logo.targetsize-72.png │ │ ├── Square44x44Logo.targetsize-80.png │ │ ├── Square44x44Logo.targetsize-96.png │ │ ├── StoreLogo.png │ │ ├── StoreLogo.scale-100.png │ │ ├── StoreLogo.scale-125.png │ │ ├── StoreLogo.scale-150.png │ │ ├── StoreLogo.scale-200.png │ │ ├── StoreLogo.scale-400.png │ │ ├── Wide310x150Logo.png │ │ ├── Wide310x150Logo.scale-100.png │ │ ├── Wide310x150Logo.scale-125.png │ │ ├── Wide310x150Logo.scale-150.png │ │ ├── Wide310x150Logo.scale-200.png │ │ └── Wide310x150Logo.scale-400.png │ ├── beforePackHook.ts │ ├── bin │ │ └── update-client │ ├── e2e │ │ ├── __screenshots__ │ │ │ └── onboarding.test.ts │ │ │ │ ├── Onboarding-checks-the-page-visuals-1-linux.png │ │ │ │ └── Onboarding-checks-the-page-visuals-2-linux.png │ │ ├── data │ │ │ └── .gitkeep │ │ ├── fixtures.ts │ │ └── onboarding.test.ts │ ├── icons │ │ ├── generate-icns │ │ ├── icon.icns │ │ ├── icon.ico │ │ └── icon.png │ ├── index.ts │ ├── loading.html │ ├── menu.ts │ ├── modules.d.ts │ ├── package.json │ ├── playwright.config.ts │ ├── preload.ts │ ├── security.ts │ ├── server.ts │ ├── tsconfig.dist.json │ └── window-state.ts ├── eslint-plugin-actual │ ├── lib │ │ └── rules │ │ │ ├── __tests__ │ │ │ ├── prefer-if-statement.test.js │ │ │ └── typography.test.js │ │ │ ├── prefer-if-statement.js │ │ │ └── typography.js │ └── package.json ├── loot-core │ ├── .gitignore │ ├── .swcrc │ ├── bin │ │ ├── build-api │ │ ├── build-browser │ │ └── copy-migrations │ ├── db.sqlite │ ├── default-db.sqlite │ ├── migrations │ │ ├── .force-copy-windows │ │ ├── 1548957970627_remove-db-version.sql │ │ ├── 1550601598648_payees.sql │ │ ├── 1555786194328_remove_category_group_unique.sql │ │ ├── 1561751833510_indexes.sql │ │ ├── 1567699552727_budget.sql │ │ ├── 1582384163573_cleared.sql │ │ ├── 1597756566448_rules.sql │ │ ├── 1608652596043_parent_field.sql │ │ ├── 1608652596044_trans_views.sql │ │ ├── 1612625548236_optimize.sql │ │ ├── 1614782639336_trans_views2.sql │ │ ├── 1615745967948_meta.sql │ │ ├── 1616167010796_accounts_order.sql │ │ ├── 1618975177358_schedules.sql │ │ ├── 1632571489012_remove_cache.js │ │ ├── 1679728867040_rules_conditions.sql │ │ ├── 1681115033845_add_schedule_name.sql │ │ ├── 1682974838138_remove_payee_rules.sql │ │ ├── 1685007876842_add_category_hidden.sql │ │ ├── 1686139660866_remove_account_type.sql │ │ ├── 1688749527273_transaction_filters.sql │ │ ├── 1688841238000_add_account_type.sql │ │ ├── 1691233396000_add_schedule_next_date_tombstone.sql │ │ ├── 1694438752000_add_goal_targets.sql │ │ ├── 1697046240000_add_reconciled.sql │ │ ├── 1704572023730_add_account_sync_source.sql │ │ ├── 1704572023731_add_missing_goCardless_sync_source.sql │ │ ├── 1707267033000_reports.sql │ │ ├── 1712784523000_unhide_input_group.sql │ │ ├── 1716359441000_include_current.sql │ │ ├── 1720310586000_link_transfer_schedules.sql │ │ ├── 1720664867241_add_payee_favorite.sql │ │ ├── 1720665000000_goal_context.sql │ │ ├── 1722717601000_reports_move_selected_categories.js │ │ ├── 1722804019000_create_dashboard_table.js │ │ ├── 1723665565000_prefs.js │ │ ├── 1730744182000_fix_dashboard_table.sql │ │ ├── 1736640000000_custom_report_sorting.sql │ │ ├── 1737158400000_add_learn_categories_to_payees.sql │ │ ├── 1738491452000_sorting_rename.sql │ │ ├── 1739139550000_bank_sync_page.sql │ │ ├── 1740506588539_add_last_reconciled_at.sql │ │ └── 1745425408000_update_budgetType_pref.sql │ ├── package.json │ ├── peg-loader.js │ ├── src │ │ ├── mocks │ │ │ ├── arbitrary-schema.ts │ │ │ ├── budget.ts │ │ │ ├── files │ │ │ │ ├── 8859-1.qfx │ │ │ │ ├── best.data-ever$.QFX │ │ │ │ ├── big.data.QiF │ │ │ │ ├── budgets │ │ │ │ │ └── .commit-to-git │ │ │ │ ├── camt │ │ │ │ │ └── camt.053.xml │ │ │ │ ├── credit-card.ofx │ │ │ │ ├── data-multi-decimal.ofx │ │ │ │ ├── data.ofx │ │ │ │ ├── data.qfx │ │ │ │ ├── data.qif │ │ │ │ ├── default-budget-template │ │ │ │ │ ├── db.sqlite │ │ │ │ │ └── metadata.json │ │ │ │ └── html-vals.qfx │ │ │ ├── index.ts │ │ │ ├── migrations │ │ │ │ ├── 1508717984291_up_add-poop.sql │ │ │ │ ├── 1508718036311_up_modify-poop.sql │ │ │ │ └── 1508727787513_remove-is_income.sql │ │ │ ├── random.ts │ │ │ ├── setup.ts │ │ │ ├── spreadsheet.ts │ │ │ └── util.ts │ │ ├── platform │ │ │ ├── client │ │ │ │ ├── fetch │ │ │ │ │ ├── __mocks__ │ │ │ │ │ │ └── index.ts │ │ │ │ │ ├── index.browser.ts │ │ │ │ │ ├── index.d.ts │ │ │ │ │ └── index.ts │ │ │ │ └── undo │ │ │ │ │ └── index.ts │ │ │ ├── exceptions │ │ │ │ ├── __mocks__ │ │ │ │ │ └── index.ts │ │ │ │ └── index.ts │ │ │ └── server │ │ │ │ ├── asyncStorage │ │ │ │ ├── __mocks__ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.electron.ts │ │ │ │ └── index.ts │ │ │ │ ├── connection │ │ │ │ ├── __mocks__ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.api.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.electron.ts │ │ │ │ └── index.ts │ │ │ │ ├── fetch │ │ │ │ ├── __mocks__ │ │ │ │ │ └── index.ts │ │ │ │ ├── index.api.ts │ │ │ │ ├── index.electron.ts │ │ │ │ └── index.ts │ │ │ │ ├── fs │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.electron.ts │ │ │ │ ├── index.web.test.ts │ │ │ │ ├── index.web.ts │ │ │ │ ├── path-join.d.ts │ │ │ │ ├── path-join.electron.ts │ │ │ │ ├── path-join.web.ts │ │ │ │ └── shared.ts │ │ │ │ ├── indexeddb │ │ │ │ └── index.ts │ │ │ │ ├── log │ │ │ │ └── index.ts │ │ │ │ └── sqlite │ │ │ │ ├── index.d.ts │ │ │ │ ├── index.electron.ts │ │ │ │ ├── index.web.test.ts │ │ │ │ ├── index.web.ts │ │ │ │ ├── normalise.ts │ │ │ │ ├── unicodeLike.test.ts │ │ │ │ └── unicodeLike.ts │ │ ├── server │ │ │ ├── __mocks__ │ │ │ │ └── post.ts │ │ │ ├── __snapshots__ │ │ │ │ ├── main.test.ts.snap │ │ │ │ └── sheet.test.ts.snap │ │ │ ├── accounts │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── sync.test.ts.snap │ │ │ │ ├── app.ts │ │ │ │ ├── link.ts │ │ │ │ ├── payees.ts │ │ │ │ ├── sync.test.ts │ │ │ │ ├── sync.ts │ │ │ │ └── title │ │ │ │ │ ├── index.ts │ │ │ │ │ ├── lower-case.ts │ │ │ │ │ └── specials.ts │ │ │ ├── admin │ │ │ │ └── app.ts │ │ │ ├── api-models.ts │ │ │ ├── api.test.ts │ │ │ ├── api.ts │ │ │ ├── app.ts │ │ │ ├── aql │ │ │ │ ├── compiler.test.ts │ │ │ │ ├── compiler.ts │ │ │ │ ├── exec.test.ts │ │ │ │ ├── exec.ts │ │ │ │ ├── index.ts │ │ │ │ ├── schema-helpers.test.ts │ │ │ │ ├── schema-helpers.ts │ │ │ │ ├── schema │ │ │ │ │ ├── executors.test.ts │ │ │ │ │ ├── executors.ts │ │ │ │ │ ├── index.test.ts │ │ │ │ │ └── index.ts │ │ │ │ ├── views.test.ts │ │ │ │ └── views.ts │ │ │ ├── auth │ │ │ │ └── app.ts │ │ │ ├── bench.ts │ │ │ ├── budget │ │ │ │ ├── actions.ts │ │ │ │ ├── app.ts │ │ │ │ ├── base.test.ts │ │ │ │ ├── base.ts │ │ │ │ ├── category-template-context.test.ts │ │ │ │ ├── category-template-context.ts │ │ │ │ ├── cleanup-template.pegjs │ │ │ │ ├── cleanup-template.ts │ │ │ │ ├── envelope.ts │ │ │ │ ├── goal-template.pegjs │ │ │ │ ├── goal-template.ts │ │ │ │ ├── report.ts │ │ │ │ ├── schedule-template.test.ts │ │ │ │ ├── schedule-template.ts │ │ │ │ ├── statements.ts │ │ │ │ ├── template-notes.test.ts │ │ │ │ ├── template-notes.ts │ │ │ │ ├── types │ │ │ │ │ └── templates.d.ts │ │ │ │ └── util.ts │ │ │ ├── budgetfiles │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── backups.test.ts.snap │ │ │ │ ├── app.ts │ │ │ │ ├── backups.test.ts │ │ │ │ └── backups.ts │ │ │ ├── cloud-storage.ts │ │ │ ├── dashboard │ │ │ │ └── app.ts │ │ │ ├── db │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── index.test.ts.snap │ │ │ │ ├── index.test.ts │ │ │ │ ├── index.ts │ │ │ │ ├── mappings.ts │ │ │ │ ├── sort.ts │ │ │ │ ├── types │ │ │ │ │ └── index.ts │ │ │ │ └── util.ts │ │ │ ├── encryption │ │ │ │ ├── app.ts │ │ │ │ ├── encryption-internals.ts │ │ │ │ ├── encryption-internals.web.ts │ │ │ │ ├── encryption.test.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── errors.ts │ │ │ ├── filters │ │ │ │ └── app.ts │ │ │ ├── importers │ │ │ │ ├── actual.ts │ │ │ │ ├── index.ts │ │ │ │ ├── ynab4-types.d.ts │ │ │ │ ├── ynab4.ts │ │ │ │ ├── ynab5-types.d.ts │ │ │ │ └── ynab5.ts │ │ │ ├── main-app.ts │ │ │ ├── main.test.ts │ │ │ ├── main.ts │ │ │ ├── migrate │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── migrations.test.ts.snap │ │ │ │ ├── cli.ts │ │ │ │ ├── migrations.test.ts │ │ │ │ └── migrations.ts │ │ │ ├── models.ts │ │ │ ├── mutators.ts │ │ │ ├── notes │ │ │ │ └── app.ts │ │ │ ├── payees │ │ │ │ └── app.ts │ │ │ ├── polyfills.ts │ │ │ ├── post.ts │ │ │ ├── preferences │ │ │ │ └── app.ts │ │ │ ├── prefs.ts │ │ │ ├── reports │ │ │ │ └── app.ts │ │ │ ├── rules │ │ │ │ ├── app.ts │ │ │ │ ├── index.test.ts │ │ │ │ └── index.ts │ │ │ ├── schedules │ │ │ │ ├── app.test.ts │ │ │ │ ├── app.ts │ │ │ │ └── find-schedules.ts │ │ │ ├── server-config.ts │ │ │ ├── sheet.test.ts │ │ │ ├── sheet.ts │ │ │ ├── spreadsheet │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── spreadsheet.test.ts.snap │ │ │ │ ├── app.ts │ │ │ │ ├── globals.ts │ │ │ │ ├── graph-data-structure.ts │ │ │ │ ├── scratch │ │ │ │ ├── spreadsheet.test.ts │ │ │ │ ├── spreadsheet.ts │ │ │ │ └── util.ts │ │ │ ├── sql │ │ │ │ └── init.sql │ │ │ ├── sync │ │ │ │ ├── __snapshots__ │ │ │ │ │ └── sync.test.ts.snap │ │ │ │ ├── app.ts │ │ │ │ ├── encoder.ts │ │ │ │ ├── index.ts │ │ │ │ ├── make-test-message.ts │ │ │ │ ├── migrate.test.ts │ │ │ │ ├── migrate.ts │ │ │ │ ├── repair.ts │ │ │ │ ├── reset.ts │ │ │ │ ├── sync.property.test.ts │ │ │ │ ├── sync.test.ts │ │ │ │ └── utils.ts │ │ │ ├── tests │ │ │ │ ├── mockData.json │ │ │ │ └── mockSyncServer.ts │ │ │ ├── tools │ │ │ │ └── app.ts │ │ │ ├── transactions │ │ │ │ ├── __snapshots__ │ │ │ │ │ ├── transaction-rules.test.ts.snap │ │ │ │ │ └── transfer.test.ts.snap │ │ │ │ ├── app.ts │ │ │ │ ├── export │ │ │ │ │ └── export-to-csv.ts │ │ │ │ ├── import │ │ │ │ │ ├── __snapshots__ │ │ │ │ │ │ └── parse-file.test.ts.snap │ │ │ │ │ ├── ofx2json.test.ts │ │ │ │ │ ├── ofx2json.ts │ │ │ │ │ ├── parse-file.test.ts │ │ │ │ │ ├── parse-file.ts │ │ │ │ │ ├── qif2json.ts │ │ │ │ │ └── xmlcamt2json.ts │ │ │ │ ├── index.ts │ │ │ │ ├── merge.test.ts │ │ │ │ ├── merge.ts │ │ │ │ ├── transaction-rules.test.ts │ │ │ │ ├── transaction-rules.ts │ │ │ │ ├── transfer.test.ts │ │ │ │ └── transfer.ts │ │ │ ├── undo.ts │ │ │ ├── update.ts │ │ │ └── util │ │ │ │ ├── budget-name.ts │ │ │ │ ├── custom-sync-mapping.ts │ │ │ │ └── rschedule.ts │ │ ├── shared │ │ │ ├── __mocks__ │ │ │ │ └── platform.web.ts │ │ │ ├── __snapshots__ │ │ │ │ └── months.test.ts.snap │ │ │ ├── arithmetic.test.ts │ │ │ ├── arithmetic.ts │ │ │ ├── async.test.ts │ │ │ ├── async.ts │ │ │ ├── dashboard.ts │ │ │ ├── environment.ts │ │ │ ├── errors.ts │ │ │ ├── locale.ts │ │ │ ├── months.test.ts │ │ │ ├── months.ts │ │ │ ├── normalisation.ts │ │ │ ├── platform.electron.ts │ │ │ ├── platform.ts │ │ │ ├── platform.web.ts │ │ │ ├── query.ts │ │ │ ├── rules.ts │ │ │ ├── schedules.test.ts │ │ │ ├── schedules.ts │ │ │ ├── test-helpers.ts │ │ │ ├── transactions.test.ts │ │ │ ├── transactions.ts │ │ │ ├── transfer.test.ts │ │ │ ├── transfer.ts │ │ │ ├── user.ts │ │ │ ├── util.test.ts │ │ │ └── util.ts │ │ └── types │ │ │ ├── api-handlers.ts │ │ │ ├── budget.ts │ │ │ ├── file.ts │ │ │ ├── handlers.ts │ │ │ ├── models │ │ │ ├── account.d.ts │ │ │ ├── bank-sync.ts │ │ │ ├── bank.d.ts │ │ │ ├── category-group.ts │ │ │ ├── category.ts │ │ │ ├── dashboard.ts │ │ │ ├── gocardless.ts │ │ │ ├── index.ts │ │ │ ├── note.ts │ │ │ ├── openid.ts │ │ │ ├── payee.ts │ │ │ ├── pluggyai.d.ts │ │ │ ├── reports.ts │ │ │ ├── rule.ts │ │ │ ├── schedule.ts │ │ │ ├── simplefin.ts │ │ │ ├── transaction-filter.ts │ │ │ ├── transaction.ts │ │ │ ├── user-access.d.ts │ │ │ └── user.d.ts │ │ │ ├── prefs.d.ts │ │ │ ├── server-events.ts │ │ │ ├── server-handlers.ts │ │ │ └── util.ts │ ├── tsconfig.api.json │ ├── typings │ │ ├── pegjs.d.ts │ │ ├── vite-plugin-peggy-loader.d.ts │ │ └── window.d.ts │ ├── vitest.config.ts │ ├── vitest.web.config.ts │ └── webpack │ │ ├── webpack.api.config.js │ │ ├── webpack.browser.config.js │ │ └── webpack.desktop.config.js └── sync-server │ ├── .dockerignore │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── app.ts │ ├── babel.config.json │ ├── bin │ └── actual-server.js │ ├── docker-compose.yml │ ├── docker │ ├── alpine.Dockerfile │ └── ubuntu.Dockerfile │ ├── migrations │ ├── 1694360000000-create-folders.js │ ├── 1694360479680-create-account-db.js │ ├── 1694362247011-create-secret-table.js │ ├── 1702667624000-rename-nordigen-secrets.js │ ├── 1718889148000-openid.js │ └── 1719409568000-multiuser.js │ ├── package.json │ ├── src │ ├── account-db.js │ ├── accounts │ │ ├── openid.js │ │ └── password.js │ ├── app-account.js │ ├── app-admin.js │ ├── app-admin.test.js │ ├── app-gocardless │ │ ├── README.md │ │ ├── app-gocardless.js │ │ ├── bank-factory.js │ │ ├── banks │ │ │ ├── abanca_caglesmm.js │ │ │ ├── abnamro_abnanl2a.js │ │ │ ├── american_express_aesudef1.js │ │ │ ├── bancsabadell_bsabesbbb.js │ │ │ ├── bank.interface.ts │ │ │ ├── bank_of_ireland_b365_bofiie2d.js │ │ │ ├── bankinter_bkbkesmm.js │ │ │ ├── belfius_gkccbebb.js │ │ │ ├── berliner_sparkasse_beladebexxx.js │ │ │ ├── bnp_be_gebabebb.js │ │ │ ├── boursobank_bousfrppxxx.js │ │ │ ├── cbc_cregbebb.js │ │ │ ├── commerzbank_cobadeff.js │ │ │ ├── danskebank_dabno22.js │ │ │ ├── direkt_heladef1822.js │ │ │ ├── easybank_bawaatww.js │ │ │ ├── entercard_swednokk.js │ │ │ ├── fortuneo_ftnofrp1xxx.js │ │ │ ├── hype_hyeeit22.js │ │ │ ├── ing_ingbrobu.js │ │ │ ├── ing_ingddeff.js │ │ │ ├── ing_pl_ingbplpw.js │ │ │ ├── integration-bank.js │ │ │ ├── isybank_itbbitmm.js │ │ │ ├── kbc_kredbebb.js │ │ │ ├── lhv-lhvbee22.js │ │ │ ├── mbank_retail_brexplpw.js │ │ │ ├── nationwide_naiagb21.js │ │ │ ├── nbg_ethngraaxxx.js │ │ │ ├── norwegian_xx_norwnok1.js │ │ │ ├── revolut_revolt21.js │ │ │ ├── sandboxfinance_sfin0000.js │ │ │ ├── seb_kort_bank_ab.js │ │ │ ├── seb_privat.js │ │ │ ├── sparnord_spnodk22.js │ │ │ ├── spk_karlsruhe_karsde66.js │ │ │ ├── spk_marburg_biedenkopf_heladef1mar.js │ │ │ ├── spk_worms_alzey_ried_malade51wor.js │ │ │ ├── ssk_dusseldorf_dussdeddxxx.js │ │ │ ├── swedbank_habalv22.js │ │ │ ├── tests │ │ │ │ ├── abanca_caglesmm.spec.js │ │ │ │ ├── abnamro_abnanl2a.spec.js │ │ │ │ ├── bancsabadell_bsabesbbb.spec.js │ │ │ │ ├── belfius_gkccbebb.spec.js │ │ │ │ ├── boursobank_bousfrppxxx.spec.js │ │ │ │ ├── cbc_cregbebb.spec.js │ │ │ │ ├── commerzbank_cobadeff.spec.js │ │ │ │ ├── easybank_bawaatww.spec.js │ │ │ │ ├── fortuneo_ftnofrp1xxx.spec.js │ │ │ │ ├── ing_ingddeff.spec.js │ │ │ │ ├── ing_pl_ingbplpw.spec.js │ │ │ │ ├── integration_bank.spec.js │ │ │ │ ├── kbc_kredbebb.spec.js │ │ │ │ ├── lhv-lhvbee22.spec.js │ │ │ │ ├── mbank_retail_brexplpw.spec.js │ │ │ │ ├── nationwide_naiagb21.spec.js │ │ │ │ ├── nbg_ethngraaxxx.spec.js │ │ │ │ ├── revolut_revolt21.spec.js │ │ │ │ ├── sandboxfinance_sfin0000.spec.js │ │ │ │ ├── spk_marburg_biedenkopf_heladef1mar.spec.js │ │ │ │ ├── ssk_dusseldorf_dussdeddxxx.spec.js │ │ │ │ ├── swedbank_habalv22.spec.js │ │ │ │ └── virgin_nrnbgb22.spec.js │ │ │ ├── util │ │ │ │ ├── escape-regexp.js │ │ │ │ └── extract-payeeName-from-remittanceInfo.js │ │ │ └── virgin_nrnbgb22.js │ │ ├── errors.js │ │ ├── gocardless-node.types.ts │ │ ├── gocardless.types.ts │ │ ├── link.html │ │ ├── services │ │ │ ├── gocardless-service.js │ │ │ └── tests │ │ │ │ ├── fixtures.js │ │ │ │ └── gocardless-service.spec.js │ │ ├── tests │ │ │ ├── bank-factory.spec.js │ │ │ └── utils.spec.js │ │ ├── util │ │ │ └── handle-error.js │ │ └── utils.js │ ├── app-openid.js │ ├── app-pluggyai │ │ ├── app-pluggyai.js │ │ └── pluggyai-service.js │ ├── app-secrets.js │ ├── app-simplefin │ │ └── app-simplefin.js │ ├── app-sync.test.ts │ ├── app-sync.ts │ ├── app-sync │ │ ├── errors.js │ │ ├── services │ │ │ └── files-service.js │ │ ├── tests │ │ │ └── services │ │ │ │ └── files-service.test.js │ │ └── validation.js │ ├── app.ts │ ├── config-types.ts │ ├── db.js │ ├── load-config.js │ ├── migrations.js │ ├── scripts │ │ ├── disable-openid.js │ │ ├── enable-openid.js │ │ ├── health-check.js │ │ ├── reset-password.js │ │ └── run-migrations.js │ ├── secrets.test.js │ ├── services │ │ ├── secrets-service.js │ │ └── user-service.js │ ├── sql │ │ └── messages.sql │ ├── sync-simple.js │ └── util │ │ ├── hash.js │ │ ├── middlewares.js │ │ ├── paths.js │ │ ├── payee-name.js │ │ ├── prompt.js │ │ ├── title │ │ ├── index.js │ │ ├── lower-case.js │ │ └── specials.js │ │ └── validate-user.js │ ├── tsconfig.json │ ├── vitest.config.ts │ └── vitest.globalSetup.js ├── sync-server.Dockerfile ├── tsconfig.json ├── upcoming-release-notes ├── 4766.md ├── 4787.md ├── 4789.md ├── 4810.md ├── 4815.md ├── 4817.md ├── 4818.md ├── 4819.md ├── 4820.md ├── 4821.md ├── 4822.md ├── 4823.md ├── 4827.md ├── 4828.md ├── 4830.md ├── 4864.md ├── 4869.md ├── 4870.md ├── 4872.md ├── 4879.md ├── 4882.md ├── 4887.md ├── 4889.md ├── 4897.md ├── 4903.md ├── 4908.md ├── 4910.md ├── 4911.md ├── 4912.md ├── 4914.md ├── 4917.md ├── 4921.md ├── 4922.md ├── 4923.md ├── 4930.md ├── 4932.md ├── 4933.md ├── 4935.md ├── 4940.md ├── 4942.md ├── 4943.md ├── 4949.md ├── 4953.md ├── 4954.md ├── 4955.md ├── 4956.md ├── 4957.md ├── 4958.md ├── 4960.md ├── 4968.md ├── 4970.md ├── 4978.md ├── 4980.md ├── 4986.md ├── 4987.md ├── 4992.md ├── 4994.md ├── 4995.md ├── 4998.md ├── 5002.md ├── 5008.md ├── 5011.md ├── 5014.md ├── 5015.md ├── 5017.md ├── 5018.md ├── 5019.md ├── 5024.md ├── 5025.md ├── 5027.md ├── 5028.md ├── 5029.md ├── 5031.md ├── 5034.md ├── 5036.md ├── 5038.md ├── 5041.md ├── 5042.md ├── 5045.md ├── 5050.md ├── 5051.md ├── 5052.md ├── 5069.md ├── 5070.md ├── 5073.md ├── 5075.md └── README.md └── yarn.lock /.devcontainer/docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.8' 2 | services: 3 | actual-development: 4 | volumes: 5 | - ..:/workspaces:cached 6 | command: /bin/sh -c "while sleep 1000; do :; done" 7 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # https://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | charset = utf-8 7 | end_of_line = lf 8 | indent_size = 2 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = true 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # Funding policies: https://actualbudget.org/docs/contributing/leadership/funding 2 | open_collective: actual 3 | github: actualbudget 4 | -------------------------------------------------------------------------------- /.husky/pre-commit: -------------------------------------------------------------------------------- 1 | yarn lint-staged 2 | -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | v20/* 2 | -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "trailingComma": "all", 4 | "arrowParens": "avoid" 5 | } 6 | -------------------------------------------------------------------------------- /.secret-tokens.example: -------------------------------------------------------------------------------- 1 | export APPLE_ID=example@email.com 2 | export APPLE_APP_SPECIFIC_PASSWORD=password 3 | -------------------------------------------------------------------------------- /.yarnrc.yml: -------------------------------------------------------------------------------- 1 | compressionLevel: mixed 2 | 3 | enableGlobalCache: false 4 | 5 | enableTransparentWorkspaces: false 6 | 7 | nodeLinker: node-modules 8 | 9 | yarnPath: .yarn/releases/yarn-4.9.1.cjs 10 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Please review the contributing documentation on our website: https://actualbudget.org/docs/contributing/ 2 | -------------------------------------------------------------------------------- /data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/data/.gitkeep -------------------------------------------------------------------------------- /demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/demo.png -------------------------------------------------------------------------------- /packages/api/.gitignore: -------------------------------------------------------------------------------- 1 | app/bundle.api.js* 2 | app/stats.json 3 | migrations 4 | default-db.sqlite 5 | mocks/budgets/**/* 6 | -------------------------------------------------------------------------------- /packages/api/README.md: -------------------------------------------------------------------------------- 1 | ``` 2 | npm install @actual-app/api 3 | ``` 4 | 5 | View docs here: https://actualbudget.org/docs/api/ 6 | -------------------------------------------------------------------------------- /packages/api/injected.js: -------------------------------------------------------------------------------- 1 | // TODO: comment on why it works this way 2 | 3 | export let send; 4 | 5 | export function override(sendImplementation) { 6 | send = sendImplementation; 7 | } 8 | -------------------------------------------------------------------------------- /packages/api/mocks/budgets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/api/mocks/budgets/.gitkeep -------------------------------------------------------------------------------- /packages/api/utils.js: -------------------------------------------------------------------------------- 1 | export function amountToInteger(n) { 2 | return Math.round(n * 100); 3 | } 4 | 5 | export function integerToAmount(n) { 6 | return parseFloat((n / 100).toFixed(2)); 7 | } 8 | -------------------------------------------------------------------------------- /packages/api/vitest.config.ts: -------------------------------------------------------------------------------- 1 | export default { 2 | test: { 3 | globals: true, 4 | onConsoleLog(log: string, type: 'stdout' | 'stderr'): boolean | void { 5 | // print only console.error 6 | return type === 'stderr'; 7 | }, 8 | }, 9 | }; 10 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/.gitignore: -------------------------------------------------------------------------------- 1 | index.js 2 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/logo/index.ts: -------------------------------------------------------------------------------- 1 | export { SvgLogo } from './Logo'; 2 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/add-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/add-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/adjust.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/airplane.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/album.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/align-center.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/align-justified.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/align-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/align-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/anchor.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/announcement.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/apparel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-outline-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-outline-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-outline-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-outline-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thick-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thick-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thick-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thick-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thin-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thin-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thin-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-thin-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/arrow-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/artist.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/at-symbol.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/attachment.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/backspace.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/backward-step.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/badge.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/battery-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/battery-half.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/battery-low.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/beverage.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/block.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bluetooth.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bolt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/book-reference.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bookmark copy 2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bookmark copy 3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bookmark-outline-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bookmark-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/bookmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/border-all.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/border-inner.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/border-outer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/browser-window-new.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/browser-window-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/browser-window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/calculator.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/calendar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/camera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/chart-bar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/chart-pie.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/chat-bubble-dots.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/checkmark-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/checkmark.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-outline-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-outline-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-outline-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-outline-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cheveron-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/clipboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/close-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/close.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cloud-upload.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/cloud.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/code.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/coffee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/compose.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/computer-desktop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/computer-laptop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/conversation.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/credit-card.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/currency-dollar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/dashboard.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/date-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/directions.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/document-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/document.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/dots-horizontal-double.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/dots-horizontal-triple.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/duplicate.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/edit-copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/edit-crop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/edit-pencil.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/education.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/envelope.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/exclamation-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/exclamation-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/explore.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/factory.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/fast-forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/fast-rewind.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/film.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/filter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/flag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/flashlight.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/folder-outline-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/folder-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/folder.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/format-bold.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/format-font-size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/format-italic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/format-text-size.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/format-underline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/forward-step.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/gift.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/hand-stop.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/headphones.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/heart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/home.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/hot.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/hour-glass.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/inbox-check.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/inbox-download.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/inbox-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/inbox.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/indent-decrease.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/indent-increase.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/information-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/information-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/key.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/layers.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/library.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/light-bulb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/list-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/list-bullet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/load-balancer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-current.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-food.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-gas-station.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-hotel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-marina.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-park.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-restroom.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location-shopping.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/location.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/lock-closed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/lock-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/map.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/menu.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mic.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/minus-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/minus-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mood-happy-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mood-happy-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mood-neutral-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mood-sad-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mood-sad-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/mouse.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/music-album.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/music-artist.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/music-notes.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/music-playlist.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/navigation-more.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/news-paper.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/notification.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/notifications-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/notifications.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pause-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pause-solid.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pause.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pen-tool.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/phone.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/photo.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/php-elephant.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pin.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/play-outline.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/play.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/playlist.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/portfolio.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/printer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/pylon.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/question.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/queue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/radar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/refresh.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/reload.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/reply-all.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/reply.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/repost.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/save-disk.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/search.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/send.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/share-01.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/share-alt.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/share.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/shopping-cart.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/show-sidebar.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/stand-by.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/star-full.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/station.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/step-backward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/step-forward.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/stroke-width.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/subdirectory-left.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/subdirectory-right.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/subtract.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/swap.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/tablet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/tag.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/target.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/text-box.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/text-decoration.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/thermometer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/thumbs-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/thumbs-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/ticket.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/time.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/timer.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/tools copy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/trash.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/travel-case.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/travel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/trophy.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/tuning.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/upload.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/usb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/user-add.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/user-solid-circle.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/user-solid-square.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/user.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/vector.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/video-camera.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/view-carousel.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/view-column.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/view-list.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/view-show.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/view-tile.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/volume-down.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/volume-mute.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/volume-off.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/volume-up.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/wallet.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/watch.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/window-new.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/window-open.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/window.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/wrench.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/yin-yang.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/zoom-in.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v1/zoom-out.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v2/lock-closed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/component-library/src/icons/v2/navigation-menu.svg: -------------------------------------------------------------------------------- 1 | navigation-menu -------------------------------------------------------------------------------- /packages/component-library/src/icons/v2/subtract.svg: -------------------------------------------------------------------------------- 1 | subtract -------------------------------------------------------------------------------- /packages/component-library/src/icons/v2/view-show.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /packages/crdt/.gitignore: -------------------------------------------------------------------------------- 1 | bin/protoc-gen-js 2 | bin/protoc 3 | -------------------------------------------------------------------------------- /packages/crdt/index.ts: -------------------------------------------------------------------------------- 1 | export * from './src'; 2 | -------------------------------------------------------------------------------- /packages/crdt/src/crdt/index.ts: -------------------------------------------------------------------------------- 1 | import * as merkle from './merkle'; 2 | 3 | export { merkle }; 4 | export { 5 | getClock, 6 | setClock, 7 | makeClock, 8 | makeClientId, 9 | serializeClock, 10 | deserializeClock, 11 | type Clock, 12 | Timestamp, 13 | } from './timestamp'; 14 | -------------------------------------------------------------------------------- /packages/crdt/src/index.ts: -------------------------------------------------------------------------------- 1 | import * as SyncPb from './proto/sync_pb'; 2 | export { 3 | merkle, 4 | getClock, 5 | setClock, 6 | makeClock, 7 | makeClientId, 8 | serializeClock, 9 | deserializeClock, 10 | type Clock, 11 | Timestamp, 12 | } from './crdt'; 13 | 14 | export const SyncProtoBuf = SyncPb; 15 | -------------------------------------------------------------------------------- /packages/desktop-client/bin/watch-browser: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | 3 | ROOT=`dirname $0` 4 | cd "$ROOT/.." 5 | 6 | export IS_GENERIC_BROWSER=1 7 | export PORT=3001 8 | export REACT_APP_BACKEND_WORKER_HASH="dev" 9 | 10 | yarn start 11 | -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-4-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-4-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-5-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-5-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-6-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/accounts.test.ts-snapshots/Accounts-closes-an-account-6-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/budget.test.ts-snapshots/Budget-transfer-funds-to-another-category-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/data/actual-demo-budget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/data/actual-demo-budget.zip -------------------------------------------------------------------------------- /packages/desktop-client/e2e/data/ynab4-demo-budget.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/data/ynab4-demo-budget.zip -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-4-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-4-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-5-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-5-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-6-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/onboarding.test.ts-snapshots/Onboarding-checks-the-page-visuals-6-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-4-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-4-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-5-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-5-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-6-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/payees.test.ts-snapshots/Payees-checks-the-payees-page-visuals-6-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-cash-flow-graph-and-checks-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-and-cash-flow-reports-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-graph-and-checks-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/reports.test.ts-snapshots/Reports-loads-net-worth-graph-and-checks-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/rules.test.ts-snapshots/Rules-checks-the-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/schedules.test.ts-snapshots/Schedules-checks-the-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/settings.test.ts-snapshots/Settings-checks-the-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-checks-the-page-visuals-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-creates-a-test-transaction-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-1-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-1-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-2-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-2-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-3-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-3-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-4-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-4-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-5-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-5-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-6-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-6-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-7-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-7-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-8-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-8-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-9-chromium-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/e2e/transactions.test.ts-snapshots/Transactions-filters-transactions-by-date-9-chromium-linux.png -------------------------------------------------------------------------------- /packages/desktop-client/public/_redirects: -------------------------------------------------------------------------------- 1 | /* /index.html 200 -------------------------------------------------------------------------------- /packages/desktop-client/public/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/android-chrome-192x192.png -------------------------------------------------------------------------------- /packages/desktop-client/public/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/android-chrome-512x512.png -------------------------------------------------------------------------------- /packages/desktop-client/public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/apple-touch-icon.png -------------------------------------------------------------------------------- /packages/desktop-client/public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/favicon-16x16.png -------------------------------------------------------------------------------- /packages/desktop-client/public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/favicon-32x32.png -------------------------------------------------------------------------------- /packages/desktop-client/public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/favicon.ico -------------------------------------------------------------------------------- /packages/desktop-client/public/maskable-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/maskable-192x192.png -------------------------------------------------------------------------------- /packages/desktop-client/public/maskable-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/maskable-512x512.png -------------------------------------------------------------------------------- /packages/desktop-client/public/mstile-150x150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/mstile-150x150.png -------------------------------------------------------------------------------- /packages/desktop-client/public/screenshot_narrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/screenshot_narrow.png -------------------------------------------------------------------------------- /packages/desktop-client/public/screenshot_wide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/public/screenshot_wide.png -------------------------------------------------------------------------------- /packages/desktop-client/public/shortcut-reports.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /packages/desktop-client/public/shortcut-transaction.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /packages/desktop-client/src/auth/types.ts: -------------------------------------------------------------------------------- 1 | export enum Permissions { 2 | ADMINISTRATOR = 'ADMIN', 3 | } 4 | -------------------------------------------------------------------------------- /packages/desktop-client/src/browser-preload.js: -------------------------------------------------------------------------------- 1 | // Intentionally left blank to make electron app work 2 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/budget/tracking/budgetsummary/fraction.ts: -------------------------------------------------------------------------------- 1 | // @ts-strict-ignore 2 | export function fraction(num, denom) { 3 | if (denom === 0) { 4 | if (num > 0) { 5 | return 1; 6 | } 7 | return 0; 8 | } 9 | 10 | return num / denom; 11 | } 12 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/modals/ImportTransactionsModal/index.ts: -------------------------------------------------------------------------------- 1 | export { ImportTransactionsModal } from './ImportTransactionsModal'; 2 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/reports/constants.ts: -------------------------------------------------------------------------------- 1 | export const NON_DRAGGABLE_AREA_CLASS_NAME = 'non-draggable-area'; 2 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/reports/getCustomTick.ts: -------------------------------------------------------------------------------- 1 | export const getCustomTick = (value: string, isPrivacyModeEnabled: boolean) => { 2 | if (isPrivacyModeEnabled) { 3 | return '...'; 4 | } else { 5 | return value; 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/reports/overview.scss: -------------------------------------------------------------------------------- 1 | @use 'react-grid-layout/css/styles.css'; 2 | 3 | .react-grid-item { 4 | transition: none; 5 | } 6 | 7 | .react-grid-item.react-grid-placeholder { 8 | background-color: #8719e0; 9 | } 10 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/responsive/narrow.ts: -------------------------------------------------------------------------------- 1 | export { Budget } from '../mobile/budget'; 2 | 3 | export { Accounts } from '../mobile/accounts/Accounts'; 4 | export { Account } from '../mobile/accounts/Account'; 5 | -------------------------------------------------------------------------------- /packages/desktop-client/src/components/select/DateSelect.left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/src/components/select/DateSelect.left.png -------------------------------------------------------------------------------- /packages/desktop-client/src/components/select/DateSelect.right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-client/src/components/select/DateSelect.right.png -------------------------------------------------------------------------------- /packages/desktop-client/src/components/spreadsheet/NamespaceContext.ts: -------------------------------------------------------------------------------- 1 | import { createContext } from 'react'; 2 | 3 | export const NamespaceContext = createContext(undefined); 4 | -------------------------------------------------------------------------------- /packages/desktop-client/src/fonts.scss: -------------------------------------------------------------------------------- 1 | @use '@fontsource/redacted-script'; 2 | @use 'inter-ui/variable' with ( 3 | $inter-font-path: '../../../node_modules/inter-ui/Inter (web)' 4 | ); 5 | @include variable.default; 6 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/useAccount.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react'; 2 | 3 | import { useAccounts } from './useAccounts'; 4 | 5 | export function useAccount(id: string) { 6 | const accounts = useAccounts(); 7 | return useMemo(() => accounts.find(a => a.id === id), [id, accounts]); 8 | } 9 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/useCategory.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react'; 2 | 3 | import { useCategories } from './useCategories'; 4 | 5 | export function useCategory(id: string) { 6 | const { list: categories } = useCategories(); 7 | return useMemo(() => categories.find(c => c.id === id), [id, categories]); 8 | } 9 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/useDateFormat.ts: -------------------------------------------------------------------------------- 1 | import { useSyncedPref } from './useSyncedPref'; 2 | 3 | export function useDateFormat() { 4 | const [dateFormat] = useSyncedPref('dateFormat'); 5 | return dateFormat; 6 | } 7 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/useInitialMount.ts: -------------------------------------------------------------------------------- 1 | import { useRef } from 'react'; 2 | 3 | export function useInitialMount(): boolean { 4 | const initial = useRef(true); 5 | 6 | if (initial.current) { 7 | initial.current = false; 8 | return true; 9 | } 10 | 11 | return false; 12 | } 13 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/usePayee.ts: -------------------------------------------------------------------------------- 1 | import { useMemo } from 'react'; 2 | 3 | import { usePayees } from './usePayees'; 4 | 5 | export function usePayee(id: string) { 6 | const payees = usePayees(); 7 | return useMemo(() => payees.find(p => p.id === id), [id, payees]); 8 | } 9 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/usePrivacyMode.ts: -------------------------------------------------------------------------------- 1 | import { useSyncedPref } from './useSyncedPref'; 2 | 3 | export function usePrivacyMode() { 4 | const [isPrivacyEnabled] = useSyncedPref('isPrivacyEnabled'); 5 | return String(isPrivacyEnabled) === 'true'; 6 | } 7 | -------------------------------------------------------------------------------- /packages/desktop-client/src/hooks/useUpdatedAccounts.ts: -------------------------------------------------------------------------------- 1 | import { useSelector } from '@desktop-client/redux'; 2 | 3 | export function useUpdatedAccounts() { 4 | return useSelector(state => state.queries.updatedAccounts); 5 | } 6 | -------------------------------------------------------------------------------- /packages/desktop-client/src/queries/aqlQuery.ts: -------------------------------------------------------------------------------- 1 | import { send } from 'loot-core/platform/client/fetch'; 2 | import { type Query } from 'loot-core/shared/query'; 3 | 4 | export async function aqlQuery(query: Query) { 5 | return send('query', query.serialize()); 6 | } 7 | -------------------------------------------------------------------------------- /packages/desktop-client/src/style/index.ts: -------------------------------------------------------------------------------- 1 | export * as colors from './colors'; 2 | export * from './styles'; 3 | export * from './theme'; 4 | -------------------------------------------------------------------------------- /packages/desktop-electron/.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "plugins": ["babel-plugin-transform-es2015-modules-commonjs"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/desktop-electron/.gitignore: -------------------------------------------------------------------------------- 1 | # testing 2 | test-results 3 | playwright-report 4 | data/ 5 | !data/.gitkeep 6 | -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/LargeTile.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SmallTile.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-16.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-20.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-24.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-256.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-30.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-32.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-36.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-40.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-44.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-48.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-60.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-64.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-72.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-80.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-lightunplated_targetsize-96.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-20.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-24.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-30.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-36.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-40.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-44.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-60.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-64.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-72.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-80.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.altform-unplated_targetsize-96.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-20.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-30.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-30.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-36.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-36.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-40.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-44.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-60.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-60.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-64.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-72.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-80.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-80.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Square44x44Logo.targetsize-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Square44x44Logo.targetsize-96.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /packages/desktop-electron/appx/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/appx/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /packages/desktop-electron/e2e/__screenshots__/onboarding.test.ts/Onboarding-checks-the-page-visuals-1-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/e2e/__screenshots__/onboarding.test.ts/Onboarding-checks-the-page-visuals-1-linux.png -------------------------------------------------------------------------------- /packages/desktop-electron/e2e/__screenshots__/onboarding.test.ts/Onboarding-checks-the-page-visuals-2-linux.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/e2e/__screenshots__/onboarding.test.ts/Onboarding-checks-the-page-visuals-2-linux.png -------------------------------------------------------------------------------- /packages/desktop-electron/e2e/data/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/e2e/data/.gitkeep -------------------------------------------------------------------------------- /packages/desktop-electron/icons/icon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/icons/icon.icns -------------------------------------------------------------------------------- /packages/desktop-electron/icons/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/icons/icon.ico -------------------------------------------------------------------------------- /packages/desktop-electron/icons/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/desktop-electron/icons/icon.png -------------------------------------------------------------------------------- /packages/desktop-electron/modules.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'module' { 2 | const globalPaths: string[]; 3 | } 4 | -------------------------------------------------------------------------------- /packages/loot-core/.gitignore: -------------------------------------------------------------------------------- 1 | lib-node 2 | lib-dist -------------------------------------------------------------------------------- /packages/loot-core/.swcrc: -------------------------------------------------------------------------------- 1 | { 2 | "jsc": { 3 | "target": "es2022", 4 | "externalHelpers": true, 5 | "parser": { 6 | "syntax": "typescript", 7 | "tsx": true 8 | } 9 | }, 10 | "sourceMaps": true 11 | } 12 | -------------------------------------------------------------------------------- /packages/loot-core/bin/copy-migrations: -------------------------------------------------------------------------------- 1 | #!/bin/bash -e 2 | 3 | ROOT=`dirname $(dirname "$0")` 4 | DEST="$1" 5 | 6 | rm -rf "$DEST"/migrations 7 | mkdir -p "$DEST"/migrations 8 | cp "$ROOT"/migrations/* "$DEST"/migrations/ 9 | cp "$ROOT"/default-db.sqlite "$DEST" 10 | -------------------------------------------------------------------------------- /packages/loot-core/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/loot-core/db.sqlite -------------------------------------------------------------------------------- /packages/loot-core/default-db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/loot-core/default-db.sqlite -------------------------------------------------------------------------------- /packages/loot-core/migrations/.force-copy-windows: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/loot-core/migrations/.force-copy-windows -------------------------------------------------------------------------------- /packages/loot-core/migrations/1548957970627_remove-db-version.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | DROP TABLE db_version; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1561751833510_indexes.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | CREATE INDEX trans_category_date ON transactions(category, date); 4 | CREATE INDEX trans_category ON transactions(category); 5 | CREATE INDEX trans_date ON transactions(date); 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1582384163573_cleared.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE transactions ADD COLUMN cleared INTEGER DEFAULT 1; 4 | ALTER TABLE transactions ADD COLUMN pending INTEGER DEFAULT 0; 5 | 6 | COMMIT; 7 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1597756566448_rules.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | CREATE TABLE rules 4 | (id TEXT PRIMARY KEY, 5 | stage TEXT, 6 | conditions TEXT, 7 | actions TEXT, 8 | tombstone INTEGER DEFAULT 0); 9 | 10 | COMMIT; 11 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1612625548236_optimize.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | CREATE INDEX messages_crdt_search ON messages_crdt(dataset, row, column, timestamp); 4 | 5 | ANALYZE; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1616167010796_accounts_order.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts ADD COLUMN sort_order REAL; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1679728867040_rules_conditions.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE rules ADD COLUMN conditions_op TEXT DEFAULT 'and'; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1681115033845_add_schedule_name.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE schedules ADD COLUMN name TEXT DEFAULT NULL; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1682974838138_remove_payee_rules.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | DROP TABLE payee_rules; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1685007876842_add_category_hidden.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE categories ADD COLUMN hidden BOOLEAN NOT NULL DEFAULT 0; 4 | ALTER TABLE category_groups ADD COLUMN hidden BOOLEAN NOT NULL DEFAULT 0; 5 | 6 | COMMIT; 7 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1686139660866_remove_account_type.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts DROP COLUMN type; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1688749527273_transaction_filters.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | CREATE TABLE transaction_filters 4 | (id TEXT PRIMARY KEY, 5 | name TEXT, 6 | conditions TEXT, 7 | conditions_op TEXT DEFAULT 'and', 8 | tombstone INTEGER DEFAULT 0); 9 | 10 | COMMIT; 11 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1688841238000_add_account_type.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts ADD COLUMN type TEXT; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1691233396000_add_schedule_next_date_tombstone.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE schedules_next_date ADD COLUMN tombstone INTEGER DEFAULT 0; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1694438752000_add_goal_targets.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE zero_budgets ADD column goal INTEGER DEFAULT null; 4 | ALTER TABLE reflect_budgets ADD column goal INTEGER DEFAULT null; 5 | ALTER TABLE categories ADD column goal_def TEXT DEFAULT null; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1697046240000_add_reconciled.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE transactions ADD COLUMN reconciled INTEGER DEFAULT 0; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1704572023730_add_account_sync_source.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts ADD COLUMN account_sync_source TEXT; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1704572023731_add_missing_goCardless_sync_source.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | UPDATE accounts 4 | SET 5 | account_sync_source = 'goCardless' 6 | WHERE account_id IS NOT NULL 7 | AND account_sync_source IS NULL; 8 | 9 | COMMIT; 10 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1712784523000_unhide_input_group.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | UPDATE category_groups 4 | SET 5 | hidden = 0 6 | WHERE is_income = 1; 7 | 8 | COMMIT; -------------------------------------------------------------------------------- /packages/loot-core/migrations/1716359441000_include_current.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE custom_reports ADD COLUMN include_current INTEGER DEFAULT 0; 4 | 5 | COMMIT; -------------------------------------------------------------------------------- /packages/loot-core/migrations/1720664867241_add_payee_favorite.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE payees ADD COLUMN favorite INTEGER DEFAULT 0 DEFAULT FALSE; 4 | 5 | COMMIT; -------------------------------------------------------------------------------- /packages/loot-core/migrations/1720665000000_goal_context.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE zero_budgets ADD COLUMN long_goal INTEGER DEFAULT null; 4 | ALTER TABLE reflect_budgets ADD COLUMN long_goal INTEGER DEFAULT null; 5 | 6 | COMMIT; -------------------------------------------------------------------------------- /packages/loot-core/migrations/1730744182000_fix_dashboard_table.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | UPDATE dashboard 4 | SET tombstone = 1 5 | WHERE type is NULL; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1736640000000_custom_report_sorting.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE custom_reports ADD COLUMN sort_by TEXT DEFAULT 'Descending'; 4 | UPDATE custom_reports SET sort_by = 'Descending'; 5 | UPDATE custom_reports SET sort_by = 'Budget' where graph_type = 'TableGraph'; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1737158400000_add_learn_categories_to_payees.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE payees ADD COLUMN learn_categories BOOLEAN DEFAULT 1; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1739139550000_bank_sync_page.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts ADD COLUMN last_sync text; 4 | 5 | ALTER TABLE transactions ADD COLUMN raw_synced_data text; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1740506588539_add_last_reconciled_at.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | ALTER TABLE accounts ADD COLUMN last_reconciled text; 4 | 5 | COMMIT; 6 | -------------------------------------------------------------------------------- /packages/loot-core/migrations/1745425408000_update_budgetType_pref.sql: -------------------------------------------------------------------------------- 1 | BEGIN TRANSACTION; 2 | 3 | UPDATE preferences 4 | SET value = CASE WHEN id = 'budgetType' AND value = 'report' THEN 'tracking' ELSE 'envelope' END 5 | WHERE id = 'budgetType'; 6 | 7 | COMMIT; 8 | -------------------------------------------------------------------------------- /packages/loot-core/src/mocks/files/budgets/.commit-to-git: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/loot-core/src/mocks/files/budgets/.commit-to-git -------------------------------------------------------------------------------- /packages/loot-core/src/mocks/files/default-budget-template/db.sqlite: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/actualbudget/actual/82329b7de2e2017cc68c140e76726f30e4a0bdb2/packages/loot-core/src/mocks/files/default-budget-template/db.sqlite -------------------------------------------------------------------------------- /packages/loot-core/src/mocks/files/default-budget-template/metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "Default-Test-Db", 3 | "budgetName": "Default Test Db", 4 | "budgetVersion": "0.0.1", 5 | "isCached": true 6 | } 7 | -------------------------------------------------------------------------------- /packages/loot-core/src/mocks/migrations/1508718036311_up_modify-poop.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE poop ADD COLUMN is_income INTEGER DEFAULT 0; 2 | ALTER TABLE poop ADD COLUMN is_expense INTEGER DEFAULT 0; 3 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/exceptions/__mocks__/index.ts: -------------------------------------------------------------------------------- 1 | export const captureException = function () {}; 2 | 3 | export const captureBreadcrumb = function () {}; 4 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/exceptions/index.ts: -------------------------------------------------------------------------------- 1 | export const captureException = function (exc: Error) { 2 | console.error('[Exception]', exc); 3 | }; 4 | 5 | // eslint-disable-next-line 6 | export const captureBreadcrumb = function (crumb: unknown) {}; 7 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/fetch/__mocks__/index.ts: -------------------------------------------------------------------------------- 1 | export const fetch = function () { 2 | throw new Error('fetch not implemented'); 3 | }; 4 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/fetch/index.api.ts: -------------------------------------------------------------------------------- 1 | export const fetch = globalThis.fetch; 2 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/fs/path-join.d.ts: -------------------------------------------------------------------------------- 1 | export function join(...args: string[]): string; 2 | export type Join = typeof join; 3 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/fs/path-join.electron.ts: -------------------------------------------------------------------------------- 1 | export { join } from 'path'; 2 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/log/index.ts: -------------------------------------------------------------------------------- 1 | export const logger = { 2 | info: (...args: unknown[]) => { 3 | console.log(...args); 4 | }, 5 | warn: (...args: unknown[]) => { 6 | console.warn(...args); 7 | }, 8 | }; 9 | -------------------------------------------------------------------------------- /packages/loot-core/src/platform/server/sqlite/normalise.ts: -------------------------------------------------------------------------------- 1 | import { getNormalisedString } from '../../../shared/normalisation'; 2 | 3 | export function normalise(value: string | null): string | null { 4 | if (!value) { 5 | return null; 6 | } 7 | 8 | return getNormalisedString(value); 9 | } 10 | -------------------------------------------------------------------------------- /packages/loot-core/src/server/__mocks__/post.ts: -------------------------------------------------------------------------------- 1 | // @ts-strict-ignore 2 | export { 3 | handleRequest as post, 4 | handleRequestBinary as postBinary, 5 | } from '../tests/mockSyncServer'; 6 | 7 | export const get = function () { 8 | throw new Error('get unimplemented'); 9 | }; 10 | -------------------------------------------------------------------------------- /packages/loot-core/src/server/polyfills.ts: -------------------------------------------------------------------------------- 1 | // By default, no polyfills are installed 2 | -------------------------------------------------------------------------------- /packages/loot-core/src/server/sync/utils.ts: -------------------------------------------------------------------------------- 1 | export function isError(value: unknown): value is { error: unknown } { 2 | return (value as { error: unknown }).error !== undefined; 3 | } 4 | -------------------------------------------------------------------------------- /packages/loot-core/src/server/util/rschedule.ts: -------------------------------------------------------------------------------- 1 | import '@rschedule/standard-date-adapter/setup'; 2 | 3 | export * from '@rschedule/standard-date-adapter'; 4 | export * from '@rschedule/core'; 5 | export * from '@rschedule/core/generators'; 6 | -------------------------------------------------------------------------------- /packages/loot-core/src/shared/__mocks__/platform.web.ts: -------------------------------------------------------------------------------- 1 | export const isPlaywright = false; 2 | 3 | export const OS: 'windows' | 'mac' | 'linux' | 'unknown' = 'unknown'; 4 | export const env: 'web' | 'mobile' | 'unknown' = 'unknown'; 5 | export const isBrowser = false; 6 | 7 | export const isIOSAgent = false; 8 | -------------------------------------------------------------------------------- /packages/loot-core/src/shared/months.test.ts: -------------------------------------------------------------------------------- 1 | import * as monthUtils from './months'; 2 | 3 | test('range returns a full range', () => { 4 | expect(monthUtils.range('2016-10', '2018-01')).toMatchSnapshot(); 5 | }); 6 | -------------------------------------------------------------------------------- /packages/loot-core/src/shared/normalisation.ts: -------------------------------------------------------------------------------- 1 | export function getNormalisedString(value: string) { 2 | return value 3 | .toLowerCase() 4 | .normalize('NFD') 5 | .replace(/\p{Diacritic}/gu, ''); 6 | } 7 | -------------------------------------------------------------------------------- /packages/loot-core/src/shared/platform.ts: -------------------------------------------------------------------------------- 1 | export const isPlaywright = false; 2 | 3 | export const OS: 'windows' | 'mac' | 'linux' | 'unknown' = 'unknown'; 4 | export const env: 'web' | 'mobile' | 'unknown' = 'unknown'; 5 | export const isBrowser = false; 6 | 7 | export const isIOSAgent = false; 8 | -------------------------------------------------------------------------------- /packages/loot-core/src/shared/user.ts: -------------------------------------------------------------------------------- 1 | export const PossibleRoles = { 2 | ADMIN: 'Admin', 3 | BASIC: 'Basic', 4 | }; 5 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/budget.ts: -------------------------------------------------------------------------------- 1 | export type Budget = { 2 | id: string; 3 | cloudFileId?: string; 4 | encryptKeyId?: string; 5 | groupId?: string; 6 | name: string; 7 | owner?: string; 8 | }; 9 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/bank.d.ts: -------------------------------------------------------------------------------- 1 | export type BankEntity = { 2 | id: string; 3 | name: string; 4 | bank_id: string; 5 | tombstone: 0 | 1; 6 | }; 7 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/note.ts: -------------------------------------------------------------------------------- 1 | export type NoteEntity = { 2 | id: string; 3 | note: string; 4 | }; 5 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/openid.ts: -------------------------------------------------------------------------------- 1 | export type OpenIdConfig = { 2 | selectedProvider: string; 3 | issuer?: string; 4 | client_id: string; 5 | client_secret: string; 6 | server_hostname: string; 7 | discoveryURL: string; 8 | }; 9 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/payee.ts: -------------------------------------------------------------------------------- 1 | import { AccountEntity } from './account'; 2 | 3 | export interface PayeeEntity { 4 | id: string; 5 | name: string; 6 | transfer_acct?: AccountEntity['id']; 7 | favorite?: boolean; 8 | learn_categories?: boolean; 9 | tombstone?: boolean; 10 | } 11 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/transaction-filter.ts: -------------------------------------------------------------------------------- 1 | import { type RuleConditionEntity } from './rule'; 2 | 3 | export interface TransactionFilterEntity { 4 | id: string; 5 | name: string; 6 | conditionsOp: 'and' | 'or'; 7 | conditions: RuleConditionEntity[]; 8 | tombstone: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /packages/loot-core/src/types/models/user-access.d.ts: -------------------------------------------------------------------------------- 1 | export interface NewUserAccessEntity { 2 | fileId: string; 3 | userId: string; 4 | } 5 | 6 | export interface UserAccessEntity extends NewUserAccessEntity { 7 | displayName: string; 8 | userName: string; 9 | fileName: string; 10 | } 11 | -------------------------------------------------------------------------------- /packages/loot-core/typings/pegjs.d.ts: -------------------------------------------------------------------------------- 1 | declare module '*.pegjs'; 2 | -------------------------------------------------------------------------------- /packages/loot-core/typings/vite-plugin-peggy-loader.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'vite-plugin-peggy-loader'; 2 | -------------------------------------------------------------------------------- /packages/sync-server/.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | user-files 3 | server-files 4 | 5 | # Yarn 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/sdks 12 | !.yarn/versions 13 | -------------------------------------------------------------------------------- /packages/sync-server/babel.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["@babel/preset-typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /packages/sync-server/src/app-gocardless/banks/util/escape-regexp.js: -------------------------------------------------------------------------------- 1 | // Escape special characters in the string to create a valid regular expression 2 | export function escapeRegExp(string) { 3 | return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); 4 | } 5 | -------------------------------------------------------------------------------- /packages/sync-server/src/scripts/run-migrations.js: -------------------------------------------------------------------------------- 1 | import { run } from '../migrations.js'; 2 | 3 | const direction = process.argv[2] || 'up'; 4 | 5 | run(direction).catch(err => { 6 | console.error('Migration failed:', err); 7 | process.exit(1); 8 | }); 9 | -------------------------------------------------------------------------------- /packages/sync-server/src/sql/messages.sql: -------------------------------------------------------------------------------- 1 | 2 | CREATE TABLE messages_binary 3 | (timestamp TEXT PRIMARY KEY, 4 | is_encrypted BOOLEAN, 5 | content bytea); 6 | 7 | CREATE TABLE messages_merkles 8 | (id INTEGER PRIMARY KEY, 9 | merkle TEXT); 10 | -------------------------------------------------------------------------------- /packages/sync-server/src/util/hash.js: -------------------------------------------------------------------------------- 1 | import crypto from 'crypto'; 2 | 3 | export async function sha256String(str) { 4 | return crypto.createHash('sha256').update(str).digest('base64'); 5 | } 6 | -------------------------------------------------------------------------------- /upcoming-release-notes/4766.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alvaro-crespo] 4 | --- 5 | 6 | Add functional tests for the payee page 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4787.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Rename AQL module's runQuery function to aqlQuery to disambiguate with DB module runQuery function 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4789.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Use @hooks path alias for cleaner imports 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4810.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Features 3 | authors: [jfdoming] 4 | --- 5 | 6 | Add modal for creating budget automations 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4815.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Add upcoming/missed/due schedules indicator on budget table (based on category schedule templates) 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4817.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/app code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4818.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/budgets code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4819.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/modals code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4820.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/notifications code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4821.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/prefs code over to desktop-client package. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4822.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/queries code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4823.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/users code over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4827.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/store and loot-core/client/redux to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4828.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Move loot-core/client/data-hooks over to desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4830.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | [Final PR] Move remaining loot-core/client files to desktop-client feature folders 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4864.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [jfdoming] 4 | --- 5 | 6 | Stabilize electron build directory paths 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4869.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [vincegio] 4 | --- 5 | 6 | Flip transaction amounts for most of SEB Kort AB affiliated cards (Strawberry/Nordic choice, Eurocard, Globecard, Opel, SAAB, SAS, SJ Prio, Circle K, Wallet, Ingo and Scandic) 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4870.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Features 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Desktop app Sync Server server configuration screen 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4872.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [JaredTweed] 4 | --- 5 | 6 | Changed 'Close file' wording to 'Switch file' to prevent confusion about possibly it shutting down the account 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4879.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Update budgetType preference from rollover/report to be envelope/tracking 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4882.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [youngcw] 4 | --- 5 | 6 | Add tests to goal template processor functions 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4887.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [rgoldfinger] 4 | --- 5 | 6 | Converted sync-server to run with typescript 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4889.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Add a functionality to split transactions repair tool to remove categories from parent transactions and prevent adding/update parent transactions with categories 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4897.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Replace Actuator dependency with our own implementation to ensure the Server version displays properly in all scenarios 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4903.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [lelemm] 4 | --- 5 | 6 | Promoting OpenId as default feature 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4908.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Fixed undefined reference in utils titleFirst function 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4910.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Fixed issue with setting date and notes while creating transaction on mobile 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4911.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Fixed bug with OFX with leading/trailing whitespace 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4912.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [ sambobbarnes ] 4 | --- 5 | 6 | Fix autofocus of `Button` elements when enclosed in the `InitialFocus` component 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4914.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Fixed issue with account and notes not clearing when launching action from PWA 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4917.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Fixed graphical error in display on month in top right corner of monthly spending 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4921.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Made default string for transaction editing respect localization of commas and periods 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4922.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Improved visibility for reconciliation popover 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4923.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Made dark scrollbar wider for the account sidebar. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4930.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | Beginning of transition of Transactions table to TS 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4932.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [jfdoming] 4 | --- 5 | 6 | Automatically generate GitHub release text 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4933.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [jfdoming] 4 | --- 5 | 6 | Use the latest release tag instead of the latest tag for version checks 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4935.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [ohNoBigO] 4 | --- 5 | 6 | Fix viewing pie/donut charts on mobile 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4940.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | [Mobile] Show transactions upon clicking income categories 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4942.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Fix lint error accidentally pushed to master 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4943.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [jfdoming] 4 | --- 5 | 6 | Deduplicate vite versions 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4949.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [Johnn27] 4 | --- 5 | 6 | Fix Dashboard Widgets Not Ordered on Mobile 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4953.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Fix server migrations directory reference 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4954.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Ensure sync server uses absolute directories so users can configure relative paths for user-files 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4955.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Update @actual-app/components/input to be based on react-aria-components Input component. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4956.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Use cx in Button className merging 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4957.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Fix cli tool version after server typescript update 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4958.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [Aerion] 4 | --- 5 | 6 | Add BoursoBank GoCardless Integration 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4960.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Use @desktop-client alias in all of desktop-client package 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4968.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [MikesGlitch] 4 | --- 5 | 6 | Ensuring new sync-server build process copies over sql files 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4970.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [sergiomola] 4 | --- 5 | 6 | Add Abanca to banks with limited history 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4978.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Change minimum version of Node.js to version 20 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4980.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Increase OpenID request timeout 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4986.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Add types to budget template files and some cleanup 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4987.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Add option to calculate running balances in useTransactions hook 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4992.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [eldemarkki] 4 | --- 5 | 6 | Update react-spring to version 10.0.0 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4994.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Add runningBalances to usePreviewTransactions and an option to set the starting balance to start running balance calculation from 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/4995.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Fix prefsSlice import 7 | 8 | -------------------------------------------------------------------------------- /upcoming-release-notes/4998.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | [Mobile] Fix category transactions screen not showing child transactions 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5002.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [alecbakholdin] 4 | --- 5 | 6 | fixed qif import skipping transactions when empty lines present 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5008.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Make InitialFocus component generic 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5011.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [rgoldfinger] 4 | --- 5 | 6 | Add a package.json engine version for Yarn 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5014.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Bump `yarn` version from `v4.7.0` to `v4.9.1`. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5015.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Bump dependency patch versions 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5017.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Remove ip dependency 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5018.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | bump jq dependency 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5019.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Bump adm-zip to 0.5.16 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5024.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Fix loot-core peer dependency warnings 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5025.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade low risk dependencies to their newest minor version 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5027.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade react dependencies to their newest minor version 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5028.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade babel/webpack dependencies to their newest minor version 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5029.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade electron dependencies to their newest minor version 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5031.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [lorenzenv] 4 | --- 5 | 6 | Enable GoCardless account selection if supported by the target institution 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5034.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [jfdoming] 4 | --- 5 | 6 | Automatically upload to MS store on release 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5036.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [joel-jeremy] 4 | --- 5 | 6 | Fix category schedule indicators not showing up in budget page 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5038.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [SteinTokvam] 4 | --- 5 | 6 | Added information that sync error are caued by a rate limit if that's the case. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5041.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade date-fns from v2.30.0 -> v4.1.0 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5042.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Upgrade express from 4.21.2 -> 5.1.0 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5045.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Fix "delete x users" translation string 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5050.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [ShreyasKallingal] 4 | --- 5 | 6 | Restrict Electron-embedded sync server to bind only to configured hostname. 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5051.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [johnn27] 4 | --- 5 | 6 | 🐛 Fix goals tooltip obstructing cover spending context menu 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5052.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Enhancements 3 | authors: [NormenKD] 4 | --- 5 | 6 | Add 'GLS Gemeinschaftsbank' to banks with limited history 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5069.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [misu-dev] 4 | --- 5 | 6 | Fixes a bug where the category expansion state was not saved when its value was 0 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5070.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [MatissJanis] 4 | --- 5 | 6 | Added 'needs triage' label to all new bug issues 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5073.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Bugfix 3 | authors: [marcin-honang] 4 | --- 5 | 6 | Add `ING_PL_INGBPLPW` to banks with limited history 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/5075.md: -------------------------------------------------------------------------------- 1 | --- 2 | category: Maintenance 3 | authors: [matt-fidd] 4 | --- 5 | 6 | Bump formidable from 2.1.2 to 2.1.5 7 | -------------------------------------------------------------------------------- /upcoming-release-notes/README.md: -------------------------------------------------------------------------------- 1 | See the [Writing Good Release Notes](https://actualbudget.org/docs/contributing/#writing-good-release-notes) section of the README for the documentation repo for more information on how to create a release notes file here. 2 | --------------------------------------------------------------------------------