iobroker.parcelapp 0.1.5 → 0.2.0

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 CHANGED
@@ -19,10 +19,10 @@ ioBroker adapter that connects to the [parcel.app](https://parcelapp.net) API an
19
19
 
20
20
  - **300+ carriers** — DHL, FedEx, UPS, Amazon, Hermes, GLS, DPD, and many more via parcel.app
21
21
  - **Per-package ioBroker states** — carrier, status, tracking number, delivery window, last event, last location
22
- - **Summary states** — active count, today count, combined delivery window, full JSON data
22
+ - **Summary states** — active count, today count, combined delivery window
23
23
  - **Delivery time estimates** — today, tomorrow, in X days with combined time window
24
24
  - **Automatic polling** with configurable interval (5–60 minutes)
25
- - **Automatic cleanup** of delivered packages from the ioBroker object tree
25
+ - **Configurable cleanup** of delivered packages auto-remove or keep as "Delivered"
26
26
  - **Add deliveries** via sendTo message from scripts or other adapters
27
27
  - **Admin UI** with connection test, polling settings, and status language selection
28
28
  - **Multilingual status labels** (German/English)
@@ -44,7 +44,7 @@ ioBroker adapter that connects to the [parcel.app](https://parcelapp.net) API an
44
44
  |--------|-------------|---------|
45
45
  | **API Key** | Your parcel.app API key (get it at [web.parcelapp.net](https://web.parcelapp.net)) | — |
46
46
  | **Poll Interval** | How often to fetch updates (minutes) | 10 |
47
- | **Filter Mode** | Active (current only) or Recent (includes completed) | Active |
47
+ | **Auto-remove delivered** | Remove delivered packages from states automatically | Yes |
48
48
  | **Status Language** | Language for status labels (German/English) | German |
49
49
 
50
50
  ---
@@ -57,8 +57,7 @@ parcelapp.0.
57
57
  ├── summary.
58
58
  │ ├── activeCount — Number of active deliveries
59
59
  │ ├── todayCount — Number of deliveries expected today
60
- ├── deliveryWindow — Combined delivery window for today
61
- │ └── json — All active deliveries as JSON
60
+ └── deliveryWindow — Combined delivery window for today
62
61
  └── deliveries.
63
62
  └── {packageId}. — One device per package
64
63
  ├── carrier — Carrier name (e.g. DHL Express)
@@ -86,7 +85,6 @@ parcelapp.0.
86
85
  ### No deliveries shown
87
86
  - The API returns cached data — new deliveries may take a few minutes to appear
88
87
  - Check if you have active deliveries in the parcel.app
89
- - Try changing the filter mode to "Recent" to see completed deliveries
90
88
 
91
89
  ### Rate limit
92
90
  - The parcel.app API allows 20 requests per hour
@@ -96,6 +94,11 @@ parcelapp.0.
96
94
 
97
95
  ## Changelog
98
96
 
97
+ ### 0.2.0 (2026-03-25)
98
+ - Added option to keep delivered packages in states
99
+ - Simplified admin UI to single page
100
+ - Removed redundant summary.json state
101
+
99
102
  ### 0.1.5 (2026-03-24)
100
103
  - Added auto-merge config, weekly Dependabot schedule
101
104
 
@@ -110,7 +113,6 @@ parcelapp.0.
110
113
 
111
114
  ### 0.1.1 (2026-03-23)
112
115
  - Redesigned adapter logo
113
- - Fixed repochecker issues
114
116
 
115
117
  ### 0.1.0 (2026-03-23)
116
118
  - Initial release
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Verbindung",
3
- "tab_settings": "Einstellungen",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Unterstütze diesen Adapter",
3
+ "aboutInfo": "Dieser Adapter ist kostenlos und Open Source. Wenn du ihn nützlich findest, unterstütze die Entwicklung gerne mit einer kleinen Spende.",
4
+ "aboutTab": "Info",
5
5
  "apiKeyInfo": "Gib deinen parcel.app API-Schlüssel ein. Ein Premium-Abo wird benötigt. Den Schlüssel findest du unter web.parcelapp.net → API-Bereich.",
6
- "label_apiKey": "API-Schlüssel",
7
6
  "btn_checkConnection": "Verbindung testen",
8
- "msg_connectionOk": "Verbindung erfolgreich!",
9
- "msg_connectionFailed": "Verbindung fehlgeschlagen!",
10
- "header_polling": "Abfrage",
11
- "label_pollInterval": "Abfrageintervall (Minuten)",
12
- "tooltip_pollInterval": "Wie oft Lieferupdates abgefragt werden (5-60 Minuten, Standard: 10). Rate-Limit: 20 Anfragen/Stunde.",
13
- "label_filterMode": "Filtermodus",
14
- "tooltip_filterMode": "Aktiv: nur laufende Lieferungen. Kürzlich: inklusive kürzlich zugestellter.",
15
- "filterMode_active": "Nur aktive Lieferungen",
16
- "filterMode_recent": "Kürzliche Lieferungen",
7
+ "donateKofi": "Unterstützen auf Ko-fi",
8
+ "donatePaypal": "Spenden via PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Lieferungen",
17
11
  "header_display": "Anzeige",
12
+ "header_polling": "Abfrage",
13
+ "label_apiKey": "API-Schlüssel",
14
+ "label_autoRemoveDelivered": "Zugestellte Pakete automatisch entfernen",
18
15
  "label_language": "Status-Sprache",
19
- "tooltip_language": "Sprache für Statusmeldungen (z.B. 'Unterwegs' vs 'In Transit')",
16
+ "label_pollInterval": "Abfrageintervall (Minuten)",
20
17
  "lang_de": "Deutsch",
21
18
  "lang_en": "Englisch",
22
- "aboutTab": "Info",
23
- "aboutHeader": "Unterstütze diesen Adapter",
24
- "aboutInfo": "Dieser Adapter ist kostenlos und Open Source. Wenn du ihn nützlich findest, unterstütze die Entwicklung gerne mit einer kleinen Spende.",
25
- "donateKofi": "Unterstützen auf Ko-fi",
26
- "donatePaypal": "Spenden via PayPal"
19
+ "msg_connectionFailed": "Verbindung fehlgeschlagen!",
20
+ "msg_connectionOk": "Verbindung erfolgreich!",
21
+ "tooltip_autoRemoveDelivered": "Wenn aktiviert, werden zugestellte Pakete automatisch aus dem Objektbaum entfernt. Wenn deaktiviert, bleiben sie mit Status 'Zugestellt' bestehen, bis sie in parcel.app gelöscht werden.",
22
+ "tooltip_language": "Sprache für Statusmeldungen (z.B. 'Unterwegs' vs 'In Transit')",
23
+ "tooltip_pollInterval": "Wie oft Lieferupdates abgefragt werden (5-60 Minuten, Standard: 10). Rate-Limit: 20 Anfragen/Stunde."
27
24
  }
@@ -1,6 +1,4 @@
1
1
  {
2
- "tab_connection": "Connection",
3
- "tab_settings": "Settings",
4
2
  "header_connection": "parcel.app API",
5
3
  "apiKeyInfo": "Enter your parcel.app API key. A Premium subscription is required. Get your key at web.parcelapp.net → API panel.",
6
4
  "label_apiKey": "API Key",
@@ -10,10 +8,9 @@
10
8
  "header_polling": "Polling",
11
9
  "label_pollInterval": "Poll Interval (minutes)",
12
10
  "tooltip_pollInterval": "How often to fetch delivery updates (5-60 minutes, default: 10). Rate limit: 20 requests/hour.",
13
- "label_filterMode": "Filter Mode",
14
- "tooltip_filterMode": "Active: only current deliveries. Recent: includes recently completed.",
15
- "filterMode_active": "Active deliveries only",
16
- "filterMode_recent": "Recent deliveries",
11
+ "header_delivery": "Delivery",
12
+ "label_autoRemoveDelivered": "Automatically remove delivered packages",
13
+ "tooltip_autoRemoveDelivered": "When enabled, delivered packages are automatically removed from the state tree. When disabled, they remain with status 'Delivered' until deleted in parcel.app.",
17
14
  "header_display": "Display",
18
15
  "label_language": "Status Language",
19
16
  "tooltip_language": "Language for delivery status labels (e.g. 'In Transit' vs 'Unterwegs')",
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Conexión",
3
- "tab_settings": "Configuración",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Apoya este adaptador",
3
+ "aboutInfo": "Este adaptador es gratuito y de código abierto. Si lo encuentras útil, considera apoyar el desarrollo con una pequeña donación.",
4
+ "aboutTab": "Acerca de",
5
5
  "apiKeyInfo": "Introduce tu clave API de parcel.app. Se requiere una suscripción Premium. Obtén tu clave en web.parcelapp.net → panel API.",
6
- "label_apiKey": "Clave API",
7
6
  "btn_checkConnection": "Probar conexión",
8
- "msg_connectionOk": "¡Conexión exitosa!",
9
- "msg_connectionFailed": "¡Error de conexión!",
10
- "header_polling": "Consulta",
11
- "label_pollInterval": "Intervalo de consulta (minutos)",
12
- "tooltip_pollInterval": "Con qué frecuencia obtener actualizaciones de entrega (5-60 minutos, predeterminado: 10). Límite: 20 solicitudes/hora.",
13
- "label_filterMode": "Modo de filtro",
14
- "tooltip_filterMode": "Activo: solo entregas actuales. Reciente: incluye entregas recientemente completadas.",
15
- "filterMode_active": "Solo entregas activas",
16
- "filterMode_recent": "Entregas recientes",
7
+ "donateKofi": "Apoyar en Ko-fi",
8
+ "donatePaypal": "Donar vía PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Entregas",
17
11
  "header_display": "Visualización",
12
+ "header_polling": "Consulta",
13
+ "label_apiKey": "Clave API",
14
+ "label_autoRemoveDelivered": "Eliminar automáticamente paquetes entregados",
18
15
  "label_language": "Idioma de estados",
19
- "tooltip_language": "Idioma para las etiquetas de estado de entrega",
16
+ "label_pollInterval": "Intervalo de consulta (minutos)",
20
17
  "lang_de": "Alemán",
21
18
  "lang_en": "Inglés",
22
- "aboutTab": "Acerca de",
23
- "aboutHeader": "Apoya este adaptador",
24
- "aboutInfo": "Este adaptador es gratuito y de código abierto. Si lo encuentras útil, considera apoyar el desarrollo con una pequeña donación.",
25
- "donateKofi": "Apoyar en Ko-fi",
26
- "donatePaypal": "Donar vía PayPal"
19
+ "msg_connectionFailed": "¡Error de conexión!",
20
+ "msg_connectionOk": "¡Conexión exitosa!",
21
+ "tooltip_autoRemoveDelivered": "Cuando está activado, los paquetes entregados se eliminan automáticamente del árbol de estados. Cuando está desactivado, permanecen con el estado 'Entregado' hasta ser eliminados en parcel.app.",
22
+ "tooltip_language": "Idioma para las etiquetas de estado de entrega",
23
+ "tooltip_pollInterval": "Con qué frecuencia obtener actualizaciones de entrega (5-60 minutos, predeterminado: 10). Límite: 20 solicitudes/hora."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Connexion",
3
- "tab_settings": "Paramètres",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Soutenez cet adaptateur",
3
+ "aboutInfo": "Cet adaptateur est gratuit et open source. Si vous le trouvez utile, pensez à soutenir son développement par un petit don.",
4
+ "aboutTab": "À propos",
5
5
  "apiKeyInfo": "Entrez votre clé API parcel.app. Un abonnement Premium est requis. Obtenez votre clé sur web.parcelapp.net → panneau API.",
6
- "label_apiKey": "Clé API",
7
6
  "btn_checkConnection": "Tester la connexion",
8
- "msg_connectionOk": "Connexion réussie !",
9
- "msg_connectionFailed": "Échec de la connexion !",
10
- "header_polling": "Interrogation",
11
- "label_pollInterval": "Intervalle d interrogation (minutes)",
12
- "tooltip_pollInterval": "Fréquence de récupération des mises à jour de livraison (5-60 minutes, défaut : 10). Limite : 20 requêtes/heure.",
13
- "label_filterMode": "Mode de filtrage",
14
- "tooltip_filterMode": "Actif : uniquement les livraisons en cours. Récent : inclut les livraisons récemment terminées.",
15
- "filterMode_active": "Livraisons actives uniquement",
16
- "filterMode_recent": "Livraisons récentes",
7
+ "donateKofi": "Soutenir sur Ko-fi",
8
+ "donatePaypal": "Faire un don via PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Livraisons",
17
11
  "header_display": "Affichage",
12
+ "header_polling": "Interrogation",
13
+ "label_apiKey": "Clé API",
14
+ "label_autoRemoveDelivered": "Supprimer automatiquement les colis livrés",
18
15
  "label_language": "Langue des statuts",
19
- "tooltip_language": "Langue pour les libellés de statut de livraison",
16
+ "label_pollInterval": "Intervalle d interrogation (minutes)",
20
17
  "lang_de": "Allemand",
21
18
  "lang_en": "Anglais",
22
- "aboutTab": "À propos",
23
- "aboutHeader": "Soutenez cet adaptateur",
24
- "aboutInfo": "Cet adaptateur est gratuit et open source. Si vous le trouvez utile, pensez à soutenir son développement par un petit don.",
25
- "donateKofi": "Soutenir sur Ko-fi",
26
- "donatePaypal": "Faire un don via PayPal"
19
+ "msg_connectionFailed": "Échec de la connexion !",
20
+ "msg_connectionOk": "Connexion réussie !",
21
+ "tooltip_autoRemoveDelivered": "Lorsque activé, les colis livrés sont automatiquement supprimés de l'arborescence d'états. Lorsque désactivé, ils restent avec le statut 'Livré' jusqu'à leur suppression dans parcel.app.",
22
+ "tooltip_language": "Langue pour les libellés de statut de livraison",
23
+ "tooltip_pollInterval": "Fréquence de récupération des mises à jour de livraison (5-60 minutes, défaut : 10). Limite : 20 requêtes/heure."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Connessione",
3
- "tab_settings": "Impostazioni",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Supporta questo adattatore",
3
+ "aboutInfo": "Questo adattatore è gratuito e open source. Se lo trovi utile, considera di supportare lo sviluppo con una piccola donazione.",
4
+ "aboutTab": "Info",
5
5
  "apiKeyInfo": "Inserisci la tua chiave API parcel.app. È necessario un abbonamento Premium. Ottieni la tua chiave su web.parcelapp.net → pannello API.",
6
- "label_apiKey": "Chiave API",
7
6
  "btn_checkConnection": "Testa connessione",
8
- "msg_connectionOk": "Connessione riuscita!",
9
- "msg_connectionFailed": "Connessione fallita!",
10
- "header_polling": "Polling",
11
- "label_pollInterval": "Intervallo di polling (minuti)",
12
- "tooltip_pollInterval": "Frequenza di aggiornamento delle consegne (5-60 minuti, predefinito: 10). Limite: 20 richieste/ora.",
13
- "label_filterMode": "Modalità filtro",
14
- "tooltip_filterMode": "Attivo: solo consegne in corso. Recente: include consegne recentemente completate.",
15
- "filterMode_active": "Solo consegne attive",
16
- "filterMode_recent": "Consegne recenti",
7
+ "donateKofi": "Supporta su Ko-fi",
8
+ "donatePaypal": "Dona tramite PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Consegne",
17
11
  "header_display": "Visualizzazione",
12
+ "header_polling": "Polling",
13
+ "label_apiKey": "Chiave API",
14
+ "label_autoRemoveDelivered": "Rimuovi automaticamente i pacchi consegnati",
18
15
  "label_language": "Lingua degli stati",
19
- "tooltip_language": "Lingua per le etichette di stato della consegna",
16
+ "label_pollInterval": "Intervallo di polling (minuti)",
20
17
  "lang_de": "Tedesco",
21
18
  "lang_en": "Inglese",
22
- "aboutTab": "Info",
23
- "aboutHeader": "Supporta questo adattatore",
24
- "aboutInfo": "Questo adattatore è gratuito e open source. Se lo trovi utile, considera di supportare lo sviluppo con una piccola donazione.",
25
- "donateKofi": "Supporta su Ko-fi",
26
- "donatePaypal": "Dona tramite PayPal"
19
+ "msg_connectionFailed": "Connessione fallita!",
20
+ "msg_connectionOk": "Connessione riuscita!",
21
+ "tooltip_autoRemoveDelivered": "Se attivato, i pacchi consegnati vengono automaticamente rimossi dall'albero degli stati. Se disattivato, rimangono con lo stato 'Consegnato' fino alla cancellazione in parcel.app.",
22
+ "tooltip_language": "Lingua per le etichette di stato della consegna",
23
+ "tooltip_pollInterval": "Frequenza di aggiornamento delle consegne (5-60 minuti, predefinito: 10). Limite: 20 richieste/ora."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Verbinding",
3
- "tab_settings": "Instellingen",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Steun deze adapter",
3
+ "aboutInfo": "Deze adapter is gratis en open source. Als je hem nuttig vindt, overweeg dan de ontwikkeling te steunen met een kleine donatie.",
4
+ "aboutTab": "Over",
5
5
  "apiKeyInfo": "Voer je parcel.app API-sleutel in. Een Premium-abonnement is vereist. Haal je sleutel op via web.parcelapp.net → API-paneel.",
6
- "label_apiKey": "API-sleutel",
7
6
  "btn_checkConnection": "Verbinding testen",
8
- "msg_connectionOk": "Verbinding succesvol!",
9
- "msg_connectionFailed": "Verbinding mislukt!",
10
- "header_polling": "Polling",
11
- "label_pollInterval": "Polling-interval (minuten)",
12
- "tooltip_pollInterval": "Hoe vaak bezorgingsupdates ophalen (5-60 minuten, standaard: 10). Limiet: 20 verzoeken/uur.",
13
- "label_filterMode": "Filtermodus",
14
- "tooltip_filterMode": "Actief: alleen huidige bezorgingen. Recent: inclusief recent afgeleverde.",
15
- "filterMode_active": "Alleen actieve bezorgingen",
16
- "filterMode_recent": "Recente bezorgingen",
7
+ "donateKofi": "Steunen op Ko-fi",
8
+ "donatePaypal": "Doneren via PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Leveringen",
17
11
  "header_display": "Weergave",
12
+ "header_polling": "Polling",
13
+ "label_apiKey": "API-sleutel",
14
+ "label_autoRemoveDelivered": "Afgeleverde pakketten automatisch verwijderen",
18
15
  "label_language": "Statustaal",
19
- "tooltip_language": "Taal voor bezorgingsstatussen",
16
+ "label_pollInterval": "Polling-interval (minuten)",
20
17
  "lang_de": "Duits",
21
18
  "lang_en": "Engels",
22
- "aboutTab": "Over",
23
- "aboutHeader": "Steun deze adapter",
24
- "aboutInfo": "Deze adapter is gratis en open source. Als je hem nuttig vindt, overweeg dan de ontwikkeling te steunen met een kleine donatie.",
25
- "donateKofi": "Steunen op Ko-fi",
26
- "donatePaypal": "Doneren via PayPal"
19
+ "msg_connectionFailed": "Verbinding mislukt!",
20
+ "msg_connectionOk": "Verbinding succesvol!",
21
+ "tooltip_autoRemoveDelivered": "Indien ingeschakeld worden afgeleverde pakketten automatisch uit de objectboom verwijderd. Indien uitgeschakeld blijven ze met status 'Afgeleverd' bestaan tot ze in parcel.app worden verwijderd.",
22
+ "tooltip_language": "Taal voor bezorgingsstatussen",
23
+ "tooltip_pollInterval": "Hoe vaak bezorgingsupdates ophalen (5-60 minuten, standaard: 10). Limiet: 20 verzoeken/uur."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Połączenie",
3
- "tab_settings": "Ustawienia",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Wesprzyj ten adapter",
3
+ "aboutInfo": "Ten adapter jest darmowy i open source. Jeśli uważasz go za przydatny, rozważ wsparcie rozwoju niewielką darowizną.",
4
+ "aboutTab": "O programie",
5
5
  "apiKeyInfo": "Wprowadź klucz API parcel.app. Wymagana subskrypcja Premium. Uzyskaj klucz na web.parcelapp.net → panel API.",
6
- "label_apiKey": "Klucz API",
7
6
  "btn_checkConnection": "Testuj połączenie",
8
- "msg_connectionOk": "Połączenie udane!",
9
- "msg_connectionFailed": "Połączenie nieudane!",
10
- "header_polling": "Odpytywanie",
11
- "label_pollInterval": "Interwał odpytywania (minuty)",
12
- "tooltip_pollInterval": "Jak często pobierać aktualizacje dostaw (5-60 minut, domyślnie: 10). Limit: 20 zapytań/godzinę.",
13
- "label_filterMode": "Tryb filtrowania",
14
- "tooltip_filterMode": "Aktywne: tylko bieżące dostawy. Ostatnie: w tym niedawno ukończone.",
15
- "filterMode_active": "Tylko aktywne dostawy",
16
- "filterMode_recent": "Ostatnie dostawy",
7
+ "donateKofi": "Wesprzyj na Ko-fi",
8
+ "donatePaypal": "Przekaż darowiznę przez PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Dostawy",
17
11
  "header_display": "Wyświetlanie",
12
+ "header_polling": "Odpytywanie",
13
+ "label_apiKey": "Klucz API",
14
+ "label_autoRemoveDelivered": "Automatycznie usuwaj dostarczone przesyłki",
18
15
  "label_language": "Język statusów",
19
- "tooltip_language": "Język dla etykiet statusu dostawy",
16
+ "label_pollInterval": "Interwał odpytywania (minuty)",
20
17
  "lang_de": "Niemiecki",
21
18
  "lang_en": "Angielski",
22
- "aboutTab": "O programie",
23
- "aboutHeader": "Wesprzyj ten adapter",
24
- "aboutInfo": "Ten adapter jest darmowy i open source. Jeśli uważasz go za przydatny, rozważ wsparcie rozwoju niewielką darowizną.",
25
- "donateKofi": "Wesprzyj na Ko-fi",
26
- "donatePaypal": "Przekaż darowiznę przez PayPal"
19
+ "msg_connectionFailed": "Połączenie nieudane!",
20
+ "msg_connectionOk": "Połączenie udane!",
21
+ "tooltip_autoRemoveDelivered": "Po włączeniu dostarczone przesyłki automatycznie usuwane z drzewa stanów. Po wyłączeniu pozostają ze statusem 'Dostarczono' do usunięcia w parcel.app.",
22
+ "tooltip_language": "Język dla etykiet statusu dostawy",
23
+ "tooltip_pollInterval": "Jak często pobierać aktualizacje dostaw (5-60 minut, domyślnie: 10). Limit: 20 zapytań/godzinę."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Conexão",
3
- "tab_settings": "Configurações",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Apoie este adaptador",
3
+ "aboutInfo": "Este adaptador é gratuito e de código aberto. Se você o achar útil, considere apoiar o desenvolvimento com uma pequena doação.",
4
+ "aboutTab": "Sobre",
5
5
  "apiKeyInfo": "Insira sua chave API do parcel.app. É necessária uma assinatura Premium. Obtenha sua chave em web.parcelapp.net → painel API.",
6
- "label_apiKey": "Chave API",
7
6
  "btn_checkConnection": "Testar Conexão",
8
- "msg_connectionOk": "Conexão bem-sucedida!",
9
- "msg_connectionFailed": "Falha na conexão!",
10
- "header_polling": "Consulta",
11
- "label_pollInterval": "Intervalo de consulta (minutos)",
12
- "tooltip_pollInterval": "Com que frequência buscar atualizações de entrega (5-60 minutos, padrão: 10). Limite: 20 solicitações/hora.",
13
- "label_filterMode": "Modo de filtro",
14
- "tooltip_filterMode": "Ativo: apenas entregas atuais. Recente: inclui entregas recentemente concluídas.",
15
- "filterMode_active": "Apenas entregas ativas",
16
- "filterMode_recent": "Entregas recentes",
7
+ "donateKofi": "Apoiar no Ko-fi",
8
+ "donatePaypal": "Doar via PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Entregas",
17
11
  "header_display": "Exibição",
12
+ "header_polling": "Consulta",
13
+ "label_apiKey": "Chave API",
14
+ "label_autoRemoveDelivered": "Remover automaticamente pacotes entregues",
18
15
  "label_language": "Idioma do status",
19
- "tooltip_language": "Idioma para os rótulos de status de entrega",
16
+ "label_pollInterval": "Intervalo de consulta (minutos)",
20
17
  "lang_de": "Alemão",
21
18
  "lang_en": "Inglês",
22
- "aboutTab": "Sobre",
23
- "aboutHeader": "Apoie este adaptador",
24
- "aboutInfo": "Este adaptador é gratuito e de código aberto. Se você o achar útil, considere apoiar o desenvolvimento com uma pequena doação.",
25
- "donateKofi": "Apoiar no Ko-fi",
26
- "donatePaypal": "Doar via PayPal"
19
+ "msg_connectionFailed": "Falha na conexão!",
20
+ "msg_connectionOk": "Conexão bem-sucedida!",
21
+ "tooltip_autoRemoveDelivered": "Quando ativado, os pacotes entregues são automaticamente removidos da árvore de estados. Quando desativado, permanecem com o estado 'Entregue' até serem eliminados no parcel.app.",
22
+ "tooltip_language": "Idioma para os rótulos de status de entrega",
23
+ "tooltip_pollInterval": "Com que frequência buscar atualizações de entrega (5-60 minutos, padrão: 10). Limite: 20 solicitações/hora."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "Соединение",
3
- "tab_settings": "Настройки",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Поддержите этот адаптер",
3
+ "aboutInfo": "Этот адаптер бесплатный и с открытым исходным кодом. Если он вам полезен, поддержите разработку небольшим пожертвованием.",
4
+ "aboutTab": "О программе",
5
5
  "apiKeyInfo": "Введите API-ключ parcel.app. Требуется Premium-подписка. Получите ключ на web.parcelapp.net → раздел API.",
6
- "label_apiKey": "API-ключ",
7
6
  "btn_checkConnection": "Проверить соединение",
8
- "msg_connectionOk": "Соединение успешно!",
9
- "msg_connectionFailed": "Ошибка соединения!",
10
- "header_polling": "Опрос",
11
- "label_pollInterval": "Интервал опроса (минуты)",
12
- "tooltip_pollInterval": "Как часто получать обновления доставки (5-60 минут, по умолчанию: 10). Лимит: 20 запросов/час.",
13
- "label_filterMode": "Режим фильтра",
14
- "tooltip_filterMode": "Активные: только текущие доставки. Недавние: включая недавно доставленные.",
15
- "filterMode_active": "Только активные доставки",
16
- "filterMode_recent": "Недавние доставки",
7
+ "donateKofi": "Поддержать на Ko-fi",
8
+ "donatePaypal": "Пожертвовать через PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Доставки",
17
11
  "header_display": "Отображение",
12
+ "header_polling": "Опрос",
13
+ "label_apiKey": "API-ключ",
14
+ "label_autoRemoveDelivered": "Автоматически удалять доставленные посылки",
18
15
  "label_language": "Язык статусов",
19
- "tooltip_language": "Язык для статусов доставки",
16
+ "label_pollInterval": "Интервал опроса (минуты)",
20
17
  "lang_de": "Немецкий",
21
18
  "lang_en": "Английский",
22
- "aboutTab": "О программе",
23
- "aboutHeader": "Поддержите этот адаптер",
24
- "aboutInfo": "Этот адаптер бесплатный и с открытым исходным кодом. Если он вам полезен, поддержите разработку небольшим пожертвованием.",
25
- "donateKofi": "Поддержать на Ko-fi",
26
- "donatePaypal": "Пожертвовать через PayPal"
19
+ "msg_connectionFailed": "Ошибка соединения!",
20
+ "msg_connectionOk": "Соединение успешно!",
21
+ "tooltip_autoRemoveDelivered": "Если включено, доставленные посылки автоматически удаляются из дерева состояний. Если выключено, они остаются со статусом 'Доставлено' до удаления в parcel.app.",
22
+ "tooltip_language": "Язык для статусов доставки",
23
+ "tooltip_pollInterval": "Как часто получать обновления доставки (5-60 минут, по умолчанию: 10). Лимит: 20 запросов/час."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "З'єднання",
3
- "tab_settings": "Налаштування",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "Підтримайте цей адаптер",
3
+ "aboutInfo": "Цей адаптер безкоштовний та з відкритим кодом. Якщо він вам корисний, підтримайте розробку невеликою пожертвою.",
4
+ "aboutTab": "Про програму",
5
5
  "apiKeyInfo": "Введіть ваш API-ключ parcel.app. Потрібна Premium-підписка. Отримайте ключ на web.parcelapp.net → панель API.",
6
- "label_apiKey": "API-ключ",
7
6
  "btn_checkConnection": "Перевірити з'єднання",
8
- "msg_connectionOk": "З'єднання успішне!",
9
- "msg_connectionFailed": "Помилка з'єднання!",
10
- "header_polling": "Опитування",
11
- "label_pollInterval": "Інтервал опитування (хвилини)",
12
- "tooltip_pollInterval": "Як часто отримувати оновлення доставки (5-60 хвилин, за замовчуванням: 10). Ліміт: 20 запитів/годину.",
13
- "label_filterMode": "Режим фільтрування",
14
- "tooltip_filterMode": "Активні: лише поточні доставки. Нещодавні: включно з нещодавно завершеними.",
15
- "filterMode_active": "Лише активні доставки",
16
- "filterMode_recent": "Нещодавні доставки",
7
+ "donateKofi": "Підтримати на Ko-fi",
8
+ "donatePaypal": "Пожертвувати через PayPal",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "Доставки",
17
11
  "header_display": "Відображення",
12
+ "header_polling": "Опитування",
13
+ "label_apiKey": "API-ключ",
14
+ "label_autoRemoveDelivered": "Автоматично видаляти доставлені посилки",
18
15
  "label_language": "Мова статусів",
19
- "tooltip_language": "Мова для міток статусу доставки",
16
+ "label_pollInterval": "Інтервал опитування (хвилини)",
20
17
  "lang_de": "Німецька",
21
18
  "lang_en": "Англійська",
22
- "aboutTab": "Про програму",
23
- "aboutHeader": "Підтримайте цей адаптер",
24
- "aboutInfo": "Цей адаптер безкоштовний та з відкритим кодом. Якщо він вам корисний, підтримайте розробку невеликою пожертвою.",
25
- "donateKofi": "Підтримати на Ko-fi",
26
- "donatePaypal": "Пожертвувати через PayPal"
19
+ "msg_connectionFailed": "Помилка з'єднання!",
20
+ "msg_connectionOk": "З'єднання успішне!",
21
+ "tooltip_autoRemoveDelivered": "Якщо увімкнено, доставлені посилки автоматично видаляються з дерева станів. Якщо вимкнено, вони залишаються зі статусом 'Доставлено' до видалення в parcel.app.",
22
+ "tooltip_language": "Мова для міток статусу доставки",
23
+ "tooltip_pollInterval": "Як часто отримувати оновлення доставки (5-60 хвилин, за замовчуванням: 10). Ліміт: 20 запитів/годину."
27
24
  }
@@ -1,27 +1,24 @@
1
1
  {
2
- "tab_connection": "连接",
3
- "tab_settings": "设置",
4
- "header_connection": "parcel.app API",
2
+ "aboutHeader": "支持此适配器",
3
+ "aboutInfo": "此适配器免费且开源。如果您觉得有用,请考虑通过小额捐赠支持开发。",
4
+ "aboutTab": "关于",
5
5
  "apiKeyInfo": "输入你的 parcel.app API 密钥。需要 Premium 订阅。在 web.parcelapp.net → API 面板获取密钥。",
6
- "label_apiKey": "API 密钥",
7
6
  "btn_checkConnection": "测试连接",
8
- "msg_connectionOk": "连接成功!",
9
- "msg_connectionFailed": "连接失败!",
10
- "header_polling": "轮询",
11
- "label_pollInterval": "轮询间隔(分钟)",
12
- "tooltip_pollInterval": "多久获取一次快递更新(5-60分钟,默认:10)。速率限制:20次请求/小时。",
13
- "label_filterMode": "过滤模式",
14
- "tooltip_filterMode": "活跃:仅当前快递。最近:包括最近完成的。",
15
- "filterMode_active": "仅活跃快递",
16
- "filterMode_recent": "最近的快递",
7
+ "donateKofi": "在 Ko-fi 上支持",
8
+ "donatePaypal": "通过 PayPal 捐赠",
9
+ "header_connection": "parcel.app API",
10
+ "header_delivery": "配送",
17
11
  "header_display": "显示",
12
+ "header_polling": "轮询",
13
+ "label_apiKey": "API 密钥",
14
+ "label_autoRemoveDelivered": "自动移除已送达的包裹",
18
15
  "label_language": "状态语言",
19
- "tooltip_language": "快递状态标签的语言",
16
+ "label_pollInterval": "轮询间隔(分钟)",
20
17
  "lang_de": "德语",
21
18
  "lang_en": "英语",
22
- "aboutTab": "关于",
23
- "aboutHeader": "支持此适配器",
24
- "aboutInfo": "此适配器免费且开源。如果您觉得有用,请考虑通过小额捐赠支持开发。",
25
- "donateKofi": "在 Ko-fi 上支持",
26
- "donatePaypal": "通过 PayPal 捐赠"
19
+ "msg_connectionFailed": "连接失败!",
20
+ "msg_connectionOk": "连接成功!",
21
+ "tooltip_autoRemoveDelivered": "启用后,已送达的包裹会自动从状态树中移除。禁用后,它们将保持'已送达'状态,直到在 parcel.app 中删除。",
22
+ "tooltip_language": "快递状态标签的语言",
23
+ "tooltip_pollInterval": "多久获取一次快递更新(5-60分钟,默认:10)。速率限制:20次请求/小时。"
27
24
  }
@@ -1,131 +1,116 @@
1
1
  {
2
2
  "i18n": true,
3
- "type": "tabs",
3
+ "type": "panel",
4
4
  "items": {
5
- "connectionTab": {
6
- "type": "panel",
7
- "label": "tab_connection",
8
- "items": {
9
- "connectionHeader": {
10
- "type": "header",
11
- "text": "header_connection",
12
- "size": 4
13
- },
14
- "apiKeyInfo": {
15
- "type": "staticText",
16
- "text": "apiKeyInfo",
17
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
18
- "style": {
19
- "fontSize": 14,
20
- "color": "#666",
21
- "marginBottom": 16
22
- }
23
- },
24
- "apiKey": {
25
- "type": "password",
26
- "label": "label_apiKey",
27
- "xs": 12, "sm": 12, "md": 8, "lg": 8, "xl": 8
28
- },
29
- "checkConnection": {
30
- "newLine": true,
31
- "type": "sendTo",
32
- "label": "btn_checkConnection",
33
- "command": "checkConnection",
34
- "jsonData": "{\"apiKey\": \"${data.apiKey}\"}",
35
- "result": {
36
- "okText": "msg_connectionOk",
37
- "errorText": "msg_connectionFailed"
38
- },
39
- "xs": 12, "sm": 12, "md": 4, "lg": 4, "xl": 4
40
- }
41
- }
5
+ "connectionHeader": {
6
+ "type": "header",
7
+ "text": "header_connection",
8
+ "size": 4
42
9
  },
43
- "settingsTab": {
44
- "type": "panel",
45
- "label": "tab_settings",
46
- "items": {
47
- "pollingHeader": {
48
- "type": "header",
49
- "text": "header_polling",
50
- "size": 5
51
- },
52
- "pollInterval": {
53
- "type": "number",
54
- "label": "label_pollInterval",
55
- "tooltip": "tooltip_pollInterval",
56
- "min": 5,
57
- "max": 60,
58
- "default": 10,
59
- "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
60
- },
61
- "filterMode": {
62
- "type": "select",
63
- "label": "label_filterMode",
64
- "tooltip": "tooltip_filterMode",
65
- "default": "active",
66
- "options": [
67
- { "label": "filterMode_active", "value": "active" },
68
- { "label": "filterMode_recent", "value": "recent" }
69
- ],
70
- "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
71
- },
72
- "displayHeader": {
73
- "newLine": true,
74
- "type": "header",
75
- "text": "header_display",
76
- "size": 5
77
- },
78
- "language": {
79
- "type": "select",
80
- "label": "label_language",
81
- "tooltip": "tooltip_language",
82
- "default": "de",
83
- "options": [
84
- { "label": "lang_de", "value": "de" },
85
- { "label": "lang_en", "value": "en" }
86
- ],
87
- "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
88
- }
10
+ "apiKeyInfo": {
11
+ "type": "staticText",
12
+ "text": "apiKeyInfo",
13
+ "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
14
+ "style": {
15
+ "fontSize": 14,
16
+ "color": "#666",
17
+ "marginBottom": 16
89
18
  }
90
19
  },
91
- "aboutTab": {
92
- "type": "panel",
93
- "label": "aboutTab",
94
- "items": {
95
- "aboutHeader": {
96
- "type": "header",
97
- "text": "aboutHeader",
98
- "size": 4
99
- },
100
- "aboutInfo": {
101
- "type": "staticText",
102
- "text": "aboutInfo",
103
- "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
104
- "style": {
105
- "fontSize": 14,
106
- "marginBottom": 16
107
- }
108
- },
109
- "_kofiLink": {
110
- "type": "staticLink",
111
- "href": "https://ko-fi.com/krobipd",
112
- "label": "donateKofi",
113
- "button": true,
114
- "variant": "outlined",
115
- "color": "primary",
116
- "icon": "favorite",
117
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
118
- },
119
- "_paypalLink": {
120
- "type": "staticLink",
121
- "href": "https://paypal.me/krobipd",
122
- "label": "donatePaypal",
123
- "button": true,
124
- "variant": "outlined",
125
- "color": "primary",
126
- "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
127
- }
20
+ "apiKey": {
21
+ "type": "password",
22
+ "label": "label_apiKey",
23
+ "xs": 12, "sm": 12, "md": 8, "lg": 8, "xl": 8
24
+ },
25
+ "checkConnection": {
26
+ "newLine": true,
27
+ "type": "sendTo",
28
+ "label": "btn_checkConnection",
29
+ "command": "checkConnection",
30
+ "jsonData": "{\"apiKey\": \"${data.apiKey}\"}",
31
+ "result": {
32
+ "okText": "msg_connectionOk",
33
+ "errorText": "msg_connectionFailed"
34
+ },
35
+ "xs": 12, "sm": 12, "md": 4, "lg": 4, "xl": 4
36
+ },
37
+ "pollingHeader": {
38
+ "newLine": true,
39
+ "type": "header",
40
+ "text": "header_polling",
41
+ "size": 5
42
+ },
43
+ "pollInterval": {
44
+ "type": "number",
45
+ "label": "label_pollInterval",
46
+ "tooltip": "tooltip_pollInterval",
47
+ "min": 5,
48
+ "max": 60,
49
+ "default": 10,
50
+ "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
51
+ },
52
+ "deliveryHeader": {
53
+ "newLine": true,
54
+ "type": "header",
55
+ "text": "header_delivery",
56
+ "size": 5
57
+ },
58
+ "autoRemoveDelivered": {
59
+ "type": "checkbox",
60
+ "label": "label_autoRemoveDelivered",
61
+ "tooltip": "tooltip_autoRemoveDelivered",
62
+ "default": true,
63
+ "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12
64
+ },
65
+ "displayHeader": {
66
+ "newLine": true,
67
+ "type": "header",
68
+ "text": "header_display",
69
+ "size": 5
70
+ },
71
+ "language": {
72
+ "type": "select",
73
+ "label": "label_language",
74
+ "tooltip": "tooltip_language",
75
+ "default": "de",
76
+ "options": [
77
+ { "label": "lang_de", "value": "de" },
78
+ { "label": "lang_en", "value": "en" }
79
+ ],
80
+ "xs": 12, "sm": 12, "md": 6, "lg": 6, "xl": 6
81
+ },
82
+ "aboutHeader": {
83
+ "newLine": true,
84
+ "type": "header",
85
+ "text": "aboutHeader",
86
+ "size": 5
87
+ },
88
+ "aboutInfo": {
89
+ "type": "staticText",
90
+ "text": "aboutInfo",
91
+ "xs": 12, "sm": 12, "md": 12, "lg": 12, "xl": 12,
92
+ "style": {
93
+ "fontSize": 14,
94
+ "marginBottom": 16
128
95
  }
96
+ },
97
+ "_kofiLink": {
98
+ "type": "staticLink",
99
+ "href": "https://ko-fi.com/krobipd",
100
+ "label": "donateKofi",
101
+ "button": true,
102
+ "variant": "outlined",
103
+ "color": "primary",
104
+ "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
105
+ },
106
+ "_paypalLink": {
107
+ "type": "staticLink",
108
+ "href": "https://paypal.me/krobipd",
109
+ "label": "donatePaypal",
110
+ "button": true,
111
+ "variant": "outlined",
112
+ "color": "primary",
113
+ "xs": 12, "sm": 6, "md": 4, "lg": 4, "xl": 4
129
114
  }
130
115
  }
131
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAqB9C,oDAAoD;AACpD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IAEjC,mDAAmD;gBACvC,OAAO,EAAE,eAAe;IAIpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU9B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAQ3C;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAiGhB;;;;OAIG;IACG,aAAa,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CtE;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3D;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAiDjC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAkC/B;;;;;;;;OAQG;YACW,YAAY;CAc3B"}
1
+ {"version":3,"file":"state-manager.d.ts","sourceRoot":"","sources":["../../src/lib/state-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAqB9C,oDAAoD;AACpD,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAkB;IAEjC,mDAAmD;gBACvC,OAAO,EAAE,eAAe;IAIpC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAU9B;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM;IAQ3C;;;;;OAKG;IACG,cAAc,CAClB,QAAQ,EAAE,cAAc,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAiGhB;;;;OAIG;IACG,aAAa,CAAC,gBAAgB,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCtE;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3D;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA2B/B;;;;;OAKG;IACH,OAAO,CAAC,yBAAyB;IAiDjC;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAevB;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;OAIG;IACH,OAAO,CAAC,uBAAuB;IAkC/B;;;;;;;;OAQG;YACW,YAAY;CAc3B"}
@@ -102,7 +102,6 @@ class StateManager {
102
102
  this.createAndSet("summary.activeCount", "Active Deliveries", "number", "value", activeDeliveries.length),
103
103
  this.createAndSet("summary.todayCount", "Deliveries Today", "number", "value", todayDeliveries.length),
104
104
  this.createAndSet("summary.deliveryWindow", "Combined Delivery Window", "string", "text", this.calculateCombinedWindow(todayDeliveries)),
105
- this.createAndSet("summary.json", "All Deliveries (JSON)", "string", "json", JSON.stringify(activeDeliveries)),
106
105
  ]);
107
106
  }
108
107
  /**
@@ -76,10 +76,10 @@ declare global {
76
76
  apiKey: string;
77
77
  /** Polling interval in minutes */
78
78
  pollInterval: number;
79
- /** Filter mode for deliveries */
80
- filterMode: "active" | "recent";
81
79
  /** Language for status labels */
82
80
  language: "de" | "en";
81
+ /** Automatically remove delivered packages from states */
82
+ autoRemoveDelivered: boolean;
83
83
  }
84
84
  }
85
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,gCAAgC;AAChC,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUnD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUnD,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,QAAQ,CAAC;QACjB,UAAU,aAAa;YACrB,yBAAyB;YACzB,MAAM,EAAE,MAAM,CAAC;YACf,kCAAkC;YAClC,YAAY,EAAE,MAAM,CAAC;YACrB,iCAAiC;YACjC,UAAU,EAAE,QAAQ,GAAG,QAAQ,CAAC;YAChC,iCAAiC;YACjC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;SACvB;KACF;CACF"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iCAAiC;IACjC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,2CAA2C;IAC3C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qCAAqC;IACrC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;CACxB;AAED,4BAA4B;AAC5B,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,yCAAyC;AACzC,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,gCAAgC;AAChC,MAAM,WAAW,mBAAmB;IAClC,qCAAqC;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,0DAA0D;AAC1D,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEhD,4CAA4C;AAC5C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUnD,CAAC;AAEF,6CAA6C;AAC7C,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAUnD,CAAC;AAGF,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,QAAQ,CAAC;QACjB,UAAU,aAAa;YACrB,yBAAyB;YACzB,MAAM,EAAE,MAAM,CAAC;YACf,kCAAkC;YAClC,YAAY,EAAE,MAAM,CAAC;YACrB,iCAAiC;YACjC,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;YACtB,0DAA0D;YAC1D,mBAAmB,EAAE,OAAO,CAAC;SAC9B;KACF;CACF"}
package/build/main.js CHANGED
@@ -67,6 +67,8 @@ class ParcelappAdapter extends utils.Adapter {
67
67
  // Initialize
68
68
  this.client = new parcel_client_1.ParcelClient(apiKey.trim());
69
69
  this.stateManager = new state_manager_1.StateManager(this);
70
+ // Cleanup obsolete states
71
+ await this.cleanupObsoleteStates();
70
72
  // Initial poll
71
73
  await this.poll();
72
74
  // Set up recurring poll
@@ -124,29 +126,47 @@ class ParcelappAdapter extends utils.Adapter {
124
126
  this.sendTo(obj.from, obj.command, { error: "Unknown command" }, obj.callback);
125
127
  }
126
128
  }
129
+ async cleanupObsoleteStates() {
130
+ const obsoleteStates = [
131
+ "summary.json", // removed in 0.2.0
132
+ ];
133
+ for (const stateId of obsoleteStates) {
134
+ const obj = await this.getObjectAsync(stateId);
135
+ if (obj) {
136
+ await this.delObjectAsync(stateId);
137
+ this.log.debug(`Removed obsolete state: ${stateId}`);
138
+ }
139
+ }
140
+ }
127
141
  async poll() {
128
142
  if (this.isPolling || !this.client || !this.stateManager) {
129
143
  return;
130
144
  }
131
145
  this.isPolling = true;
132
146
  try {
133
- const filterMode = this.config.filterMode || "active";
134
- const deliveries = await this.client.getDeliveries(filterMode);
147
+ // When keeping delivered packages, use "recent" to get them from API
148
+ const autoRemove = this.config.autoRemoveDelivered !== false;
149
+ const deliveries = await this.client.getDeliveries(autoRemove ? "active" : "recent");
135
150
  await this.setStateAsync("info.connection", { val: true, ack: true });
136
- // Filter active deliveries (exclude delivered)
137
- const activeDeliveries = deliveries.filter((d) => parseInt(d.status_code, 10) !== 0);
151
+ // Filter deliveries based on auto-remove setting
152
+ const visibleDeliveries = autoRemove
153
+ ? deliveries.filter((d) => parseInt(d.status_code, 10) !== 0)
154
+ : deliveries;
138
155
  // Update each delivery
139
156
  const activeIds = [];
140
- for (const delivery of activeDeliveries) {
157
+ for (const delivery of visibleDeliveries) {
141
158
  const carrierName = await this.client.getCarrierName(delivery.carrier_code);
142
159
  await this.stateManager.updateDelivery(delivery, carrierName);
143
160
  activeIds.push(this.stateManager.packageId(delivery));
144
161
  }
145
162
  // Cleanup stale deliveries
146
163
  await this.stateManager.cleanupDeliveries(activeIds);
147
- // Update summary (already filtered — no re-filtering needed)
148
- await this.stateManager.updateSummary(activeDeliveries);
149
- this.log.debug(`Polled ${activeDeliveries.length} active deliveries`);
164
+ // Update summary
165
+ const summaryDeliveries = autoRemove
166
+ ? visibleDeliveries
167
+ : deliveries.filter((d) => parseInt(d.status_code, 10) !== 0);
168
+ await this.stateManager.updateSummary(summaryDeliveries);
169
+ this.log.debug(`Polled ${visibleDeliveries.length} deliveries (${summaryDeliveries.length} active)`);
150
170
  }
151
171
  catch (err) {
152
172
  const error = err;
package/io-package.json CHANGED
@@ -1,8 +1,21 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "parcelapp",
4
- "version": "0.1.5",
4
+ "version": "0.2.0",
5
5
  "news": {
6
+ "0.2.0": {
7
+ "en": "Added option to keep delivered packages, simplified admin UI, removed summary.json state",
8
+ "de": "Option zum Beibehalten gelieferter Pakete hinzugefügt, Admin-Benutzeroberfläche vereinfacht, Status „summary.json“ entfernt",
9
+ "ru": "Добавлена ​​опция сохранения доставленных пакетов, упрощен пользовательский интерфейс администратора, удалено состояние summary.json.",
10
+ "pt": "Adicionada opção para manter pacotes entregues, UI de administração simplificada, estado summary.json removido",
11
+ "nl": "Optie toegevoegd om afgeleverde pakketten te behouden, vereenvoudigde beheerdersinterface, verwijderde summary.json-status",
12
+ "fr": "Ajout d'une option pour conserver les packages livrés, interface utilisateur d'administration simplifiée, suppression de l'état summary.json",
13
+ "it": "Aggiunta opzione per mantenere i pacchetti consegnati, interfaccia utente di amministrazione semplificata, stato summary.json rimosso",
14
+ "es": "Opción agregada para conservar los paquetes entregados, interfaz de usuario de administración simplificada, estado de resumen.json eliminado",
15
+ "pl": "Dodano opcję przechowywania dostarczonych paczek, uproszczony interfejs administratora, usunięto stan podsumowania.json",
16
+ "uk": "Додано параметр збереження доставлених пакетів, спрощений інтерфейс адміністратора, видалено стан summary.json",
17
+ "zh-cn": "添加了保留已交付包的选项,简化了管理 UI,删除了summary.json 状态"
18
+ },
6
19
  "0.1.5": {
7
20
  "en": "Added auto-merge config, weekly Dependabot schedule, actions/checkout v6",
8
21
  "de": "Auto-Merge-Konfiguration hinzugefügt, wöchentlicher Dependabot-Zeitplan, actions/checkout v6",
@@ -161,8 +174,8 @@
161
174
  "native": {
162
175
  "apiKey": "",
163
176
  "pollInterval": 10,
164
- "filterMode": "active",
165
- "language": "de"
177
+ "language": "de",
178
+ "autoRemoveDelivered": true
166
179
  },
167
180
  "instanceObjects": [
168
181
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.parcelapp",
3
- "version": "0.1.5",
3
+ "version": "0.2.0",
4
4
  "description": "ioBroker adapter for parcel.app — track packages from 300+ carriers",
5
5
  "author": {
6
6
  "name": "krobi",
@@ -61,6 +61,7 @@
61
61
  "test:integration": "npm run build:test && mocha --exit \"build/test/**/*.js\"",
62
62
  "test": "npm run build:test && mocha --exit \"build/test/**/*.js\"",
63
63
  "test:ci": "npm run build:test && mocha --exit --reporter spec \"build/test/**/*.js\"",
64
+ "translate": "translate-adapter",
64
65
  "lint": "eslint",
65
66
  "lint:fix": "eslint --fix",
66
67
  "release": "release-script"