Skip to content

Changes

Started by timer
Started 5 days 5 hr ago
Took 1 min 13 sec on built-in

Summary

  1. Amazon settlements: Lexoffice CSV export follows the grid – exports exactly the visible (filtered) rows of the ticked periods instead of re-fetching whole periods; partial periods go out without payout/residue row and are reported; toolbar label shows rows · periods; grid height fills the remaining viewport (ResizeObserver + resize) (details)
  2. Rules: note the visible-rows scope of the Amazon settlement Lexoffice CSV export (details)
  3. Amazon settlements: periods with payout status Unknown/Failed are exportable (only Processing is excluded) – negative periods get an 'Amazon Belastung' payout row, failed transfers none; disabled export button explains how many visible rows sit in non-exportable/unticked periods (details)
  4. Leads: Unanswered check skips expired leads by default (opt-in checkbox lists them badged, stat shows how many were skipped); one-click expire/reactivate clock column in the list (flags route, row leaves the list while 'Hide expired' is on, previous status restored on reactivate) (details)
  5. DHL: token errors tell network/DNS failures ('DHL-API nicht erreichbar', credentials not checked) and DHL 5xx outages apart from real login rejections; recipe documents where the main DHL account lives and the Unbound resolver fix (details)
  6. Commission page: sidebar regrouped (carrier header with logo → Shipping Address → Shipping → Tisch & Printing, no dead space); paket type as Nuxt UI SelectBox showing the real product names (Paket S/M/L/XL, Keine Verpackung, Kleinpaket) with CODE badge + hint via shared usePaketTypes catalog (modal select uses it too); shipping service as logo cards; Tisch as SelectBox; next-step banner on light tinted surface with dark text; commission-system pill moved to the bottom activity bar; achievement thresholds doubled (gold 20 / platinum 30 / diamond 40 in 10 min, test codes TEST20/30/40) (details)
  7. Commission page: paket type picked from a chip grid (all types visible as buttons with name + CODE badge, click again clears, focus returns to the scanner input) instead of a dropdown (details)
  8. Commission page: paket type chips collapsed behind a select-style row (placeholder or the chosen type with CODE badge + hint); click expands the grid, picking a chip or a CODE scan collapses it (details)
  9. Commission page: shipping service cards collapsed behind the current choice (logo + name + hint), click expands, pick collapses; sidebar carrier header now follows the SELECTED service (logo + name) with the order's shipper as subline; logo images keyed so they re-render on change (details)
  10. Commission page: multi-parcel block fits the sidebar column (no outer margin, stacked header, full-width compact 'Neues Paket' button, wrapping count row) (details)
  11. Leads: phone-call activities show the matching FreePBX recording inline (matched by time, ≤15 min), with cached whisper transcript preview (expand/copy), play button and a Transkribieren action; recordings route gains withTranscripts=1 to embed cached transcripts (details)
  12. Rules: telephony — activity-entry transcript matching (by time only) and the local-dev PBX tunnel (CDR/recordings allow-list) (details)
  13. Rules: lead e-mail history — ERP-sent staff mails now relay via Exchange (sender-dependent postfix relay on prod) so mailpiler archives them; IM chip still has no Sent copy (details)
  14. Leads: CRM qualification fields (17 custom AD_User columns) with full CRUD on the lead page and inline editing in the leads list (details)
  15. Leads: list columns reordered and compacted (stars after company, WV with note tooltip, Best./M., €/M., %, Gew. €, KI, shop system; status/description/last-activity/note columns removed); dashboard banner with follow-ups due today or overdue linking to the lead (details)
  16. Leads list: €/month, win % and weighted € columns hidden by default (column menu) (details)
  17. Leads list: rating cell no longer truncated with an ellipsis (no overflow clipping, tighter stars) (details)
  18. Leads list: follow-up cell not truncated with an ellipsis (details)
  19. Leads list: follow-up (WV) column moved to second position after Created (details)
  20. Offer volume matrix: row label shortened to 'Basispreis pro Auftrag' (legacy label mapped on load); lead mail signature prints Phone and Phone2 of the sender (details)
  21. Offers: cut-off time on by default in the quote; contract gets an 'Im Vertrag nennen' switch (seeded from the quote) that removes the cut-off SLA item and uses a time-free express clause when off (details)
