Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
46e72e0
Linux configuration
aoor9 Feb 11, 2025
9c93438
First dev for Linux
aoor9 Feb 11, 2025
9ba5601
Merge branch 'emavgl:master' into master
aoor9 Feb 13, 2025
cfacb6f
Merge branch 'emavgl:master' into master
aoor9 Feb 20, 2025
5dc5cde
Merge branch 'emavgl:master' into master
aoor9 Mar 4, 2025
6f26b1d
Merge branch 'emavgl:master' into master
aoor9 Apr 2, 2025
1e57799
Merge branch 'emavgl:master' into master
aoor9 Apr 16, 2025
38e9a20
Merge branch 'master' into master
aoor9 Nov 27, 2025
d704897
Merge branch 'master' into master
aoor9 Dec 20, 2025
2fc05e8
Merge branch 'master' into master
aoor9 Dec 28, 2025
aa1c02b
Merge branch 'master' into master
aoor9 Jan 4, 2026
b03887e
Merge branch 'emavgl:master' into master
aoor9 Jan 5, 2026
6277f27
Ignore flutter_export_environment file
aoor9 Jan 5, 2026
2062784
Merge branch 'emavgl:master' into master
aoor9 Jan 5, 2026
feac095
Merge branch 'master' of https://github.com/aoor9/oinkoin
aoor9 Jan 5, 2026
ad61891
Merge branch 'emavgl:master' into master
aoor9 Jan 7, 2026
e13bd0a
Merge branch 'master' of https://github.com/aoor9/oinkoin
aoor9 Jan 7, 2026
0341e8d
Replace flutter_distributor with fastforge
aoor9 Jan 7, 2026
5ea5e80
vscode more settings
aoor9 Jan 8, 2026
8a63435
prettify code
aoor9 Jan 8, 2026
a7c8ada
alertDialog show/hide buttons
aoor9 Jan 8, 2026
a94e42c
Hide export options for Linux
aoor9 Jan 8, 2026
c53a0b8
Change application folder for desktop
aoor9 Jan 8, 2026
7d81f3b
File save dialog for desktop platforms
aoor9 Jan 8, 2026
febea0e
fix pubspec
aoor9 Jan 8, 2026
f5bb9da
macOS support
aoor9 Jan 11, 2026
8f317df
Merge branch 'emavgl:master' into master
aoor9 Jan 11, 2026
838dea1
Merge branch 'emavgl:master' into master
aoor9 Jan 11, 2026
b336e01
Merge branch 'master' into master
aoor9 Jan 17, 2026
f8dbf40
Merge remote-tracking branch 'upstream/master'
aoor9 Mar 4, 2026
d0e0061
Update flutter
aoor9 Mar 4, 2026
a5456ba
Merge branch 'master' into master
aoor9 Mar 5, 2026
947e074
Merge branch 'emavgl:master' into master
aoor9 Mar 11, 2026
9162b91
Merge branch 'emavgl:master' into master
aoor9 Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/manual-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,11 +111,11 @@ jobs:

- name: Build Linux packages (.deb, .rpm, and AppImage)
run: |
# Add submodule Flutter to PATH first (so flutter_distributor uses it)
# Add submodule Flutter to PATH first (so fastforge uses it)
export PATH="$(pwd)/submodules/flutter/bin:$PATH"

# Install flutter_distributor
dart pub global activate flutter_distributor
# Install fastforge
dart pub global activate fastforge
export PATH="$HOME/.pub-cache/bin:$PATH"

# Install tools for building .rpm and AppImage packages
Expand All @@ -131,7 +131,7 @@ jobs:
flutter --version

# Build .deb, .rpm, and AppImage packages
flutter_distributor release --name=linux-release --jobs=release-linux-deb,release-linux-rpm,release-linux-appimage
fastforge release --name=linux-release --jobs=release-linux-deb,release-linux-rpm,release-linux-appimage

