Skip to content

Releases: marcuscastelo/macroflows

v0.15.0

05 Dec 23:39
62f962d

Choose a tag to compare

What's Changed

Features

  • Unify clipboard copy/paste logic across edit views by extracting shared type guards by @Copilot in #1090
  • Remove legacy error handling components after Sentry migration by @Copilot in #1309
  • Improve MAX quantity UX: explicit macro selection, balance mode, and conflict previews by @Copilot in #1331
  • feat: Max button toggle between respecting limits and forcing dominant macro by @Copilot in #1348
  • feat: In-app clipboard store with RAM-only default and optional persistence by @Copilot in #1319
  • Allow editing the name of GroupItem and RecipeItem by @Copilot in #1352
  • refactor: remove specializedModalHelpers and adopt per-module modal components by @Copilot in #1360
  • Feature: Allow single-item recipes with conversion multiplier by @Copilot in #1350
  • feat: Import/Export JSON modal for backup & migration by @Copilot in #1369
  • feat: Guest RAM demo mode — in-memory DB with seeded data by @Copilot in #1364

Bugfixes

  • fix(clipboard): improve paste UX (use paste event + focused modal) by @marcuscastelo in #1315
  • refactor(auth): remove unnecessary comment from signIn function by @marcuscastelo in #1324
  • Update dev script and item schema type by @marcuscastelo in #1342
  • Fix TypeError when hiding 'Peso desejado' in weight chart by @Copilot in #1362
  • Move recipe loading check inside quantity update logic by @marcuscastelo in #1381
  • Clarify output format and refactor recipe synchronization logic by @marcuscastelo in #1387
  • Fix Favorites and Recents empty when search query/param is present (UI bug) by @marcuscastelo in #1394
  • Fix ad-hoc recipe item edit to preserve explicit child quantity changes by @Copilot in #1389
  • Persist template search tab preference in localStorage by @Copilot in #1400
  • fix(macro-target): suppress toast on missing weight/profile during passive reads by @Copilot in #1402
  • Fix recent food tracking for GroupItem and EAN-scanned foods by @Copilot in #1401
  • Fix multi-item recipe out-of-sync false positives by @Copilot in #1429
  • refactor(item): refactor item comparison and macro nutrient handling by @marcuscastelo in #1431

Improvements

  • Simplify modal types using Accessor for reactive values by @Copilot in #1087
  • Remove DAO terminology, standardize on DTO by @Copilot in #1314
  • refactor: replace console calls with logging utility for consistent error tracking by @Copilot in #1325
  • Fix MaxQuantityButton treating absolute macro values as per-kg targets by @Copilot in #1322
  • Phase 5: Validate and document Item/ItemGroup unification completion by @Copilot in #1326
  • Optimize effectiveAt to use sortedByDate with findLast instead of reverse by @Copilot in #1332
  • Ban inline dynamic imports via ESLint rule by @Copilot in #1343
  • Refactor database types and user mapping by @marcuscastelo in #1346
  • refactor: replace handleApiError with showError + logging in documentation by @Copilot in #1345
  • Add typedKeys utility for strongly-typed Object.keys by @Copilot in #1371
  • Refactor: Remove duplicate UnifiedRecipeEditView component by @Copilot in #1366
  • Add type guard for WeightChartType to replace type assertion by @Copilot in #1373
  • Mock logging module in tests to prevent console output pollution by @Copilot in #1377
  • feat(clipboard): improve icons with accessibility and mobile UX by @Copilot in #1370
  • auth: Encapsulate infra exports — export only factories by @marcuscastelo in #1418
  • Refactor user and guest logic with use cases by @marcuscastelo in #1421
  • Migrate critical application-layer error handling to logging + showError pattern by @Copilot in #1399
  • fix: recipe multiplier incorrectly scales macro grams and calories (should only affect mainQuantity) # by @Copilot in #1427

Other

Full Changelog: v0.14.0...v0.15.0

v0.14.0

01 Oct 12:45
61b73c3

Choose a tag to compare

What's Changed

