What’s New in v1.4.0

Highlights of this release at a glance.

New Improved

Version 1.4 Updates:

A comprehensive release bringing a frosted “glass” UI across the app, tactile haptics, Android edge‑to‑edge polish, tags and multi‑select for saved items, a rounded UI option, and a refreshed, more complete onboarding tour.

Haptics
  • Subtle impact feedback on calculate, using items, adding/saving/removing, online search actions, and selection mode changes.
  • Notification‑style haptics for success/warning/error events in key flows (e.g., validation errors, bulk remove).
  • Dev notes: Uses Capacitor Haptics with a helper `window.ccHaptic('Light'|'Medium'|'Heavy')` and `window.ccNotify('Success'|'Warning'|'Error')`. Calls are wrapped in try/catch so web runs fine without native support.
Frosted Navbar Everywhere
  • The frosted “glass” navbar now applies consistently across Settings, Updates, Import, and Export — matching the Home page. Background subtly blurs with higher saturation for depth.
  • Toggle via Settings → Visual → “Frosted UI” (on by default). Dark mode uses a translucent dark variant for readability.
  • Implementation: adds a `frosted` class to `` (synced across tabs) enabling `.frosted .navbar { backdrop-filter: blur(12px) saturate(160%) }` with matching dark‑mode colors.
Android Edge‑to‑Edge
  • Uses Capacitor StatusBar and Edge‑to‑Edge support to draw under system bars and apply safe‑area insets to CSS vars.
  • Adaptive bar styling by orientation; improved hardware back behavior closes modals or exits selection before navigating back.
  • Exposes CSS variables `--edge-top/left/right/bottom` for consistent spacing against system bars; content and pills use `env(safe-area-inset-*)` where appropriate.
Tags for Saved Items
  • Add descriptive tags to any saved item. Tags render as compact chips below each entry.
  • Edit tags per item via long‑press actions or for multiple items at once from selection mode.
  • Search matches both labels and tags. Duplicate tags are automatically deduplicated, case‑insensitive.
Multi‑Select for Saved Items
  • Long‑press any saved item to enter selection mode (with gentle haptic feedback). Tap items to add/remove from the selection.
  • A pill‑shaped action bar appears at the bottom once something is selected, offering Edit Tags, Remove, and Cancel.
  • Visual polish: selected rows shrink slightly with an outline; newly‑selected items bounce subtly for confirmation.
  • Hardware back exits selection first, then navigates if applicable.
Rounded UI
  • Optional “Rounded items” style increases border radius for list items and certain surfaces.
  • Toggle via Settings → Visual → “Rounded items” (on by default). Applies instantly and syncs across tabs.
Updated Onboarding Tour
  • A guided, multi‑step tour now covers the calculator, saving items, tags, online search, and the new selection/tag editing flows.
  • Smart timing: the tour runs on first launch (or when forced from Settings) and defers “What’s New” until it finishes.
  • Test controls under Settings → Test Settings let you always show the tour or What’s New for easy validation.
Saved Items & Search Polish
  • Online search and “Use” actions provide light haptic taps and reliably fill fields before calculating.
  • Single‑line meta rows auto‑scroll only when overflowing; pause on hover for readability.
Miscellaneous
  • Dark‑mode navbar glass effect tuned for contrast.
  • Minor fixes and performance tweaks.

Version 1.3.1 Updates:

A small polish release focused on bug fixes, a smoother onboarding tour, and quality-of-life tweaks in Import/Export and Test Settings.

Highlights
  • Bug fixes and stability improvements across the app.
  • Tour timing — the onboarding tour now runs without interruption; the What’s New popup waits until the tour finishes.
  • Import/Export filtering — quick search boxes on selection pages to find items fast.
  • Test Settings — added toggles to always show What’s New and always show the onboarding tour for easy testing.
  • Dark mode — fixed switch/checkbox ticks in Test Settings so they’re not white when unticked.

Version 1.3.0 Updates:

A larger release introducing Import/Export selection pages, mobile polish, online search improvements, and dark mode refinements.

Consistent Light Background
  • Unified visual treatment: All pages now share the same Bread.png background with a soft white overlay in light mode for readability.
  • Pages updated: index, settings, update, import selection, and export selection.
Updates Page Navbar
  • Fixed visual contrast: The Updates page navbar now uses Bootstrap's light styling to match the rest of the app and remain readable.
Import/Export Redesign
  • Moved to Settings: Import and Export controls live under Settings → Saved Items, keeping the main screen focused on calculation and search.
  • New selection pages:
    • import.html: Preview items from a file, tick selections, Select All / Deselect All, and import only what you want. Duplicate labels (case-insensitive) are skipped automatically.
    • export.html: Tick which of your saved items to export. Export Selected produces a clean JSON file with just those items.
  • Mobile-first design: On phones, the primary action (Import Selected / Export Selected) moves into a sticky bottom action bar, making it easy to reach with your thumb. Controls wrap neatly and tap targets are a bit larger.
  • Completion feedback: Imports now show a polished in-app popup (modal) summarizing how many items were added, then return to Settings.
  • Live refresh: The main page notices saved-items changes and refreshes the list automatically.
