iobroker.shoppingroute 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -9
- package/README_DE.md +12 -7
- package/build/lib/mobile-move.js +5 -4
- package/build/main.js +3 -3
- package/io-package.json +14 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
<a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
|
-
> **
|
|
20
|
+
> **Current release: 0.5.3**
|
|
21
21
|
> ShoppingRoute is available in the ioBroker **latest** repository.
|
|
22
22
|
|
|
23
23
|
## What ShoppingRoute does
|
|
@@ -58,21 +58,19 @@ Community and support:
|
|
|
58
58
|
|
|
59
59
|
Adapter settings and the backup utility include all 11 standard ioBroker Admin languages. Shopping-list feedback is available in German and English.
|
|
60
60
|
|
|
61
|
-
## What's new in 0.5.
|
|
61
|
+
## What's new in 0.5.3
|
|
62
62
|
|
|
63
63
|
**Control market assignments from the regular Alexa shopping list on your phone — no extra app and no access to the ioBroker Admin interface required.**
|
|
64
64
|
|
|
65
|
-
**Four
|
|
65
|
+
**Four actions (German/English letters: W/C, F/E, H/U, R/D):** `13WNETTO` moves item 13 **temporarily** to NETTO, while `13FNETTO` assigns it there **permanently**. `25H3` moves item 25 **three real product positions up**, and `25R3` moves it **three down**, within the same store only. Store headings are not counted; H/R do not modify stored walking routes or product groups.
|
|
66
66
|
|
|
67
|
-
Add a temporary command as a normal list item using `NNWMARKET`, for example `13WNETTO`: `13` is the two-digit prefix currently shown before the product, `W` means move, and `NETTO` is a configured destination market. Several commands may be entered before the next sort. Case does not matter; unambiguous small typos in market names are corrected.
|
|
67
|
+
Add a temporary command as a normal list item using `NNWMARKET`, for example `13WNETTO`: `13` is the two-digit prefix currently shown before the product, `W/C` means temporary move, and `NETTO` is a configured destination market. Several commands may be entered before the next sort. Case does not matter; unambiguous small typos in market names are corrected.
|
|
68
68
|
|
|
69
69
|
**Please be patient:** A new sort **never happens immediately**. Depending on internet connection, speed and Alexa processing, it may take **up to five minutes**. It is normal for the command to remain visible while processing. **If it is still present after five minutes**, check the internet/Alexa connection and the item number and store name. Mark an incorrect command completed in Alexa and enter it again correctly.
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
A **W** move affects only the current shopping item and does not change its learned default market. A **F** command permanently updates the product's default market. Successfully processed commands disappear from the Alexa list. If a command remains, check the number and market; mark the incorrect command as completed in Alexa and enter a corrected one. **Market-heading numbers cannot be used to move products.** Ambiguous or invalid commands are never guessed.
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
## What's new in 0.5.1
|
|
73
|
+
## Previous improvements (0.5.1)
|
|
76
74
|
|
|
77
75
|
This release fixes the saving and moving problems reported with the new management page and makes shopping from a phone more comfortable:
|
|
78
76
|
|
|
@@ -202,7 +200,12 @@ Please use the [ioBroker tester thread](https://forum.iobroker.net/topic/85510/t
|
|
|
202
200
|
|
|
203
201
|
## Changelog
|
|
204
202
|
|
|
205
|
-
### 0.5.
|
|
203
|
+
### 0.5.3 (2026-10-17)
|
|
204
|
+
|
|
205
|
+
- Adds bilingual command aliases: W/C temporary store, F/E permanent store, H/U up, R/D down.
|
|
206
|
+
- D now means down, while F replaces the former permanent D.
|
|
207
|
+
|
|
208
|
+
### 0.5.2 (2026-10-17)
|
|
206
209
|
|
|
207
210
|
- Add temporary market moves directly from the standard Alexa mobile shopping list via `NNWMARKET`.
|
|
208
211
|
- Process multiple commands, correct unambiguous market typos, and protect market headings and ambiguous item numbers.
|
package/README_DE.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|

|
|
4
4
|
|
|
5
|
-
**
|
|
5
|
+
**Aktuelle Version: 0.5.3 (veröffentlicht)**
|
|
6
6
|
|
|
7
7
|
ShoppingRoute macht aus einer normalen Alexa-Einkaufsliste eine praktische Einkaufshilfe: **Alle Märkte können gemeinsam in einer einzigen Liste geführt oder bewusst auf mehrere Listen verteilt werden.** Das besondere Merkmal ist das frei einstellbare **Marktrouting**: Für jeden Markt legst du deinen persönlichen Laufweg durch die Abteilungen fest. Dadurch steht die Einkaufsliste in der Reihenfolge, in der du tatsächlich durch den Laden gehst – für weniger Zurücklaufen, weniger Suchen und **schnelleres, effizienteres Einkaufen**.
|
|
8
8
|
|
|
@@ -13,21 +13,21 @@ ShoppingRoute sortiert Alexa-Einkaufslisteneinträge nach Markt, Produktgruppe u
|
|
|
13
13
|
🇩🇪 [**Deutsche Bedienungsanleitung**](BEDIENUNGSANLEITUNG_DE.md)
|
|
14
14
|
🇬🇧 [**English user guide**](USER_GUIDE_EN.md)
|
|
15
15
|
|
|
16
|
-
## Neu in 0.5.
|
|
16
|
+
## Neu in 0.5.3: Direktsteuerung in der Alexa-App
|
|
17
17
|
|
|
18
18
|
**Marktwechsel direkt in der normalen Alexa-Einkaufsliste auf dem Handy – ohne zusätzliche App und ohne Zugriff auf die ioBroker-Verwaltung.**
|
|
19
19
|
|
|
20
|
-
**Vier Handy-
|
|
20
|
+
**Vier Handy-Funktionen (deutsch/englisch: W/C, F/E, H/U, R/D):** `13WNETTO` wechselt Artikel 13 **vorübergehend** zu NETTO, `13FNETTO` ordnet ihn **dauerhaft** NETTO zu. `25H3` verschiebt Artikel 25 **drei echte Artikelpositionen nach oben**, `25R3` **drei nach unten** – jeweils nur innerhalb desselben Marktes, ohne Marktüberschriften mitzuzählen. H/R verändern keine gespeicherten Laufwege oder Produktgruppen.
|
|
21
21
|
|
|
22
22
|
Füge einen Steuerbefehl wie `13WNETTO` als normalen Listeneintrag hinzu: `13` ist die **aktuell sichtbare zweistellige Nummer vor dem Artikel**, `W` bedeutet Wechsel und `NETTO` ist ein bereits angelegter Zielmarkt. Du kannst mehrere Befehle hintereinander eingeben. Groß-/Kleinschreibung ist egal; eindeutige kleine Tippfehler im Marktnamen werden korrigiert.
|
|
23
23
|
|
|
24
24
|
**Bitte Geduld:** Ein neuer Sortiervorgang erfolgt **niemals sofort**. Abhängig von Internetverbindung, Geschwindigkeit und Alexa kann es **bis zu fünf Minuten** dauern. Solange der Befehl noch in der Einkaufsliste steht, ist das zunächst normal. **Erst nach fünf Minuten** Internet-/Alexa-Verbindung sowie Artikelnummer und Marktnamen prüfen. Bei einem Eingabefehler den Befehl in Alexa abhaken und korrigiert neu eingeben.
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Ein Wechsel mit **W** gilt nur für diesen Einkauf; **F** ändert die dauerhafte Marktzuordnung. Die gespeicherte Produktzuordnung und die Lernfunktion bleiben unverändert. Erfolgreiche Steuerbefehle verschwinden aus der Liste. Bleibt ein Befehl stehen, Nummer und Markt prüfen, den falschen Befehl in Alexa abhaken und richtig neu eingeben. **Nummern vor Marktüberschriften können nicht zum Verschieben von Artikeln verwendet werden.** Bei mehrdeutigen Befehlen wird nichts geraten.
|
|
27
27
|
|
|
28
|
-
Die Funktion ist
|
|
28
|
+
Die Funktion ist seit der veröffentlichten Version 0.5.2 verfügbar.
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Frühere Verbesserungen (0.5.1)
|
|
31
31
|
|
|
32
32
|
Diese Version behebt die gemeldeten Speicher- und Verschiebefehler der neuen Verwaltungsseite. Im Mittelpunkt steht die Bedienung am Handy während des Einkaufs:
|
|
33
33
|
|
|
@@ -125,7 +125,12 @@ ShoppingRoute wird unter der **[MIT-Lizenz](LICENSE)** veröffentlicht. Frühere
|
|
|
125
125
|
|
|
126
126
|
## Changelog
|
|
127
127
|
|
|
128
|
-
### 0.5.
|
|
128
|
+
### 0.5.3 (2026-10-17)
|
|
129
|
+
|
|
130
|
+
- Deutsche und englische Befehle: W/C temporär, F/E dauerhaft, H/U hoch, R/D runter.
|
|
131
|
+
- D bedeutet nun Runter; F ersetzt das bisherige dauerhafte D.
|
|
132
|
+
|
|
133
|
+
### 0.5.2 (2026-10-17)
|
|
129
134
|
|
|
130
135
|
- Temporärer Marktwechsel über `NNWMARKT` direkt in der normalen Alexa-Handy-App.
|
|
131
136
|
- Mehrere Befehle pro Sortierlauf, eindeutige Tippfehlerkorrektur und Schutz vor ungültigen Artikelnummern.
|
package/build/lib/mobile-move.js
CHANGED
|
@@ -4,7 +4,7 @@ exports.resolveMobileMarket = resolveMobileMarket;
|
|
|
4
4
|
exports.resolveMobileMoves = resolveMobileMoves;
|
|
5
5
|
const market_plan_1 = require("./market-plan");
|
|
6
6
|
const prefix_sort_1 = require("./prefix-sort");
|
|
7
|
-
const COMMAND_PATTERN = /^(\d{2})([
|
|
7
|
+
const COMMAND_PATTERN = /^(\d{2})([WCFEHUDR])(.+)$/i;
|
|
8
8
|
function normalized(value) {
|
|
9
9
|
return value.trim().normalize('NFKC').toLocaleUpperCase('de-DE');
|
|
10
10
|
}
|
|
@@ -66,10 +66,11 @@ function resolveMobileMoves(snapshot, markets) {
|
|
|
66
66
|
const moves = [];
|
|
67
67
|
for (const { item: command, match } of commands) {
|
|
68
68
|
const number = Number(match[1]);
|
|
69
|
-
const
|
|
70
|
-
const
|
|
69
|
+
const letter = match[2].toUpperCase();
|
|
70
|
+
const mode = { W: 'W', C: 'W', F: 'F', E: 'F', H: 'H', U: 'H', R: 'R', D: 'R' }[letter];
|
|
71
|
+
const market = mode === 'W' || mode === 'F' ? resolveMobileMarket(match[3], markets) : undefined;
|
|
71
72
|
const steps = mode === 'H' || mode === 'R' ? Number(match[3]) : undefined;
|
|
72
|
-
const validArgument = mode === 'W' || mode === '
|
|
73
|
+
const validArgument = mode === 'W' || mode === 'F' ? Boolean(market) : /^\d{1,2}$/.test(match[3]) && Number.isInteger(steps) && steps > 0;
|
|
73
74
|
const candidates = active.filter(item => !commandIds.has(String(item.id)) &&
|
|
74
75
|
!(0, market_plan_1.isMarketHeader)((0, prefix_sort_1.stripSortPrefix)(item.value), markets) &&
|
|
75
76
|
(0, prefix_sort_1.parseSortPrefix)(item.value)?.number === number);
|
package/build/main.js
CHANGED
|
@@ -51,7 +51,7 @@ const state_change_1 = require("./lib/state-change");
|
|
|
51
51
|
const mobile_move_1 = require("./lib/mobile-move");
|
|
52
52
|
const config_protection_1 = require("./lib/config-protection");
|
|
53
53
|
const direct_sort_lifecycle_1 = require("./lib/direct-sort-lifecycle");
|
|
54
|
-
const VERSION = '0.5.
|
|
54
|
+
const VERSION = '0.5.3';
|
|
55
55
|
const COLLECT_WINDOW_MS = 5000;
|
|
56
56
|
class MissingAlexaListError extends Error {
|
|
57
57
|
}
|
|
@@ -1233,7 +1233,7 @@ class ShoppingRoute extends utils.Adapter {
|
|
|
1233
1233
|
for (const move of mobile.moves) {
|
|
1234
1234
|
// D modifies the product catalogue; W only creates a temporary list override.
|
|
1235
1235
|
const parsed = (0, parser_1.parseItem)((0, prefix_sort_1.stripSortPrefix)(move.target.value), this.markets, this.products, this.fallbackMarket, this.priorityMarketForList(listName));
|
|
1236
|
-
if (move.mode === '
|
|
1236
|
+
if (move.mode === 'F' && (!parsed.productText || parsed.explicitMarket)) {
|
|
1237
1237
|
this.log.warn(`${listName}: permanent move needs an unambiguous product without an explicit market suffix.`);
|
|
1238
1238
|
return;
|
|
1239
1239
|
}
|
|
@@ -1311,7 +1311,7 @@ class ShoppingRoute extends utils.Adapter {
|
|
|
1311
1311
|
this.log.warn(`${listName}: mobile move failed; remaining commands were left intact: ${String(error)}`);
|
|
1312
1312
|
return;
|
|
1313
1313
|
}
|
|
1314
|
-
if (move.mode === '
|
|
1314
|
+
if (move.mode === 'F') {
|
|
1315
1315
|
const product = (0, parser_1.findProduct)(parsed.productText, this.products);
|
|
1316
1316
|
if (product) {
|
|
1317
1317
|
this.runtimeProducts = this.runtimeProducts.map(entry => entry === product ? { ...entry, defaultMarket: move.market } : entry);
|
package/io-package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "shoppingroute",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.3",
|
|
5
5
|
"titleLang": {
|
|
6
6
|
"en": "ShoppingRoute",
|
|
7
7
|
"de": "ShoppingRoute",
|
|
@@ -61,6 +61,19 @@
|
|
|
61
61
|
"icon": "shoppingroute.png",
|
|
62
62
|
"tier": 3,
|
|
63
63
|
"news": {
|
|
64
|
+
"0.5.3": {
|
|
65
|
+
"en": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
66
|
+
"de": "Englische Befehle C/E/U/D ergänzen W/F/H/R für temporäre und dauerhafte Marktwechsel sowie Artikelverschiebungen. D bedeutet jetzt Runter, F ersetzt das bisherige dauerhafte D.",
|
|
67
|
+
"ru": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
68
|
+
"pt": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
69
|
+
"nl": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
70
|
+
"fr": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
71
|
+
"it": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
72
|
+
"es": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
73
|
+
"pl": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
74
|
+
"uk": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D.",
|
|
75
|
+
"zh-cn": "Adds English command aliases C/E/U/D alongside German W/F/H/R for temporary store changes, permanent assignments and item reordering. D now means Down; F replaces the former permanent D."
|
|
76
|
+
},
|
|
64
77
|
"0.5.2": {
|
|
65
78
|
"en": "Adds temporary market moves directly from the standard Alexa mobile shopping list using NNWMARKET, including multiple commands, safe item-number matching, and typo-tolerant market names. No extra mobile app required.",
|
|
66
79
|
"de": "Temporäre Marktwechsel direkt in der normalen Alexa-Einkaufsliste per NNWMARKT: mehrere Befehle, sichere Artikelnummern-Zuordnung und Tippfehlerkorrektur bei Märkten. Keine zusätzliche Handy-App nötig.",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iobroker.shoppingroute",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.3",
|
|
4
4
|
"description": "Smart Alexa shopping-list routing by market, product group and individual store walking route with learning, multi-list support and API protection.",
|
|
5
5
|
"author": "RaviniZib <zib@ravini.org>",
|
|
6
6
|
"license": "MIT",
|