Features

  • feat(auth): implement google oauth authentication module by @marcuscastelo in #1030
  • feat(telemetry): implement OpenTelemetry core setup and auto-instrumentation by @marcuscastelo in #1038
  • feat(sentry): complete Sentry.io foundation setup and SDK integration by @marcuscastelo in #1040
  • feat(sentry): complete error handling migration to Sentry integration by @marcuscastelo in #1043
  • feat(telemetry): complete error handling integration with OpenTelemetry trace correlation by @marcuscastelo in #1046
  • User Migration and Data Security Implementation by @marcuscastelo in #1058

Bugfixes

Improvements

  • refactor(common): use date utility in TargetDayPicker by @marcuscastelo in #1033
  • perf(day-diet): optimize day data fetching to avoid loading unused days by @marcuscastelo in #1035
  • feat(build): add ts-unused-exports to detect unused TypeScript exports by @marcuscastelo in #1032
  • refactor: major architectural overhaul implementing usecase pattern across all modules by @marcuscastelo in #1037

Other

  • refactor(architecture): move realtime subscriptions to infrastructure layer by @marcuscastelo in #1029
  • feat(performance): leverage existing Sentry Web Vitals + enhance user flow tracking by @marcuscastelo in #1047
  • Implement comprehensive authentication UI components and user experience flows by @Copilot in #1049
  • fix(auth): make redirectTo parameter mandatory by @marcuscastelo in #1051
  • refactor(day-diet): rename owner to user_id in supabase mapper and clarify PR agent prompt by @marcuscastelo in #1066
  • feat: Automatic profile creation for new OAuth users by @Copilot in #1067
  • Enhance semver.sh with Robust Error Handling and Retry Logic for GitHub API Rate Limiting by @Copilot in #1089
  • Fix: Weight UI does not update after add/remove/edit operations by @Copilot in #1094
  • Fix: Enable macro goal editing for new users without existing profiles by @Copilot in #1095

Full Changelog: v0.13.0...v0.14.0

v0.13.0

23 Jul 18:25

Choose a tag to compare

What's Changed

Features

  • Phase 1: Schema & Domain Layer for Item/ItemGroup Unification by @marcuscastelo in #901
  • feat(profile): implement tabbed chart interface for memory optimization by @marcuscastelo in #919
  • feat(recent-food): add server-side search with Portuguese diacritic support by @marcuscastelo in #937
  • Implement unified modal system architecture and core context provider by @marcuscastelo in #944
  • feat(day-diet): implement automatic day change detection with user confirmation by @marcuscastelo in #956
  • Recent Food System Refactoring and Performance Optimization by @marcuscastelo in #958
  • feat: integrate DomainError support with comprehensive error handling system by @marcuscastelo in #966
  • feat: implement enhanced food search with fuzzy matching and scoring by @marcuscastelo in #982

Bugfixes

  • Fix date normalization and remove date-fns dependency by @marcuscastelo in #907
  • Refactor immediate prompt creation into a separate script by @marcuscastelo in #916
  • perf(profile): optimize weight chart performance for mobile devices by @marcuscastelo in #923
  • fix(profile): macro calorie values now display correctly instead of showing 0 kcal by @marcuscastelo in #954
  • fix(search): implement optimized favorites search with database-direct RPC by @marcuscastelo in #993
  • fix(unified-item): resolve recipe quantity inconsistency after synchronization by @marcuscastelo in #994

Improvements

Other

Full Changelog: v0.12.0...v0.13.0

v0.12.0

18 Jun 19:08

Choose a tag to compare

What's Changed

Features

  • Refactor CopyLastDayButton: show only days with registered diet and add summary copy list by @marcuscastelo in #775
  • Refactor item group and meal components for improved modularity and context usage by @marcuscastelo in #847
  • Show user initial as fallback for profile icon by @marcuscastelo in #862

