Grocy Versions Save

ERP beyond your fridge - Grocy is a web-based self-hosted groceries & household management solution for your home

v4.2.0

2 months ago

Stock

  • When using/scanning a stock entry Grocycode on the transfer page, the "Use specific stock item" dropdown (and "From location") is now also prefilled accordingly
  • Fixed that for the product's last price stock transactions with an empty or 0 price weren't ignored
  • Fixed that when copying a product, the field "Move on open" wasn't copied along

Shopping list

  • The shopping lists dropdown on the shopping list page now also shows the number of items on the corresponding shopping list

Recipes

  • Optimized that when creating a recipe, the desired serving amount is now initially prefilled by the recipe's base serving amount

Batteries

  • It's now possible to track any addtional info on a battery charge cycle by using Userfields (thanks @TheDodger)
    • => Configure the desired Userfields for the entity battery_charge_cycles
    • => The on a battery charge cycle tracking entered information is then visible on the corresponding battery charge cycle journal entry

General

  • Optimized that file uploads are no longer completely buffered in memory before writing them to disk (thanks @bbx0)
  • Optimized top right corner menus icon spacing (thanks @TheDodger for the initial work on this)
  • Fixed again that some dialogs were not properly (too small) displayed (this time mostly affecting Chrome/Edge)
  • Fixed that table states (visible columns, sorting, column order and so on) could be reset to default after not accessing/using the corresponding page for a certain amount of time

v4.1.0

3 months ago

💡 PHP 8.3 is from now on (additionally to PHP 8.2) supported.

⚠️ PHP 8.1 is no longer supported.

Stock

  • Fixed that the location dropdown on the consume page contained the same location multiple times if there are currently stock entries at multiple locations of the corresponding product
  • Fixed that the status filter "n products are overdue" on the stock overview page also counted/included stock entries due today or tomorrow
  • Fixed that the stock report "Spendings" did not take products without an assigned product group into account (thanks @Torqu3Wr3nch for the initial work on this)
  • Fixed that the success message after opening a stock entry on the stock entries page displayed always an amount of 1 instead of the actual amount opened
  • Fixed that the "Consume this stock entry as spoiled" context menu action on the stock entries page consumed always an amount of 1 instead of the whole stock entry

Recipes

  • Fixed that copying recipes with special characters in the name was not possible

Meal plan

  • Fixed that the meal plan page was broken after deleting all meal plan items of a week

Calendar

  • The different event types (due products, chores, tasks and so on) can now have different colors
    • => New button "Configure colors" on the calendar page to configure these colors (top right corner)

Tasks

  • Added a new table filter for categories (thanks @geoffwright240 for the initial work on this)

Userfields

  • Fixed that when having a userfield of type "Select list (multiple items can be selected)" and selecting no item, editing of the corresponding form was broken

General

  • Night mode is now also used on the login page if that's the system preferred color scheme (generally if night mode is on or not is based on user settings and before logging in no user context is available)
  • Optimized sidebar icon spacing (thanks @chris-thorn)
  • Fixed that file uploads (product pictures and so on) didn't work for files where the file name contains multiple spaces
  • Fixed that some dialogs were not properly (too small) displayed (mostly affecting Firefox >= 121)

API

  • Optimized that the endpoints GET /objects/{entity} and GET /objects/{entity}/{objectId} now also return Userfields for the entity stock

v4.0.3

8 months ago

Stock

  • Performance improvements related to the stock overview page / displaying a product card
  • Performance improvements related to consuming products (thanks @alkuzman)

Userfields

  • New Userfield type "Number (currency)", just like the type "Number (decimal)", but it will render the value according to / with the configured currency

General

  • Performance improvements related to table (layout) loading handling

v4.0.2

9 months ago