Commit 95a60a86c097975e28c7c8232c25ccbe4f4d7d5e by info
Amazon settlements: Lexoffice CSV export follows the grid – exports exactly the visible (filtered) rows of the ticked periods instead of re-fetching whole periods; partial periods go out without payout/residue row and are reported; toolbar label shows rows · periods; grid height fills the remaining viewport (ResizeObserver + resize)
The file was modifiedapp/components/accounting/SettlementToolbar.vue (diff)
The file was modifiedapp/pages/accounting/amazon-settlements.vue (diff)
The file was modifiedapp/composables/useLexofficeSettlementExport.ts (diff)
Commit 3099df0306afe1bf42b92714c17485116c69d7f6 by info
Rules: note the visible-rows scope of the Amazon settlement Lexoffice CSV export
The file was modified.claude/rules/accounting/lexoffice.md (diff)
Commit d9b873bc0d17f9874be8a8a4cf52a64e7a0a6e6d by info
Amazon settlements: periods with payout status Unknown/Failed are exportable (only Processing is excluded) – negative periods get an 'Amazon Belastung' payout row, failed transfers none; disabled export button explains how many visible rows sit in non-exportable/unticked periods
The file was modified.claude/rules/accounting/lexoffice.md (diff)
The file was modifiedapp/pages/accounting/amazon-settlements.vue (diff)
Commit 090cc23eef312f4cf2affc3c074d9f88b539fccf by info
Leads: Unanswered check skips expired leads by default (opt-in checkbox lists them badged, stat shows how many were skipped); one-click expire/reactivate clock column in the list (flags route, row leaves the list while 'Hide expired' is on, previous status restored on reactivate)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/pages/users/leads/index.vue (diff)
The file was addedapp/components/AgGrid/AgLeadExpireToggle.vue
The file was modifiedserver/api/mail/lead-followups.get.ts (diff)
The file was modifiedapp/components/mail/LeadFollowupModal.vue (diff)
Commit 3acdcc2133e82953e85e2c67bbc46bbe48a664cb by info
DHL: token errors tell network/DNS failures ('DHL-API nicht erreichbar', credentials not checked) and DHL 5xx outages apart from real login rejections; recipe documents where the main DHL account lives and the Unbound resolver fix
The file was modified.claude/rules/fulfillment/shippers.md (diff)
The file was modifiedserver/utils/dhlHelper.ts (diff)
Commit f98f9286eab7a7f7d351db6cadfc4b036558eecb by info
Commission page: sidebar regrouped (carrier header with logo → Shipping Address → Shipping → Tisch & Printing, no dead space); paket type as Nuxt UI SelectBox showing the real product names (Paket S/M/L/XL, Keine Verpackung, Kleinpaket) with CODE badge + hint via shared usePaketTypes catalog (modal select uses it too); shipping service as logo cards; Tisch as SelectBox; next-step banner on light tinted surface with dark text; commission-system pill moved to the bottom activity bar; achievement thresholds doubled (gold 20 / platinum 30 / diamond 40 in 10 min, test codes TEST20/30/40)
The file was addedapp/composables/usePaketTypes.ts
The file was modifiedapp/components/integrations/CommissionModal.vue (diff)
The file was modifiedapp/pages/integrations/commission.vue (diff)
Commit d81042d263d7e1e0b634367001da80cdbbea2381 by info
Commission page: paket type picked from a chip grid (all types visible as buttons with name + CODE badge, click again clears, focus returns to the scanner input) instead of a dropdown
The file was modifiedapp/pages/integrations/commission.vue (diff)
Commit 009da7b7ae0c2a9961ae424a21fd790de45ff2d8 by info
Commission page: paket type chips collapsed behind a select-style row (placeholder or the chosen type with CODE badge + hint); click expands the grid, picking a chip or a CODE scan collapses it
The file was modifiedapp/pages/integrations/commission.vue (diff)
Commit 157878ce95241e60671aa2377ddd240dbfa1ee7b by info
Commission page: shipping service cards collapsed behind the current choice (logo + name + hint), click expands, pick collapses; sidebar carrier header now follows the SELECTED service (logo + name) with the order's shipper as subline; logo images keyed so they re-render on change
The file was modifiedapp/pages/integrations/commission.vue (diff)
Commit 2acbeaf1a8f6816a4e5adb0809f18a9c3f9865ca by info
Commission page: multi-parcel block fits the sidebar column (no outer margin, stacked header, full-width compact 'Neues Paket' button, wrapping count row)
The file was modifiedapp/pages/integrations/commission.vue (diff)
Commit eb3b51da3dd92e9d5d7d49e53dd3a14b1ebb6c27 by info
Leads: phone-call activities show the matching FreePBX recording inline (matched by time, ≤15 min), with cached whisper transcript preview (expand/copy), play button and a Transkribieren action; recordings route gains withTranscripts=1 to embed cached transcripts
The file was modifiedserver/api/telephony/recordings/index.get.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/components/admin/LeadDetailRecordActivity.vue (diff)
Commit 15e1bfad620b3d0df5124241e42eea8fe7e37b9a by info
Rules: telephony — activity-entry transcript matching (by time only) and the local-dev PBX tunnel (CDR/recordings allow-list)
The file was modified.claude/rules/telephony/telephony.md (diff)
Commit 66d33475431ab2513802915148c451aba804b913 by info
Rules: lead e-mail history — ERP-sent staff mails now relay via Exchange (sender-dependent postfix relay on prod) so mailpiler archives them; IM chip still has no Sent copy
The file was modified.claude/rules/mail/lead-email-history.md (diff)
Commit 5756b9cccea6ecc4ffffd23e83c091157067f411 by info
Leads: CRM qualification fields (17 custom AD_User columns) with full CRUD on the lead page and inline editing in the leads list

