[{"Iid":6052,"Title":"Bugfix: Apilogger payload is json_encoded","Description":"","Type":"bug","Merged_at":"2026-06-15T13:15:16.676Z","Labels":["Mergerequest::bugfix"]},{"Iid":6050,"Title":"Glenten: tv pakke nedgradering til internet only, WEBTV fortsætter - FIXED","Description":"","Type":"bug","Merged_at":"2026-06-15T12:12:21.023Z","Labels":["Mergerequest::bugfix"]},{"Iid":5923,"Title":"Bugfix with css templates when creating new provider","Description":"","Type":"bug","Merged_at":"2026-06-01T11:04:25.084Z","Labels":["Mergerequest::bugfix"]},{"Iid":5896,"Title":"Bugfix, passed by reference","Description":"","Type":"bug","Merged_at":"2026-05-28T08:11:48.534Z","Labels":["Mergerequest::bugfix"]},{"Iid":5731,"Title":"Bugfix. Collectia: DB save failure handling","Description":"Bumped collectia table columns codata, copayments, cosentorders from VARCHAR to TEXT to prevent silent data loss when cases with many invoices were created\n\nAdded try/catch around $collectia-\u003esave() on case creation - on failure, processing continues (files still upload to Collectia) and a Discord alert is sent with a ready-to-run INSERT SQL statement containing all case/debtor/invoice data needed to manually restore the missing row","Type":"bug","Merged_at":"2026-05-06T06:48:45.717Z","Labels":["Mergerequest::bugfix"]},{"Iid":5646,"Title":"Bugfix, getPtext","Description":"","Type":"bug","Merged_at":"2026-04-27T09:06:29.585Z","Labels":["Mergerequest::bugfix"]},{"Iid":5463,"Title":"TDC: tdcwholesaleorder check for task id 2402 fix","Description":"## Added\n- Check for task id 2402 without task prefix for tdcwholesaleorder","Type":"bug","Merged_at":"2026-04-20T11:08:54.622Z","Labels":["Mergerequest::bugfix"]},{"Iid":5522,"Title":"Process debug mode","Description":"## Added\nDebug view and controls added to Process edit page\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-04-09T14:04:01.194Z","Labels":["Mergerequest::feature","Module::Process"]},{"Iid":5238,"Title":"New Calendar and calendar filters","Description":"## Added\n\n- **PaCalendar** – New JavaScript calendar library with validation, date restrictions, and configurable UI widget (holidays, past dates, time picker)\n- **Calendar filters** – Admin UI to define and manage calendar filter presets (stored in database)\n- **kkdb_calendarfilter** – Database model and API for calendar filter configuration\n\n## Changed\n\n- Replaced legacy date picker with PaCalendar across billing, CRM, mediation, provisioning, and other modules\n- Standardized date input behaviour and styling via pa_calendar.css and calendarfilters.css\n\n## Impact\n\n- Consistent date picker experience across the application\n- Admins can configure reusable calendar filters for date-restricted workflows","Type":"news","Merged_at":"2026-03-31T10:44:17.357Z","Labels":["Mergerequest::feature"]},{"Iid":5441,"Title":"Discount description added to API model","Description":"## Added\nDiscount description added to API model","Type":"news","Merged_at":"2026-03-23T13:34:36.206Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5430,"Title":"FD#17873. Fix invoice text hidden by background overlay in antenne_pdfinvoicenofik","Description":"Updated templates/antenne_pdfinvoicenofik.php to fix invoice text being hidden by the invoice background/logo overlay. The background/logo PDF is now rendered immediately after AddPage() (i.e., before any text/lines are drawn) and is re-applied correctly after page breaks, preventing it from covering invoicetextlines and invoice line items. Also removed unused $xpagecount variables from the background/logo handling.","Type":"bug","Merged_at":"2026-03-23T11:45:54.900Z","Labels":["Mergerequest::bugfix"]},{"Iid":5408,"Title":"Added logging for webrequests","Description":"## Added\nLog process webrequests in api logger\n\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-03-18T13:41:52.301Z","Labels":["Mergerequest::feature","Module::Process"]},{"Iid":5394,"Title":"Added revision numbers and changelog to monitoring update endpoint","Description":"## Added\nAdded revision numbers and changelog to monitoring/update endpoint\n\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-03-18T08:54:27.307Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5391,"Title":"FD#18176. Fix dark mode invisible text in locked input fields","Description":"Fix dark mode invisible text in locked input fields\n\nReplaced hardcoded inline style=\"color:#555555;\" with data-locked=\"1\"\nattribute across all affected templates. Color is now controlled via CSS:\n- Light mode (newdefaults.css): #555555 (same subtle grey as before)\n- Dark mode (darkmode.css): #aab8cc (readable on dark background)\n\nAffected templates: accounting.editcustomer, instaddress.edit,\nproductconfig.edit, customergroup.manage, instaddress.dawaimport,\ninstaddress.move, esgcmts.edit, esgess.editport","Type":"bug","Merged_at":"2026-03-17T14:55:54.001Z","Labels":["Mergerequest::bugfix"]},{"Iid":5379,"Title":"Jhe pan 896 process history","Description":"## Added\nHistory for processes!\n\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-03-16T14:51:47.326Z","Labels":["Mergerequest::feature","Module::Process"]},{"Iid":5371,"Title":"Allente idents fix","Description":"","Type":"bug","Merged_at":"2026-03-13T10:38:33.465Z","Labels":["Mergerequest::bugfix"]},{"Iid":5348,"Title":"Escape taskticket subject before using it in JS","Description":"","Type":"bug","Merged_at":"2026-03-09T08:06:38.034Z","Labels":["Mergerequest::bugfix"]},{"Iid":5344,"Title":"Smartermail API changes, fixes issue with Gullestrup","Description":"## Changed\n- Changes to the smartermail API","Type":"news","Merged_at":"2026-03-05T08:42:53.273Z","Labels":["Mergerequest::feature"]},{"Iid":5342,"Title":"Jhe pan 1003 update endpoint","Description":"## Added\nUpdate endpoint that returns date time for the next planned update: /api/v2/monitoring/updates\n\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-03-04T13:02:28.683Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5340,"Title":"Bugfix, missing csv mimetype in phpmailer","Description":"","Type":"bug","Merged_at":"2026-03-04T09:57:50.132Z","Labels":["Mergerequest::bugfix"]},{"Iid":5269,"Title":"News popup","Description":"## Added\n- Bell icon in header that opens a news popup from news.pantheradmin.com\n- Red badge and bell animation when there are unread posts\n- Session cache (5 min) and localStorage for last viewed timestamp\n## Changed\n- news_title moved from lang_xx.js to lang.*.squidroottemplate\n- New CSS for bell, badge, popup, and dark mode\n## Impact\n- Users see news directly in the admin UI","Type":"news","Merged_at":"2026-03-03T08:02:24.407Z","Labels":["Mergerequest::feature"]},{"Iid":5329,"Title":"Added user group filter in process list","Description":"## Added\nAdded user group filter in process list\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-03-02T14:58:47.840Z","Labels":["Mergerequest::feature","Module::Process"]},{"Iid":5288,"Title":"Customer history","Description":"## Added\nCustomer history\nCustomer favorites\n\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-02-20T13:05:44.717Z","Labels":["Mergerequest::feature"]},{"Iid":5279,"Title":"Better determination of MIME type when sending email","Description":"","Type":"bug","Merged_at":"2026-02-19T12:22:12.498Z","Labels":["Mergerequest::bugfix"]},{"Iid":5265,"Title":"Template css folder permission fix","Description":"","Type":"bug","Merged_at":"2026-02-17T14:23:22.680Z","Labels":["Mergerequest::bugfix"]},{"Iid":5255,"Title":"Process jump UI improvements","Description":"## Added\nProcess jump UI improvements - show label backgroundcolor and added link to process\n## Changed\n-\n \n## Impact\n-","Type":"news","Merged_at":"2026-02-13T13:56:03.894Z","Labels":["Mergerequest::feature"]},{"Iid":5217,"Title":"Add includePaidByOwner parameter to getCustomerProducts","Description":"## Added\n- includePaidByOwner flag to the getCustomerProducts selfservice endpoint\n- paidByOwner param, to determine who pays for the product\n \n## Impact\n- possible to show products paid by the owner when logged in as tenant in selfservice","Type":"news","Merged_at":"2026-02-09T10:21:00.422Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5218,"Title":"Next invoice date shown on Account details page","Description":"## Added\n- getNextSubscriptionBilldate() on blaccount\n- Row on account details that shows next invoice date\n\n## Impact\n- Easy to see when next invoice is coming","Type":"news","Merged_at":"2026-02-09T08:34:29.965Z","Labels":["Mergerequest::feature"]},{"Iid":5204,"Title":"Added phone and mobile to filtering on accounts via api","Description":"## Added\n- phone and mobile to columnNames to allow filtering via api","Type":"news","Merged_at":"2026-02-03T14:48:40.139Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5176,"Title":"Bugfix. Scopemessage, forgotten file....","Description":"","Type":"bug","Merged_at":"2026-01-27T15:05:11.195Z","Labels":["Mergerequest::bugfix"]},{"Iid":5169,"Title":"Bugfix. Yousee product fetch","Description":"","Type":"bug","Merged_at":"2026-01-27T08:54:40.779Z","Labels":["Mergerequest::bugfix"]},{"Iid":5165,"Title":"FD#17961. Bugfix. Customergroup tree loaded with subgroups loaded as root groups","Description":"![image](/uploads/4657b5cedb221d312786336db36a0610/image.png){width=900 height=306}","Type":"bug","Merged_at":"2026-01-27T07:29:30.533Z","Labels":["Mergerequest::bugfix"]},{"Iid":5153,"Title":"Bugfix: isJson returned to its origin state. Prepare json string beforehand","Description":"","Type":"bug","Merged_at":"2026-01-22T13:39:47.397Z","Labels":["Mergerequest::bugfix"]},{"Iid":5144,"Title":"API Documentation Updates: Redoc and Swagger UI with Token Persistence","Description":"Updated API documentation to include both Redoc and Swagger UI.\n\n**Documentation Views:**\n- Redoc is now the default documentation view (read-only, clean presentation)\n- Swagger UI is available as an interactive alternative where endpoints can be tested directly\n- Added a prominent banner on Redoc linking to Swagger UI for easy access\n\n**Token Persistence:**\n- Authorization tokens (Bearer tokens) are now persisted in sessionStorage and restored on page reload\n- user-token and customer-token headers are automatically saved when entered\n- Tokens entered in one endpoint are automatically filled in all other endpoints\n- All tokens persist across page reloads within the same browser session\n\n**Version:**\n- Fixed API version number to v2.0.0","Type":"news","Merged_at":"2026-01-22T11:57:56.550Z","Labels":["Mergerequest::feature","Module::API"]},{"Iid":5133,"Title":"Add features-only filter to releasenotesv2","Description":"Adds a new filter button on releasenotesv2 page to show only features from the changelog API.\n\n## Changes\n- Added new 'Show only features' filter button\n- Fetches from https://changelog.pantheradmin.com/features endpoint\n- Updated pagination links to preserve features filter when navigating pages\n- Added translations for 'showfeatures' in English and Danish\n\n## Implementation\n- Follows the same pattern as the existing bugs-only filter\n- Button placed before the bugs filter button for consistency","Type":"news","Merged_at":"2026-01-21T13:49:51.629Z","Labels":["Mergerequest::feature","Module::Admin"]},{"Iid":5111,"Title":"FD#17909 bugfix. Processinstance, json string not valid UTF-8","Description":"","Type":"bug","Merged_at":"2026-01-16T08:31:15.690Z","Labels":["Mergerequest::bugfix"]},{"Iid":5092,"Title":"Fix response handling with numeric keys, easier process debugging","Description":"","Type":"bug","Merged_at":"2026-01-12T07:30:54.606Z","Labels":["Mergerequest::bugfix"]},{"Iid":5081,"Title":"Bugfix (FD#17857, dashbord js fejl)","Description":"","Type":"bug","Merged_at":"2026-01-07T12:06:15.595Z","Labels":["Mergerequest::bugfix"]},{"Iid":5076,"Title":"Bugfix (tusass: don't alert when activating an already active product)","Description":"","Type":"bug","Merged_at":"2026-01-06T13:36:32.923Z","Labels":["Mergerequest::bugfix"]},{"Iid":5075,"Title":"Bugfix (Taskticket css: backward compatible, works without a CSS template selected)","Description":"","Type":"bug","Merged_at":"2026-01-06T09:59:23.051Z","Labels":["Mergerequest::bugfix"]},{"Iid":5074,"Title":"bugfix (Processes crash at taskticket step, \"allow\" function is undefined)","Description":"","Type":"bug","Merged_at":"2026-01-06T08:54:16.066Z","Labels":["Mergerequest::bugfix"]},{"Iid":5054,"Title":"Viaplay optimized / bug fixed","Description":"","Type":"bug","Merged_at":"2026-01-05T10:25:22.063Z","Labels":["Mergerequest::bugfix"]},{"Iid":5038,"Title":"FD#17820 encoding issue fixed","Description":"","Type":"bug","Merged_at":"2025-12-17T11:42:43.517Z","Labels":["Mergerequest::bugfix"]},{"Iid":4984,"Title":"Fix troubleticket sync against panther wholesale","Description":"## Changed\n- Sync to look back 1 minute further\n- Fixed double init \n \n## Impact\n- Sync should fetch every event now\n- Able to fetch available circuits now, and show every ticket related.","Type":"bug","Merged_at":"2025-11-28T13:35:59.675Z","Labels":["Mergerequest::bugfix"]},{"Iid":4983,"Title":"bugfix","Description":"","Type":"bug","Merged_at":"2025-11-28T13:17:48.462Z","Labels":["Mergerequest::bugfix"]},{"Iid":4951,"Title":"Fix invoice import caching and ensure correct header data per invoice","Description":"Avoid repeated account lookups by checking current account number before fetching.\nPreserve correct dataset per invoice by introducing $lastdataset.\nEnsure closeInvoice() receives the correct header values for each invoice.\nImproves performance and correctness when importing large invoice files.","Type":"bug","Merged_at":"2025-11-20T11:42:55.097Z","Labels":["Mergerequest::bugfix"]},{"Iid":4948,"Title":"Improve Infonova retry logic and add modem status filter","Description":"- Added GET-specific curl timeout (20s).\n- Reworked Infonova HTTP-0 retry mechanism with retry counter and logging.\n- Introduced new “status” signal filter and supporting SQL condition in surveillance views.","Type":"news","Merged_at":"2025-11-19T15:07:34.116Z","Labels":["Mergerequest::feature"]},{"Iid":4941,"Title":"Node stability improvements and safer filtering","Description":"- Added multiple new node fields (ci_key, desc, lists, filter, switchtype, row).\n- listci now uses correct parameter naming.\n- Strengthened iterator filtering with proper SQL escaping.\n- Added hashmap scaffolding in bundle lookups.\n- Ensured only enabled nodes are used for modem→node mapping, preventing invalid associations.","Type":"bug","Merged_at":"2025-11-18T12:13:11.820Z","Labels":["Mergerequest::bugfix"]},{"Iid":4932,"Title":"Invoice import, export improvements and bookkeeping utilities","Description":"- Added support for full invoice import flow, including validation, duplicate checks, missing account detection and final invoice creation.\n- Added CSV export for invoice headers and updated existing order exports.\n- Introduced bookkeeping-aware helpers for listing unique account numbers and invoice IDs.\n- Improved orderline creation with safer defaults and nullable fields.\n- Updated MobilePay rate-limit comments, added Infonova rate-limit and retry on HTTP code 0.\n- Fixed PBS padding bug by escaping %.\n- Added new language strings and UI elements for invoice import/export.\n- Normalised PHP tags and removed old commented code.","Type":"bug","Merged_at":"2025-11-17T14:48:28.453Z","Labels":["Mergerequest::bugfix"]}]