- name: Upload .deb as artifact
uses: actions/upload-artifact@v4
Expand Down
8 changes: 4 additions & 4 deletions .github/workflows/on-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -227,11 +227,11 @@ jobs:

- name: Build Linux packages (.deb, .rpm, and AppImage)
run: |
# Add submodule Flutter to PATH first (so flutter_distributor uses it)
# Add submodule Flutter to PATH first (so fastforge uses it)
export PATH="$(pwd)/submodules/flutter/bin:$PATH"

# Install flutter_distributor
dart pub global activate flutter_distributor
# Install fastforge
dart pub global activate fastforge
export PATH="$HOME/.pub-cache/bin:$PATH"

# Install tools for building .rpm and AppImage packages
Expand All @@ -247,7 +247,7 @@ jobs:
flutter --version

# Build .deb, .rpm, and AppImage packages
flutter_distributor release --name=linux-release --jobs=release-linux-deb,release-linux-rpm,release-linux-appimage
fastforge release --name=linux-release --jobs=release-linux-deb,release-linux-rpm,release-linux-appimage

- name: Upload Linux packages as Release asset
uses: softprops/action-gh-release@v1
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
/build-debug-file/
/tmp_build
.flutter-plugins-dependencies
ios/Flutter/flutter_export_environment.sh
**/ios/Flutter/flutter_export_environment.sh
macos/Flutter/ephemeral/flutter_export_environment.sh
macos/Flutter/ephemeral/Flutter-Generated.xcconfig

Expand Down
12 changes: 6 additions & 6 deletions .metadata
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# This file should be version controlled and should not be manually edited.

version:
revision: "b45fa18946ecc2d9b4009952c636ba7e2ffbb787"
revision: "8b872868494e429d94fa06dca855c306438b22c0"
channel: "stable"

project_type: app
Expand All @@ -13,11 +13,11 @@ project_type: app
migration:
platforms:
- platform: root
create_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
base_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
- platform: linux
create_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
base_revision: b45fa18946ecc2d9b4009952c636ba7e2ffbb787
create_revision: 8b872868494e429d94fa06dca855c306438b22c0
base_revision: 8b872868494e429d94fa06dca855c306438b22c0
- platform: macos
create_revision: 8b872868494e429d94fa06dca855c306438b22c0
base_revision: 8b872868494e429d94fa06dca855c306438b22c0

# User provided section

Expand Down
6 changes: 6 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"recommendations": [
"dart-code.dart-code",
"dart-code.flutter"
]
}
3 changes: 2 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
{
"name": "Flutter",
"request": "launch",
"type": "dart"
"type": "dart",
"flutterMode": "debug"
}
]
}
20 changes: 20 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"search.exclude": {
"**/submodules": true,
},
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.profiles.linux": {
"bash": {
"path": "/usr/bin/flatpak-spawn",
"args": ["--host", "--env=TERM=xterm-256color", "bash"],
"icon": "terminal-bash",
"overrideName": true
}
},
"dart.flutterSdkPath": "~/development/flutter",
"[dart]": {
"editor.defaultFormatter": "Dart-Code.dart-code",
"editor.formatOnSave": true,
"editor.formatOnType": true,
}
}
12 changes: 6 additions & 6 deletions build_linux.sh
Original file line number Diff line number Diff line change
Expand Up @@ -93,18 +93,18 @@ if ! pkg-config --exists gtk+-3.0 2>/dev/null; then
fi
echo -e "${GREEN}✓ GTK3 development libraries found${NC}"

# Find flutter_distributor
DISTRIBUTOR_CMD="$HOME/.pub-cache/bin/flutter_distributor"
# Find fastforge
DISTRIBUTOR_CMD="$HOME/.pub-cache/bin/fastforge"
if [ ! -f "$DISTRIBUTOR_CMD" ]; then
echo -e "${YELLOW}flutter_distributor not found, installing...${NC}"
$FLUTTER_CMD pub global activate flutter_distributor
echo -e "${YELLOW}fastforge not found, installing...${NC}"
$FLUTTER_CMD pub global activate fastforge