Online Search Improvements
  • Test mode: Searching for test returns three sample items (Bread, Pasta, Rice) with realistic data and thumbnails, without hitting external APIs.
  • Removed Edamam: Online search now uses Nutritionix when credentials are provided; otherwise it uses Open Food Facts. Edamam settings and code paths were removed to simplify setup and reduce API errors.
  • Use button reliability: Clicking Use in search results always fills Carbohydrates per 100g, Weight, and Label. If an API doesn’t provide carbs/100g directly, the app computes it from total carbs and serving weight.
Calculator & Saved Items
  • Robust numbers: Inputs accept comma decimals (e.g., 50,5) and ignore stray characters. Press Enter in either field to calculate.
  • Saved item Use button: Populates fields and triggers calculation immediately. If an item lacks carbs/100g, it’s computed from stored serving and carbs.
List Row Readability
  • Scrolling meta line: The line “Serving: … | Carbs In Serving: …” stays single-line. It auto-scrolls only when the text is longer than the available space (pauses on hover). On phones, the text gets maximum width while action buttons keep their space.
Dark Mode Polish
  • Muted text fixed: All .text-muted content now uses a light gray in dark mode. This prevents unreadable black text on dark backgrounds across all pages.
  • Consistent components: Cards, lists, modals, tabs, and buttons have coherent dark styling and contrast.
Quality & Reliability
  • Theme sync: Theme changes propagate between pages/tabs and apply instantly.
  • Safer fallbacks: Where an API omits fields, the app now computes reasonable defaults to avoid “undefined” values in the UI.

If you notice anything off or want other improvements (like one-tap Export All), let me know and I’ll add it.