Bugfixes

  • feat(food): improve food search with diacritic-insensitive and composed multi-word matching by @marcuscastelo in #751
  • Add backend outage detection and notification banner by @marcuscastelo in #753
  • Fix single click to open ItemEditModal in ItemGroupEditModal by @marcuscastelo in #759
  • Enhance recipe search with partial and diacritic-insensitive matching by @marcuscastelo in #762
  • Improve food search, error handling, and add backend outage detection by @marcuscastelo in #763
  • Refactor weight module, improve progress calculation, and add debug utilities by @marcuscastelo in #778
  • fix(ui): show pt-BR not-found message and always show action buttons when no diet for today by @marcuscastelo in #815
  • Adjust date handling for measure and weight components by @marcuscastelo in #813
  • fix: restore and refactor macro overflow logic to prevent exceeding macro targets by @marcuscastelo in #823
  • feat: fix recipe search ignoring user-selected quantity and prepared multiplier (#743) by @marcuscastelo in #863
  • Improve ContextMenu behavior and styling by @marcuscastelo in #899

Improvements

  • feat(github-issue): introduce unified GitHub Issue Agent and documentation improvements by @marcuscastelo in #803
  • Refactor and cleanup: remove legacy macro/weight utils, update macro logic, and clarify prompts by @marcuscastelo in #805
  • Refactor search tab handling with debouncing by @marcuscastelo in #814
  • refactor: rename Measure to BodyMeasure and update all related components for clarity and consistency by @marcuscastelo in #810
  • fix(version): remove v prefix from version in package.json, update docs and release scripts by @marcuscastelo in #826
  • Refactor Progress prop naming and improve weight evolution UI by @marcuscastelo in #827
  • perf: optimize food reordering logic to reduce O(n²) to O(n) complexity by @marcuscastelo in #845
  • feat: remove BackButton from ModalHeader and standardize modal closing behavior by @marcuscastelo in #844

Other

Full Changelog: v0.11.0...v0.12.0

v0.11.0

12 Jun 18:24
0c0ba94

Choose a tag to compare

What's Changed

Features

  • Make version display less intrusive by @marcuscastelo in #632
  • Rename openToasts to visibleToasts and implement deduplication logic by @marcuscastelo in #643
  • Refactor day-diet and item-group components for improved UX by @marcuscastelo in #688
  • Add ComboBox component and enhance WeightChart functionality by @marcuscastelo in #697
  • feat(profile): use ComboBox for diet and gender fields with translations and consistent UI by @marcuscastelo in #719
  • feat: add confirmation dialogs before deleting weight and measure entries by @marcuscastelo in #721
  • feat(ui): add MaxQuantityButton and integrate in ItemEditModal for macro-based max input by @marcuscastelo in #725

Bugfixes

  • Fix ApexCharts locale configuration for pt-BR by @marcuscastelo in #633
  • Fix macro overflow calculation for item groups by @marcuscastelo in #634
  • Refactor type guards and template handling by @marcuscastelo in #636
  • Refactor and modularize item group components and utilities by @marcuscastelo in #692
  • Fix onDelete handler in ItemGroupEditModalActions by @marcuscastelo in #710
  • Refactor and enhance error handling, prompt automation, and domain logic; update documentation and templates by @marcuscastelo in #712
  • feat(search, recipe, template): enhance search UI, centralize template logic, and improve recent items handling by @marcuscastelo in #714
  • fix(recipe): allow empty arrays for items and improve PR automation (#726) by @marcuscastelo in #728
  • fix: handle Supabase duplicate EAN error in food repository and add utility with tests by @marcuscastelo in #747

Improvements

Other

Full Changelog: v0.10.0...v0.11.0

v0.10.0

02 Jun 14:05

Choose a tag to compare

Changelog - v0.10.0

🚀 Highlights

  • DAO & Domain Schema Evolution:
    Major refactor to unify, simplify, and modernize the data access layer and domain models. Introduced discriminated unions for all domain schemas and removed legacy and deprecated types.

    • All DAO schemas now utilize their own respective schemas for parsing.
    • The __type property is now used as a discriminant in schemas; nullable and optional values are supported.
    • Massive removal of deprecated code, legacy files, and duplicated logic.
  • Item/Recipe/Group Overhaul:

    • FoodItem is now consistently renamed and replaced by Item across the codebase.
    • Item group and recipe modals refactored for better structure, deduplication, and code sharing.
    • Factory functions implemented for ItemGroup, and all manual object creation replaced.
    • External modals (TemplateSearch, ItemEdit, RecipeEdit) extracted and deduplicated.
  • Improved Modal System:

    • Modal components now all use a compound component pattern.
    • Modals have improved visibility logic, structure, and reactivity.
    • Unified modal context and removed unused modal providers.
    • New "back" button on all modals to improve mobile usage.
  • Refined UX & Feedback:

    • Toast notifications for user feedback on data loading, errors, and actions.
    • Centralized and improved error handling, replacing most console.error calls.
    • Loading states and toasts improved for async actions.
    • Environment variable configuration centralized and validated via Zod.
    • Better variable naming, code comments, and clearer TODOs.
  • Performance & Correctness:

    • Real-time data refetch with Supabase.
    • Improved commit counting and versioning logic for better CI/CD reliability.
    • GitHub Actions workflow now updates VERSION file on merges to RC branches.
    • Rate limiting and try/catch guards added to API routes.
    • Various bugfixes related to duplicate foods, chart rendering, recents order, etc.

🆕 Features

  • Discriminated Unions in Domain Schemas:
    All domain schemas now support discriminated unions via __type.

  • Item Group/Recipe Enhancements:

    • Unified naming and components for food items and item groups.
    • Added "unlink recipe" button.
    • Refactored item and recipe editing for more intuitive UX.
    • Improved and deduplicated PreparedQuantity handling and typing.
  • Environment Config:
    All environment variables are now loaded, validated, and accessed in a centralized, type-safe manner.

  • Toast System:

    • Created and integrated a custom toast system for error, loading, and success feedback.
  • Recent Foods:

    • Improved logic for handling and displaying recent foods.
    • Added ability to remove items from recents.
  • Signal Refactoring:

    • Many stateful contexts and modules now use SolidJS signals for improved reactivity and performance.
    • latestWeight and other state are now managed with signals.

🛠️ Refactors & Cleanups

  • DAO & Schema Refactor:

    • Removed redundant __type properties and unused imports.
    • Deprecated types replaced with DAO pattern.
    • Simplified insert/update logic for DayDiet, ItemGroup, and Recipe.
  • Modal & Component Structure:

    • All modals now follow the compound component pattern.
    • Deduplicated modal logic across editors (item, group, recipe).
    • Code reorganization: extracted, moved, and cleaned up modal and context files.
  • CI/CD and Scripts:

    • Fixed script paths and improved version generation logic in workflows.
    • Semver script rewritten for robustness, especially for RC branches.
    • Added tests and refined commit counting to exclude main/master.
  • Project Housekeeping:

    • Old files from filter-branch and legacy code removed.
    • Comment and TODO improvements throughout.
    • README and LICENSE updated.

🐞 Bugfixes

  • Charts & Data:

    • Year now displays correctly on weight chart.
    • Chart lows/highs rendering and hiding bugs fixed.
    • Macro targets and day macros now update correctly.
  • Recents & Duplicates:

    • Recents tab respects descending order.
    • Fixed duplicate foods and improved filtering.
  • Miscellaneous:

    • Recipe modal bugs fixed (e.g., modal not opening, deletion issues).
    • TypeScript compilation and domain architecture errors resolved.
    • Toast and error handling integrated in all major flows.

🔧 CI/CD & Automation

  • GitHub Actions:
    • New workflow updates VERSION on merge to RC branches.
    • Improved semver and version bumping automation.
    • Commit count logic now excludes main and master branches.
    • Automated changelog and version handling for releases.

🗑️ Removed / Deprecated

  • Legacy & Deprecated Code:
    • All deprecated types, legacy files, duplicated modals, and unused code removed.
    • Old scripts and files kept from previous filter-branch operations deleted.

Full list of changes:
See the pull request diff and commit history for details.

v0.9.0

19 May 16:13
fffa7dc

Choose a tag to compare

What's Changed

Features

Improvements

Other

Full Changelog: v0.8.3...v0.9.0

v0.8.3

17 May 19:44
1ad4469

Choose a tag to compare

What's Changed

Features

Improvements

Full Changelog: v0.8.2...v0.8.3

v0.8.2

12 May 04:45
af4e6d4

Choose a tag to compare

What's Changed

Bugfixes

Full Changelog: v0.8.1...v0.8.2

v0.8.1

12 May 01:44
9ec0514

Choose a tag to compare

What's Changed

Bugfixes

Full Changelog: v0.8.0...v0.8.1