if [ ! -f "$DISTRIBUTOR_CMD" ]; then
echo -e "${RED}Error: Failed to install flutter_distributor${NC}"
echo -e "${RED}Error: Failed to install fastforge${NC}"
exit 1
fi
fi
echo -e "${GREEN}✓ flutter_distributor ready${NC}"
echo -e "${GREEN}✓ fastforge ready${NC}"

echo ""
echo "==================================="
Expand Down
32 changes: 0 additions & 32 deletions ios/Flutter/ephemeral/flutter_lldb_helper.py

This file was deleted.

5 changes: 0 additions & 5 deletions ios/Flutter/ephemeral/flutter_lldbinit

This file was deleted.

Empty file removed ios/PLACEHOLDER
Empty file.
3 changes: 1 addition & 2 deletions lib/categories/categories-grid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class CategoriesGrid extends StatefulWidget {
}

class CategoriesGridState extends State<CategoriesGrid> {

List<Category?> orderedCategories = [];
bool enableManualSorting = false;
late ScrollController _scrollController;
Expand Down Expand Up @@ -76,7 +75,7 @@ class CategoriesGridState extends State<CategoriesGrid> {
child: Container(
child: Column(
children: [
CategoryIconCircle(
CategoryIconCircle(
iconEmoji: category.iconEmoji,
iconDataFromDefaultIconSet: category.icon,
backgroundColor: category.color,
Expand Down
3 changes: 1 addition & 2 deletions lib/categories/categories-list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,7 @@ class CategoriesListState extends State<CategoriesList> {
iconEmoji: category.iconEmoji,
iconDataFromDefaultIconSet: category.icon,
backgroundColor: category.color,
overlayIcon: category.isArchived ? Icons.archive : null
),
overlayIcon: category.isArchived ? Icons.archive : null),
title: Text(category.name!, style: _biggerFont),
),
),
Expand Down
15 changes: 6 additions & 9 deletions lib/categories/categories-tab-page-edit.dart
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,8 @@ class TabCategoriesState extends State<TabCategories>

void _handleTabChange() {
// Check if the tab index has actually changed (works for both clicks and swipes)
if (_tabController!.index != _previousTabIndex && !_tabController!.indexIsChanging) {
if (_tabController!.index != _previousTabIndex &&
!_tabController!.indexIsChanging) {
setState(() {
_fabRotation += 3.14159; // 180 degrees rotation
_previousTabIndex = _tabController!.index;
Expand Down Expand Up @@ -408,21 +409,17 @@ class TabCategoriesState extends State<TabCategories>
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EditCategoryPage(
categoryType: CategoryType.expense
)
),
builder: (context) => EditCategoryPage(
categoryType: CategoryType.expense)),
);
await refreshCategoriesAndHighlightsTab(0);
} else {
// Income tab
await Navigator.push(
context,
MaterialPageRoute(
builder: (context) => EditCategoryPage(
categoryType: CategoryType.income
)
),
builder: (context) => EditCategoryPage(
categoryType: CategoryType.income)),
);
await refreshCategoriesAndHighlightsTab(1);
}
Expand Down
9 changes: 4 additions & 5 deletions lib/categories/categories-tab-page-view.dart
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ class CategoryTabPageViewState extends State<CategoryTabPageView> {
Row(
children: [
Checkbox(
value: _isDefaultOrder || _selectedSortOption == _storedDefaultOption,
value: _isDefaultOrder ||
_selectedSortOption == _storedDefaultOption,
onChanged: (value) {
setModalState(() {
_isDefaultOrder = value ?? false;
Expand Down Expand Up @@ -161,7 +162,7 @@ class CategoryTabPageViewState extends State<CategoryTabPageView> {
),
trailing: _selectedSortOption == SortOption.alphabetical
? Icon(Icons.check,
color: Theme.of(context).colorScheme.primary)
color: Theme.of(context).colorScheme.primary)
: null,
onTap: () {
setModalState(() {
Expand Down Expand Up @@ -306,9 +307,7 @@ class CategoryTabPageViewState extends State<CategoryTabPageView> {
tabs: [
Semantics(
identifier: 'expenses-tab',
child: Tab(
text: "Expenses".i18n.toUpperCase()
),
child: Tab(text: "Expenses".i18n.toUpperCase()),
),
Semantics(
identifier: 'income-tab',
Expand Down
11 changes: 6 additions & 5 deletions lib/categories/edit-category-page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ class EditCategoryPageState extends State<EditCategoryPage> {
Widget _getIconsGrid() {
var surfaceContainer = Theme.of(context).colorScheme.surfaceContainer;
var bottonActionColor = Theme.of(context).colorScheme.surfaceContainerLow;
var buttonColors = Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.6);
var buttonColors =
Theme.of(context).colorScheme.onSurface.withValues(alpha: 0.6);
return Column(
children: [
Offstage(
Expand Down Expand Up @@ -507,8 +508,8 @@ class EditCategoryPageState extends State<EditCategoryPage> {
// Prompt confirmation
AlertDialogBuilder archiveDialog =
AlertDialogBuilder(dialogMessage)
.addTrueButtonName("Yes".i18n)
.addFalseButtonName("No".i18n);
.renameTrueButtonName("Yes".i18n)
.renameFalseButtonName("No".i18n);

if (!isCurrentlyArchived) {
archiveDialog.addSubtitle(
Expand Down Expand Up @@ -546,8 +547,8 @@ class EditCategoryPageState extends State<EditCategoryPage> {
.addSubtitle(
"Deleting the category you will remove all the associated records"
.i18n)
.addTrueButtonName("Yes".i18n)
.addFalseButtonName("No".i18n);
.renameTrueButtonName("Yes".i18n)
.renameFalseButtonName("No".i18n);

var continueDelete = await showDialog(
context: context,
Expand Down
21 changes: 11 additions & 10 deletions lib/components/category_icon_circle.dart
Original file line number Diff line number Diff line change
Expand Up @@ -32,20 +32,19 @@ class CategoryIconCircle extends StatelessWidget {
color: backgroundColor,
),
child: iconEmoji != null
?
Center(
? Center(
child: Text(
iconEmoji!, // Display the emoji
style: TextStyle(
fontSize: mainIconSize, // Adjust the emoji size
),
),
)
: Icon(
iconDataFromDefaultIconSet, // Fallback to the icon
size: mainIconSize,
color: iconColor ?? Theme.of(context).colorScheme.onSurface,
),
: Icon(
iconDataFromDefaultIconSet, // Fallback to the icon
size: mainIconSize,
color: iconColor ?? Theme.of(context).colorScheme.onSurface,
),
);
}

Expand All @@ -60,7 +59,10 @@ class CategoryIconCircle extends StatelessWidget {
shape: BoxShape.circle,
color: iconBackground
? Theme.of(context).colorScheme.surface
: Theme.of(context).colorScheme.surfaceContainer.withValues(alpha: 0.8),
: Theme.of(context)
.colorScheme
.surfaceContainer
.withValues(alpha: 0.8),
),
child: Icon(
overlayIcon,
Expand All @@ -83,8 +85,7 @@ class CategoryIconCircle extends StatelessWidget {
backgroundColor ?? Theme.of(context).colorScheme.surface,
),
if (overlayIcon != null)
_buildOverlayIcon(
context, overlayIcon, backgroundColor != null),
_buildOverlayIcon(context, overlayIcon, backgroundColor != null),
],
);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/components/year-picker.dart
Original file line number Diff line number Diff line change
Expand Up @@ -393,7 +393,7 @@ class _DatePickerDialogState extends State<_DatePickerDialog> {
// been updated to 4, so we will use that here for the Date Picker, but
// only if there isn't one provided in the theme.
shape: const RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(4.0))),
borderRadius: BorderRadius.all(Radius.circular(4.0))),
clipBehavior: Clip.antiAlias,
);
}
Expand Down
Loading