Stock

  • The stock report "Spendings" now also supports grouping by stores
  • Fixed that the upgrade failed when having (a lot of) redundant ("each to each") default quantity unit conversion definitions (thanks a lot @alkuzman and @esclear)
    • More on that by a practical example: When a conversion between Teaspoons and Milliliters and another one between Milliliters and Liters exists (and so forth; unlimited levels), Grocy can now (since v4.0.0) calculate the derived factor to convert Teaspoons to Liters on its own (before a direct conversion definition between Teaspoons and Liters was required)
    • So you might have a lot of such "each to each absolute conversion definitions" currently, when you were affected by failed upgrades (timeout problems due to that resolving indirect conversion factors took very long)
    • Heads up: This is now fixed, but you should clean up those redundant "each to each" definitions (in the example above the conversion between Teaspoons and Liters), since they are no longer needed
  • Fixed that the "Mark this stock entry as open"-button on the stock entries page opened always one unit instead of the whole stock entry
  • Fixed that edited stock entries were not considered in some cases (affecting the product's average price and the stock reports)

Recipes

  • Fixed that ingredient cost/energy values were wrong when unit conversions but no product substitutions were involved

v4.0.1

9 months ago

💡 PHP 8.2 is from now on (additionally to PHP 8.1) supported.

Stock

  • Fixed performance issues affecting all places where quantity unit conversions / prices are involved
  • Fixed that the upgrade failed when having improperly defined product specific quantity unit conversions
  • Fixed that edited stock entries were not considered in some cases (affecting the product's last price, average price, the price history and the stock reports)

Shopping list

  • Changed that prices on the shopping list (table columns "Last price (Unit)" and "Last price (Total)") are now related to the there selected quantity unit (instead of to the product's QU stock as before)

Meal plan

  • Fixed that the meal plan did initially not display the current week when the settings MEAL_PLAN_FIRST_DAY_OF_WEEK and CALENDAR_FIRST_DAY_OF_WEEK were set to different values

API

  • Fixed performance issues on the endpoint /stock/products/{productId}

v4.0.0

9 months ago

⚠️ PHP 8.1 (with SQLite 3.34.0+) is from now on the only supported runtime version.

❗ The major version bump is due to breaking API changes, please see below if you use the API.

Recommendation: Benchmark tests showed that e.g. unit conversion handling is up to 5 times faster when using a more recent (3.39.4+) SQLite version.

New feature: Quantity unit conversions with unlimited hierarchy

  • Quantity unit conversions now support transitive conversions, means the QU hierarchy has now unlimited levels (thanks a lot @esclear)
  • The product option "Factor purchase to stock quantity unit" was removed
    • => Use normal product specific QU conversions instead, if needed
    • An existing "Factor purchase to stock quantity unit" was automatically migrated to a product specific QU conversion

New feature: Stock reports

  • New button "Reports" on the stock overview page
  • The first report (more to come) "Spendings" makes it possible to explore (pie chart and table data) the total value spend by product or product group in any time range
  • (Thanks for the initial work on this @raupie)

Stock

  • New product option "Default quantity unit consume"
    • Will be used/selected as the default quantity unit on the consume page
    • The product's "Quick consume amount" is now displayed related to this quantity unit ("quick consume/open buttons" on the stock overview page)
    • Defaults to the product's "Quantity unit stock" (so no changed behavior when not configured)
  • New product option "Quantity unit for prices"
    • Prices are now shown related to this quantity unit (instead of per "Default quantity unit purchase") on the product card, price history chart, stock overiew and stock entries page
    • Defaults to the product's "Default quantity unit purchase" (so no changed behavior when not configured)
  • Changed that when the ingredient option "Only check if any amount is in stock" is enabled, costs and calories are now based on the original entered amount instead of an "virtual" fixed amount of 1
  • When using the "Add as barcode to existing product" workflow on a purchase transaction, the selected quantity unit and the entered amount and note are now also added to the new barcode
  • New product option "Auto reprint stock entry label"
    • When enabled, auto-changing the due date of a stock entry (by opening/freezing/thawing and having corresponding default due days set) will reprint its label (only server side label printer WebHooks are supported)
    • Defaults to disabled, so no changed behavior when not configured
  • Added a new option "Reprint stock entry label" on the stock entry edit page (will print the correspondind stock entry label on save)
    • This option will be automatically set on changing the entry's due date
  • The product option "Quick consume amount" (the amount used for the "quick consume/open buttons" on the stock overview page) has been split into another option "Quick open amount", to be able to set different amounts for consume and open (defaults to the "Quick consume amount" per product, so no changed behavior when not configured)
  • Changed that for the product's average and last price (and for the price history chart) stock transactions with an empty or 0 price are ignored
  • Added a filter option to only show currently out-of-stock products on the products list (master data) page
  • When clicking a product name on the products list (master data) or on the stock journal page, the product card will now be displayed (like on the stock overview page)
  • When using/scanning a product barcode and the purchase or inventory page, the barcode's note will now also be prefilled (if any)
  • Each row on the stock journal now also has a context-/more menu for quick access to product related actions (the same as on the stock overview page)
  • The amount of "Label per unit" stock entry labels (on purchase and inventory) is now displayed, to help prevent printing a lot of labels where this maybe is not intended
  • Fixed that hiding the "Purchased date" column (table options) on the stock entries page didn't work
  • Fixed that sorting by the "Value" and "Min. stock amount" columns on the stock overview page didn't work
  • Fixed that the consumed amount was wrong, when consuming multiple substituted subproducts at once and when multiple/different conversion factors were involved
  • Fixed that for a product's average price, only currently in-stock items were considered, not already consumed ones
  • Fixed that when copying a product, some fields (like "Default consume location" or "Disable own stock) weren't copied along
  • Fixed that the total product count on the stock overview page also included products with "Never show on stock overview" enabled

Shopping list

  • Added a new button "Clear done items" (to clear all done items with one click)

Recipes

  • Added a new entry "Add to meal plan" in the context/more menu per recipe to directly add a recipe to the meal plan from the recipes page
  • Changed that when a ingredient has a "Variable amount" set, the text entered there now also replaces the unit when displaying the recipe (not only the amount as before)
  • When displaying a recipe in fullscreen mode, the ingredients and preparation is now shown side by side (or below each other on small screens) instead of in tabs
  • When consuming a recipe which has a "Produces product" set and when the product's "Default stock entry label" is configured accordingly, the corresponding label will now be printed on that action (only server side label printer WebHooks are supported)
  • Fixed that hiding the "Requirements fulfilled" column (table options) on the recipes page didn't work
  • Fixed that ingredient costs and calories were wrong when product substitution and unit conversions were involved at the same time

Meal plan

  • Added a new sub feature flag FEATURE_FLAG_RECIPES_MEALPLAN (in config.php) to only disable the meal plan if not needed (thanks @webysther)
  • The config.php setting MEAL_PLAN_FIRST_DAY_OF_WEEK can now be set to -1 to dynamically start the meal plan week on today
  • Fixed that consuming a recipe from the meal plan didn't add its "Produces product"-product to stock (if any)
  • Fixed that the "Put missing products on shopping list"-button in the header (to put all missing products on the shopping list for a whole week) was missing under certain circumstances (related to locale week numbers and turn of the year)

Chores

  • Changed the handling of the tracking buttons on the chores overview page
    • The green button now tracks an execution of the corresponding chore on the next scheduled time, rather than for now/today
    • New context-/more menu option "Track chore execution now" to track an execution for now/today (so the same what the green button did before)
  • Removed the limitation on the chore tracking page that the tracked time couldn't be in the future
  • Fixed that "assidgned to" was not recalculated when undoing chores

Calendar

  • Added a button to jump to today (between the prev/next buttons, top right corner)

Tasks

  • Fixed that hiding the "Category" column (table options) on the tasks page didn't work

Userfields

  • Product group Userfields are now also rendered on the shopping list
  • Fixed that when having e.g. a Userfield for the stock entity and using the "Never overdue" shortcut checkbox for the due date on purchase, this Userfield would also be set to the corresponding "never overdue date"

General

  • Like already possible for products/chores/batteries, locations, stores, quantity units, product groups and task categories can now be disabled to keep them for existing references without deleting them, but to hide them everywhere for selections and so on (new option "Active")
  • Added a new config.php setting ENERGY_UNIT to customize the label to display energy values (was fixed kcal before and defaults to that, so no changed behavior when not configured)
  • New logo and "Grocy" is now officially spelled with a capital initial letter (before everything was lowercase)
  • Various frontend performance enhancements
  • Fixed that users were unable to delete their own API keys (when not having the All permissions permission)
  • Fixed that button tooltips on some places didn't disappear after clicking the corresponding button
  • New translations: (thanks all the translators)

API

  • ⚠️ Breaking changes:
    • The product property qu_factor_purchase_to_stock was removed (existing factors were migrated to normal product specific QU conversions, see above)
    • Numbers are now returned as numbers (so technically without quotes around them, were strings for nearly all endpoints before)
  • Endpoint /stock/products/{productId}:
    • Added a new field/property qu_conversion_factor_purchase_to_stock for convenience (contains the conversion factor of the corresponding QU conversion from the product's qu_id_purchase to qu_id_stock)
    • Added a new field/property qu_conversion_factor_price_to_stock for convenience (contains the conversion factor of the corresponding QU conversion from the product's qu_id_price to qu_id_stock)
    • Added a new field/property default_quantity_unit_consume (contains the quantity unit object of the product's "Default quantity unit consume")
  • The following entities are now also available via the endpoint /objects/{entity} (only listing, no edit)
    • quantity_unit_conversions_resolved (returns all final/resolved conversion factors per product and any directly or indirectly related quantity units)
    • recipes_pos_resolved (returns stock fulfilment information for all recipe ingredients)
  • The endpoint /batteries now also returns the corresponding battery object (as field/property battery)
  • API keys can now have a description (to e.g. track where the corresponding key is used)

v3.3.2

1 year ago

Stock

  • Improved that when editing a unit conversion, the "Quantity unit from" and "Quantity unit to" of the corresponding inverse conversion is now also updated accordingly if changed (until now only the factor was updated automatically)
  • Changed that the "Move on open" product option can now always be used/set, even when the "Default location" and "Default conume location" are the same
  • Fixed that stock entry notes were lost when consuming/opening/transferring a partial amount of the corresponding stock entry (thanks @akoshpinter)
  • Fixed that the average shelf life of a product (on the productcard) was wrong when the corresponding stock entry was edited
  • Fixed that when the stock setting "Decimal places allowed for amounts" was set to 0, unit conversion (if any) failed when adding the corresponding product to stock
  • Fixed that consuming a parent product which is not in stock itself (so essentially using any of the child products) may failed when unit conversions were involved (the current stock amount check was wrong in that case)
  • Fixed that the status button counters on the stock overview page ("X products are overdue" and so on) included products which have the option Never show on stock overview enabled
  • Fixed that adding Userfields to existing stock entries was not possible (only editing existing Userfield values, e.g. added during purchase or inventory, was possible)
  • Fixed that it was not possible to change a products stock QU, when the needed unit conversion (old QU => new QU) was only defined globally (means on QU level) or by the products "Factor purchase to stock quantity unit"
  • Fixed that when changing a products stock QU, the products "Quick consume mount", "Energy (kcal)" and "Tare weight" wasn't updated according to the corresponding unit conversion factor
  • Fixed that when changing a products stock QU, the product barcode amounts were also changed based on the corresponding unit conversion factor

Shopping list

  • Fixed that products could not be added to the shopping list via barcode scanning

Recipes

  • Fixed that headlines in the recipe description (preparation text) were removed on saving
  • Fixed that the default consume rule was not always applied correctly when a recipe consumed a substituted ingredient (so when having a parent product in the recipe which is currently not in stock itself)

Userfields

  • Fixed that edit forms were broken when editing an object with null Userfields (so when the field for that object was not set before / on the initial object creation)

General

  • It's now possible to edit a user without necessarily updating the users password
  • Fixed that column reordering didn't work on the stock overview, stock entries and shopping list page when showing columns which are not shown by default
  • Fixed that when running label printer WebHooks client side (so when LABEL_PRINTER_RUN_SERVER = false), the setting LABEL_PRINTER_HOOK_JSON was ignored (the WebHook data was always sent as form data)
  • Fixed that granular user permissions (like "Shopping list / Add items" or "Equipment") didn't allow to add/edit the corresponding items without also having the "Edit master data" permission
  • New translations: (thanks all the translators)

API

  • Endpoint /stock/volatile
    • The field/property missing_products now also contains the product object
  • Endpoint /recipes/{recipeId}/consume: Fixed (again) that consuming partially fulfilled recipes was possible, although an error was already returned in that case (and potentially some of the in stock ingredients were consumed in fact)

v3.3.1

1 year ago

Stock

  • New product option "Move on open" (defaults to disabled)
    • When enabled, on marking the product as opened, the corresponding amount will be moved to the products default consume location
    • (Thanks @RosemaryOrchard)
  • The stock setting "Decimal places allowed for prices" has been split into separate settings for input and displaying prices (the existing setting will be set for both new options on migration, so no changed behavior when not configured)
  • Optimized that when the plural form(s) of a quantity unit is/are not provided, the singular form is used to display plural amounts
  • Fixed that "Automatically add products that are below their defined min. stock amount to the shopping list" (stock setting) was only done when consuming products, not when opening them
  • Fixed that the price history chart (product card) showed the price on a wrong date when having multiple purchases on the same date from different stores

Recipes

  • Fixed that when a substituted product is used to display costs and calories (so when a parent product ingredient is currently not in stock itself), no unit conversions were considered for costs/calories calculation
  • Fixed that the displayed "already on the shopping list"-amount (for missing ingredients) was wrong when the products "Factor purchase to stock quantity unit" wasn't 1

Chores

  • Fixed that rescheduling of "Track date only"-chores for today was not possible

Calendar

  • Fixed that clicking on meal plan product and notes calendar entries redirected to an invalid page

General

  • LDAP authentication: Optimized that it's not required that LDAP accounts need to have a first-/lastname

API

  • Endpoint /stock/products/{productId}: New field/property default_consume_location (contains the products default consume location object)
  • Endpoint /stock/products/{productId}/add: Fixed that the request body parameter transaction_type was ignored / always set to purchase
  • Fixed that the endpoint /stock/products/by-barcode/{barcode}/open didn't handle stock entries provided by a grocycode (thanks @jtommi)
  • Fixed that less or equal (<=) and greater or equal (>=) filter comparisons didn't work (optional query[] request query parameter on most endpoints)

v3.3.0

2 years ago

New feature: Notes and Userfields for stock entries

  • Stock entries can now have notes
    • For example to distinguish between same, yet different products (e.g. having only a generic product "Chocolate" and note in that field what special one it is exactly this time - as an alternative to have sub products)
    • Or for example to track ownership of stock items when sharing the fridge with your flatmates
    • => New field on the purchase and inventory (and stock entry edit) page
    • => New column on the stock entries and stock journal page
    • => Visible also in the "Use a specific stock item" dropdown on the consume and transfer page
  • Additionally it's also possible to add arbitrary own fields by using Userfields
    • => Configure the desired Userfields for the entity stock
    • => Those Userfields are then visible on the same places as mentioned above for the built-in "Note" field

New feature: Recipes "Due score"

  • A number (new column on the recipes page) which represents a score which is higher the more ingredients, of the corresponding recipe, currently in stock are due soon, overdue or already expired
    • Or in other words: A score to see which recipes to cook to not waste already overdue/expired or due soon products
  • The score is in detail based on:
    • 1 point for each due soon ingredient (based on the stock setting "Due soon days")
    • 10 points per overdue ingredient
    • 20 points per expired ingredient
    • (or else 0)
  • The corresponding ingredient is also highlighted in red/yellow/grey (same colors as on the stock overview page)

Stock

  • It's now possible to change a products stock QU, even after it was once added to stock
    • When the product was once added to stock, there needs to exist a corresponding unit conversion for the new QU
  • Product card, stock overiew and stock entries page optimizations regarding displaying prices:
    • Prices are now shown per default purchase quantity unit, instead of per stock QU and when clicking/hovering, a tooltip shows the price per stock QU
    • The price history chart is now based on the value per purchase QU, instead of per stock QU
  • New product option "Default consume location" (not mandatory, defaults to not set / empty)
    • When set, stock entries at that location will be consumed first
    • => This will be automatically taken into account when consuming from the stock overview page and all other places where no specific location can be selected
    • => On the consume page the location is preselected in the following order:
      1. The new default consume location, if the product currently has any stock there, otherwise
      2. The products default location, if the product currently has any stock there, otherwise
      3. The first location where the product currently has any stock
  • Optimized quantity unit conversion handling:
    • The option "Create inverse QU conversion" was removed when creating a QU conversion
    • => Instead the corresponding inverse conversion is now always created/updated/deleted automatically
  • New product option "Disable own stock" (defaults to disabled)
    • When enabled, the corresponding product can't have own stock, means it will not be selectable on purchase (useful for parent products which are just used as a summary/total view of the sub products)
  • The location content sheet can now optionally list also out of stock products (at the products default location, new checkbox "Show only in-stock products" at the top of the page, defaults to enabled)
  • Added a location filter to the stock entries page
  • Added the product grocycode as a (hidden by default) column to the products list (master data)
  • The price entered on the inventory page is now related to the selected quantity unit (like on the purchase page, was always related to the products stock QU before)
  • Fixed that consuming via the consume page was not possible when FEATURE_FLAG_STOCK_LOCATION_TRACKING was disabled

Shopping list

  • Added a new shopping list setting (top right corner settings menu) to automatically add products, that are below their defined min. stock amount, to the shopping list (defaults to disabled)
  • Fixed that when using "Add products that are below defined min. stock amount", the calculated missing amount was wrong for products which had the new product option Treat opened as out of stock set and when having at least one opened stock entry

Recipes

  • When a parent product is used as an ingredient, which is currently not in stock itself, the substituted product (so the one which was already taken into account when consuming the recipe) is now displayed below the ingredient and the costs (and calories) are taken from that one, to reflect the current real costs even better
  • Added a new recipes setting (top right corner settings menu) "Show a little checkbox next to each ingredient to mark it as done" (defaults to disabled)
    • When enabled, next to each ingredient a little checkbox will be shown
    • When clicked, the ingredient is crossed out
    • This status is not saved, means reset when the page is reloaded
  • Fixed that consuming recipes was possible when not all ingredients were in stock (and this potentially consumed some of the in stock ingredients; not matching the message "nothing removed")
  • Fixed that the price of the "Produces product"-product, which is added to stock on consuming a recipe, was wrong (was the recipe total costs multiplied by the serving amount instead of only the recipe total costs)
  • Fixed that calories of recipe ingredients were displayed with an indefinite number of decimal places
  • Fixed that ingredient amounts were wrong for multi-nested (> 2 levels) recipes, when the included recipe used an serving amount other than 1
  • Fixed that searching/filtering the recipe gallery view did not work correctly
  • Fixed that searching/filtering recipes by products did not work (e.g. via the context-/more menu option "Search for recipes containing this product" on the stock overview page)

Meal plan

  • The day is now editable on the edit dialog of any meal plan entry, which makes it possible to move entries to a different day
  • Fixed that it was not possible to print the meal plan (and other pages) in landscape (thanks @miguelangel-nubla)

Chores

  • The Daily period type has been changed to schedule the chore at the same time (based on the start date) each n days
    • This period type scheduled chores n days after the last execution before, which is also possible by using the Hourly period type and a corresponding period interval; all existing Daily schedules will be converted to that on migration
  • It's now possible to manually reschedule / assign chores
    • New entry "Reschedule next execution" in the context/more menu on the chores overview page
    • If you have rescheduled a chore and want to continue the normal schedule/assignment instead, use the "Clear" button in the same dialog
    • Rescheduled/reassigned chores will be highlighted with an corresponding icon next to the "Next estimated tracking date" / "Assigned to"
  • Optimized that when skipping chores via the chore tracking page, the given time is used as the "skipped time", not the scheduled next estimated tracking time of the corresponding chore (making it essentially possible to skip more then one schedule at once)
  • Fixed that when consuming a parent product on chore execution (chore option "Consume product on chore execution"), no child products were used if the parent product itself is not in stock
  • Fixed that the upgrade to v3.2.0 failed when having any former "Dynamic Regular" chore with a "Period interval" of 0 (which makes absolutely no sense in reality)

Tasks

  • Fixed that tasks without a due date were highlighted in red (like overdue tasks)

Batteries

  • Fixed that the batteries overview page was broken when there was any battery Userfield with enabled "Show as column in tables" option
  • Fixed that grocycode label printer printing didn't work from the battery edit page (master data) (thanks @andreheuer)
  • Fixed that undoing a battery charge cycle had no effect on "Last charged" and "Next planned charge cycle" of the corresponding battery

Equipment

  • It's now possible to add multiple files (PDFs / manuals) to each equipment
    • Define as many Userfields for the entity equipment and use the type File
    • => Each of those File-Userfields will be shown as a separate tab on the equipment page

Userfields

  • Userfields of type "Date & time" and "Date (without time)" have now the option to default to now / today for new objects (new Userfield option "Default value")

General

  • Optimized form validation: Save / submit buttons are now not disabled when the form is invalid, the invalid / missing fields are instead highlighted when trying to submit / save the form (making it more obvious which fields are invalid / missing exactly)
  • Night mode can now use / follow the system preferred color scheme
    • The view/user setting "Enable night mode" has been removed and replaced by "Night mode" which now defaults to "Use system setting" (which uses the system preferred color scheme, "On" and "Off" are other possible options to always enable/disable night mode)
  • Some night mode style refinements
  • Fixed an server error (on every page) when not having any quantity unit
  • New translations: (thanks all the translators)

API

  • Added a new endpoint GET /stock/locations/{locationId}/entries to get all stock entries of a given location (similar to the already existing endpoint GET /stock/products/{productId}/entries)
  • Endpoint /recipes/{recipeId}/consume: Fixed that consuming partially fulfilled recipes was possible, although an error was already returned in that case (and potentially some of the in stock ingredients were consumed in fact)
  • Endpoint /stock/products/{productId}:
    • New field/property current_price which returns the current price of the corresponding product, based on the stock entry to use next (defined by the default consume rule "Opened first, then first due first, then first in first out") or on the last price if the product is currently not in stock
    • The field/property oldest_price is deprecated and will be removed in a future version (this had no real sense, currently returns the same as current_price)

v3.2.0

2 years ago

Stock

  • The config.php option FEATURE_SETTING_STOCK_COUNT_OPENED_PRODUCTS_AGAINST_MINIMUM_STOCK_AMOUNT was removed and is now a new product option Treat opened as out of stock, means, if opened stock entries will be counted as missing for calculating if a product is below its minimum stock amount, can now be configured per product
    • The existing option will be migrated to all existing products, so no changed behavior after the update
    • There is also a new stock setting (section "Presets for new products") which can be used to configure the default when adding products (also that will be set based on the old setting on migration)
  • When using/scanning a stock entry grocycode on the consume page, the amount is now prefilled by the stock entry amount (making it essentially possible to consume the corresponding stock entry in one go)
  • Stock entry labels get now also printed on inventory (only when adding products, same option "Stock entry label" like on the purchase page)
  • Fixed that stock entry labels on purchase were printed, even when "No label" was selected (was only a problem when running label printer WebHooks server side)
  • Fixed that formatted (HTML) text for the (hidden by default) product description column on the stock overview page was not correctly displayed
  • Fixed that numeric and date-time sorting of table columns on the stock entries page did not work correctly (thanks @MasterofJOKers)
  • Fixed that the consume page/dialog wasn't properly initialized when opening it from the stock entries page
  • Fixed that entries for not existing users were missing on the stock journal

Recipes

  • Optimized recipe costs calculation to better reflect the current real costs: Out of stock ingredients now use the last price
    • Background: Before v3.0.0 recipe costs were only based on the last price per product and since v3.0.0 the "real costs" (based on the default consume rule "Opened first, then first due first, then first in first out") are used, means out of stock items have no price - so using the last price for out of stock items should reflect the current real costs better
  • Added a new recipes setting (top right corner settings menu) "Show the recipe list and the recipe side by side" (defaults to enabled, so no changed behaviour when not configured)
    • When disabled, on the recipes page, the recipe list is displayed full-width and the recipe will be shown in a popup instead of on the right side
  • Recipes are now also grocycode enabled (works like any other grocycode; download/print it via the recipes edit page or the more/context menu on the recipes page; use/scan it at any place a recipe can be selected)
  • Performance improvements (page loading time) of the recipes page
  • Fixed that when adding missing recipe ingredients, with the option "Only check if any amount is in stock" enabled, to the shopping list, unit conversions (if any) weren't considered
  • Fixed that the recipe stock fulfillment information about shopping list amounts was not correct when the ingredient had a decimal amount

Meal plan

  • Meal plan sections can now (optionally) define a time, which will then be displayed on the meal plan section header and used for the corresponding calendar events
    • Additionally the correspnding calendar event now also mentions the meal plan section name
  • The day/week view can now be toggled
    • New button on top right corner of the meal plan (only visible on bigger screens)
    • On smaller screen the day view is still the default (no change)
  • Fixed that the meal plan showed the total calories per recipe (instead of per serving as stated by the suffix)

Chores

  • Chore schedules can now be skipped
    • New button on the chores overview and chore tracking page
    • Skipped schedules will be highlighted accordingly on the chore journal
  • Added a new chore option "Start date" which is used as a schedule starting point when the chore was never tracked
    • Until now, the schedule starting point was the first tracked execution
    • For all existing chores, the start date will be set to the first tracked execution time (or today, for chores which were never tracked) on migration
  • The Yearly period type has been changed to be schedule the chore on the same day each year
    • This period type scheduled chores 1 year after the last execution before, which is also possible by using the Daily period type and a period interval of 365 days; all existing Yearly schedules will be converted to that on migration
  • Added a new Hourly period type (to schedule chores every x hours)
  • Added a new Adaptive period type (to schedule chores dynamically based on the past average execution frequency)
  • Removed the period type Dynamic regular, since it's the same as Daily
    • All existing Dynamic regular schedules will be converted to that on migration
  • The chorecard now also shows the average execution frequency (how often the chore was executed in the past on average)

Calendar

  • Fixed that when having a task without a due date, the iCal export was broken

Tasks

  • Added a "Save & add another task"-button on the add task dialog to quickly create multiple tasks without having to close/reopen the dialog
  • Fixed that when editing a task without a due date, 1970-01-01 was shown

General

  • Added a separate status filter and table row highlighting (blue) on the chores, tasks and batteries overview pages for items due today
    • Additionally, the "due soon" days of chores/tasks/batteries (top right corner settings menu) can be set to 0 to disable that filter/highlighting
  • Optimized relative time display (also fixed a phrasing problem for some languages, e.g. Hungarian) (thanks @Tallyrald)
  • New input shorthand [+/-]n[d/m/y] for date fields to quickly input a date relative to today (adding (+) or subtracting (-) the number of days/months/years, see the full list of available shorthands here)
  • When using LDAP authentication, the configured LDAP_UID_ATTR is now used to compare if the user already exists instead of the username entered on the login page (that prevents creating multiple users if you enter the username in different notations) (thanks @FloSet)
  • When using reverse proxy authentication (ReverseProxyAuthMiddleware), it's now also possible to pass the username in an environment variable instead of an HTTP header (new config.php option REVERSE_PROXY_AUTH_USE_ENV) (thanks @Forceu)
  • The config.php option DISABLE_BROWSER_BARCODE_CAMERA_SCANNING has been renamed to FEATURE_FLAG_DISABLE_BROWSER_BARCODE_CAMERA_SCANNING
  • Fixed that when having a quantity unit matching any application string, the translation of that string was used to display that unit
  • Fixed that the logout button/menu was missing when using external authentication (e.g. LDAP)
  • New translations: (thanks all the translators)

API

  • The API endpoint /stock/shoppinglist/clear has now a new optional request body parameter done_only (to only remove done items from the given shopping list, defaults to false)
  • The API endpoint /chores/{choreId}/execute has now a new optional request body parameter skipped (to skip the next chore schedule, defaults to false)
  • The API endpoint /chores/{choreId} has new response field/property average_execution_frequency_hours (contains the average past execution frequency in hours or null, when the chore was never executed before)
  • New API endpoint /recipes/{recipeId}/printlabel (to print recipe grocycodes on the configured label printer)
  • Fixed that the barcode lookup for the "Stock by-barcode" API endpoints was case sensitive