- LeadRating (yellow 1–5 stars), FollowUpDate (+ note, quick +1/+3/+7/+14, past days greyed out, overdue/today badges), MonthlyOrders, SkuCount, ShopSystem, BusinessModel + LostReason (reference lists read from the API), ExpectedMonthlyValue, WinProbability (auto per stage: working 25 · quote 50 · accepted 70 · contract 85 · signed 95 · converted 100 · lost 0, never lowered automatically), ExpectedStartDate, AiScore (written by KI-Analyse), AvgParcelWeight, address LeadStreet/LeadZip/LeadCity/LeadCountry (prefills quote & contract, written back on send)
- every control autosaves via PUT /api/admin/users/:id/flags (whitelisted + validated in server/utils/leads/leadQualification.ts); Expired/Recycled asks for the lost reason
- quote/contract send sync sizing assumptions, forecast total and address onto the lead; confirmation / signature bump the probability
- website webhooks parse volume (range → midpoint), integrations and weight into the new columns, retrying without them on error
- leads list: rating/follow-up/orders/€/probability/weighted/AI columns editable inline (explicit cellDataType), follow-up filter, weighted pipeline total; more columns via the column menu
- lead page: Nuxt UI SelectBox for all selects (no tedir left), DateTimeInputLocal for activity start/end, notes = Comments only in the right column, organisation + search key in the header, two aligned cards "Bedarf & Profil" / "Pipeline & Bewertung"
- recipe .claude/rules/leads/crm-qualification.md
The file was addedapp/components/DateTimeInputLocal.vue
The file was modifiedapp/composables/useOfferQuote.ts (diff)
The file was modifiedapp/pages/users/leads/[id]/edit.vue (diff)
The file was modifiedserver/api/webhooks/landing-leads.post.ts (diff)
The file was modifiedapp/composables/useOfferContract.ts (diff)
The file was addedapp/components/AgGrid/AgLeadRating.vue
The file was addedserver/api/admin/users/lead-lists.get.ts
The file was modifiedserver/utils/offers/quoteConfirmation.ts (diff)
The file was modifiedserver/api/webhooks/fulfillment-leads.post.ts (diff)
The file was modifiedserver/utils/leads/leadAssessment.ts (diff)
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/pages/users/leads/index.vue (diff)
The file was addedapp/composables/useLeadQualification.ts
The file was addedserver/utils/leads/monthlyOrders.ts
The file was added.claude/rules/leads/crm-qualification.md
The file was modifiedapp/pages/users/leads/create.vue (diff)
The file was modifiedserver/utils/offers/contractSigning.ts (diff)
The file was modifiedapp/components/DateInputDe.vue (diff)
The file was modifiedapp/components/admin/LeadForm.vue (diff)
The file was modifiedapp/pages/users/leads/[id]/view.vue (diff)
The file was modifiedserver/api/offers/contract/send.post.ts (diff)
The file was modifiedserver/api/offers/quote/send.post.ts (diff)
The file was modifiedserver/api/admin/users/[id]/flags.put.ts (diff)
The file was modifiedserver/api/admin/users/store.post.ts (diff)
The file was addedserver/utils/leads/leadQualification.ts
The file was modifiedapp/components/admin/LeadDetailRecordActivity.vue (diff)
Commit 11cf2fc9ca2eae1b0bda49e4f30f914ad821d781 by info
Leads: list columns reordered and compacted (stars after company, WV with note tooltip, Best./M., €/M., %, Gew. €, KI, shop system; status/description/last-activity/note columns removed); dashboard banner with follow-ups due today or overdue linking to the lead
The file was modifiedapp/assets/langs/shared.js (diff)
The file was addedserver/api/admin/users/leads/followups.get.ts
The file was modified.claude/rules/leads/crm-qualification.md (diff)
The file was modifiedapp/pages/index.vue (diff)
The file was modifiedapp/pages/users/leads/index.vue (diff)
Commit d7d4f930268de2ddddabf60ac8f8c31270294339 by info
Leads list: €/month, win % and weighted € columns hidden by default (column menu)
The file was modified.claude/rules/leads/crm-qualification.md (diff)
The file was modifiedapp/pages/users/leads/index.vue (diff)
Commit 15a64548a3b578de5337702c21b7a16d506a5901 by info
Leads list: rating cell no longer truncated with an ellipsis (no overflow clipping, tighter stars)
The file was modifiedapp/pages/users/leads/index.vue (diff)
The file was modifiedapp/components/AgGrid/AgLeadRating.vue (diff)
Commit c51153ce35bd4ad89511b95a6fc7f9dcd09afbba by info
Leads list: follow-up cell not truncated with an ellipsis
The file was modifiedapp/pages/users/leads/index.vue (diff)
Commit 5e73df84fd165b53aebf6a873f72795ccc8679cc by info
Leads list: follow-up (WV) column moved to second position after Created
The file was modified.claude/rules/leads/crm-qualification.md (diff)
The file was modifiedapp/pages/users/leads/index.vue (diff)
Commit 609bdc55e01130493f296686f80b3540787b9210 by info
Offer volume matrix: row label shortened to 'Basispreis pro Auftrag' (legacy label mapped on load); lead mail signature prints Phone and Phone2 of the sender
The file was modifiedapp/composables/useOfferQuote.ts (diff)
The file was modifiedserver/api/leads/[id]/mail/context.get.ts (diff)
The file was modifiedserver/utils/mail/staffMail.ts (diff)
Commit 279100731de579a641a727198fe52dc60054b233 by info
Offers: cut-off time on by default in the quote; contract gets an 'Im Vertrag nennen' switch (seeded from the quote) that removes the cut-off SLA item and uses a time-free express clause when off
The file was modifiedapp/assets/langs/shared.js (diff)
The file was modifiedapp/composables/useOfferQuote.ts (diff)
The file was modifiedserver/utils/offers/contractPdf.ts (diff)
The file was modifiedapp/composables/useOfferContract.ts (diff)
The file was modifiedserver/utils/offers/contractTexts.ts (diff)
The file was modifiedapp/components/offers/ContractModal.vue (diff)