Additional 1.3 Notes
  • API Key Management Enhancements:

    Significant improvements have been made to how API keys are managed within the application, offering greater control and ease of use.

    • Enhanced GUI for API Key Management:

      A new graphical user interface (GUI) has been implemented for adding, editing, and managing API keys for various external services. This intuitive interface simplifies the process, making it much easier for users to integrate and control their data sources without needing to delve into code or complex settings files.

    • Expanded API Key Options and Flexibility:

      The application now supports a wider array of API key configurations, providing users with greater flexibility in choosing and utilizing different external data providers for food nutrition information. The system is designed to be more modular, allowing for easier integration of future APIs and offering users more control over their preferred data sources, enhancing the accuracy and breadth of available nutritional data.

  • User Interface and Experience Improvements:

    Several updates have been implemented to enhance the overall look, feel, and responsiveness of the application across different devices.

    • Optimized GUI Centering for Larger Screens:

      To provide a more polished and professional user experience on larger displays, such as laptops and desktop monitors, the application's main graphical user interface (GUI) now intelligently centers itself. This ensures that the application is not only functional but also aesthetically pleasing, making optimal use of screen real estate and providing a comfortable viewing experience regardless of the monitor size or resolution.

    • Improved Dark Mode Toggle Styling and Visibility:

      The Dark Mode toggle within the Settings menu has received a visual upgrade to enhance usability and consistency. Specifically, when Dark Mode is active and the toggle is in the "disabled" state, it will now distinctly appear in a white color. This change significantly improves visibility against the darker background, making the toggle's status immediately clear to the user and preventing any ambiguity that might arise from less contrasting color schemes.

    • Unified and Cohesive Background Design:

      To create a more harmonious and visually appealing user interface, the background designs across the entire application have been standardized and made cohesive. This ensures a consistent aesthetic experience as users navigate between different sections and pages. The unified background treatment contributes to a more professional and polished look, reducing visual jarring and enhancing the overall user comfort and engagement with the application.

    • Smooth Carb Calculation Result Transition: Upon calculating the total carbohydrates, the result card (#resultCard) no longer just pops into existence. It now elegantly fades into view using a fade-in CSS transition. This subtle visual cue draws attention to the newly displayed information, making the calculation process feel more responsive and polished. The transition ensures that the user's focus is naturally directed to the outcome of their input, contributing to a more satisfying interaction.
  • Revamped and Organized Settings Page:

    The settings interface (settings.html) has undergone a complete overhaul to provide a more structured, user-friendly, and scalable experience. Previously, settings might have been scattered or presented in a linear fashion, but now they are logically grouped within an intuitive accordion layout.

    This new design categorizes various settings into collapsible sections (e.g., "Visual," "About Carb Calculator"). Each section can be expanded or collapsed, allowing users to easily navigate and focus on the specific settings they wish to adjust without being overwhelmed by too many options at once. This not only improves the aesthetic appeal but also significantly enhances the usability and discoverability of different configuration options, making the application more accessible and manageable for all users.

  • Strategic Relocation of Dark Mode Toggle:

    In line with the improved organization of the settings, the dark mode toggle switch has been thoughtfully moved from its previous location on the main application page (index.html) to the dedicated "Visual" section within the new settings page (settings.html).

    This relocation centralizes all visual preferences in one logical place, making it easier for users to find and manage display-related options. By consolidating such settings, we aim to reduce clutter on the main interface and provide a more consistent and intuitive user journey. Users can now access and change their preferred theme alongside other visual configurations, streamlining the customization process.

  • Dynamic User Interface Scaling for Enhanced Responsiveness:

    A significant improvement in this version is the implementation of dynamic UI scaling, ensuring that the Carb Calculator application provides an optimal viewing and interaction experience across a wide array of devices and screen sizes. This means the user interface is no longer static but intelligently adapts its layout, element sizes, and content presentation based on the available screen real estate.

    Whether you are accessing the application on a compact smartphone, a mid-sized tablet, or a large desktop monitor, the UI will automatically adjust to maintain readability, usability, and aesthetic integrity. This responsiveness is achieved through a combination of flexible CSS layouts (like Flexbox and Grid), relative units (percentages, vw, vh), and media queries, which allow the application to apply different styles based on screen characteristics. This ensures that all interactive elements remain easily tappable or clickable, text is legible, and the overall layout remains coherent, providing a seamless and consistent experience regardless of the device or orientation.

Version 1.2.2 Updates:

  • API Key Input Fields:

    You can now input your Nutritionix API keys directly in the settings page under the "Online Search" section. This allows for easier configuration of the primary API used for food searches.

  • Improved Toggle Switch Styling:

    The toggle switches in the settings page have been restyled to be larger and aligned to the right, improving their appearance and usability, especially on mobile devices.

Version 1.2.1 Updates:

  • Force Open Food Facts API Option:

    A new setting has been added under the "Online Search" tab in the settings page. This allows users to force the application to use the Open Food Facts API for all online food searches, bypassing the default Nutritionix API. This provides more control over the data source for food information.

Version 1.2 Updates:

  • Enhanced User Interface Animations:

    I've significantly refined the visual feedback within the application by introducing subtle yet impactful animations. These additions are designed to make interactions feel more fluid, intuitive, and modern, improving the overall user experience without being distracting.

    • Dynamic Online Search Result Display: When performing an online search for food items, individual results now gracefully slide into view from the left. This slideIn animation, implemented using CSS keyframes and JavaScript to control animation-delay, provides a visually appealing and organized presentation of search outcomes. Instead of an abrupt appearance, each search result item (.online-search-result-item) is introduced with a slight delay, creating a cascading effect that guides the user's eye and enhances readability. This makes browsing search results a more pleasant and less jarring experience.
    • Smooth Carb Calculation Result Transition: Upon calculating the total carbohydrates, the result card (#resultCard) no longer just pops into existence. It now elegantly fades into view using a fade-in CSS transition. This subtle visual cue draws attention to the newly displayed information, making the calculation process feel more responsive and polished. The transition ensures that the user's focus is naturally directed to the outcome of their input, contributing to a more satisfying interaction.
  • Revamped and Organized Settings Page:

    The settings interface (settings.html) has undergone a complete overhaul to provide a more structured, user-friendly, and scalable experience. Previously, settings might have been scattered or presented in a linear fashion, but now they are logically grouped within an intuitive accordion layout.

    This new design categorizes various settings into collapsible sections (e.g., "Visual," "About Carb Calculator"). Each section can be expanded or collapsed, allowing users to easily navigate and focus on the specific settings they wish to adjust without being overwhelmed by too many options at once. This not only improves the aesthetic appeal but also significantly enhances the usability and discoverability of different configuration options, making the application more accessible and manageable for all users.

  • Strategic Relocation of Dark Mode Toggle:

    In line with the improved organization of the settings, the dark mode toggle switch has been thoughtfully moved from its previous location on the main application page (index.html) to the dedicated "Visual" section within the new settings page (settings.html).

    This relocation centralizes all visual preferences in one logical place, making it easier for users to find and manage display-related options. By consolidating such settings, we aim to reduce clutter on the main interface and provide a more consistent and intuitive user journey. Users can now access and change their preferred theme alongside other visual configurations, streamlining the customization process.

  • Dynamic User Interface Scaling for Enhanced Responsiveness:

    A significant improvement in this version is the implementation of dynamic UI scaling, ensuring that the Carb Calculator application provides an optimal viewing and interaction experience across a wide array of devices and screen sizes. This means the user interface is no longer static but intelligently adapts its layout, element sizes, and content presentation based on the available screen real estate.

    Whether you are accessing the application on a compact smartphone, a mid-sized tablet, or a large desktop monitor, the UI will automatically adjust to maintain readability, usability, and aesthetic integrity. This responsiveness is achieved through a combination of flexible CSS layouts (like Flexbox and Grid), relative units (percentages, vw, vh), and media queries, which allow the application to apply different styles based on screen characteristics. This ensures that all interactive elements remain easily tappable or clickable, text is legible, and the overall layout remains coherent, providing a seamless and consistent experience regardless of the device or orientation.