{"pullRequests":[{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10360","title":"Send a case to another clinic straight from the journal","state":"closed","number":10360,"created_at":"2026-10-05T11:55:15Z","repo_name":"Kaddio Application","merged_at":"2026-10-16T08:37:52Z","body":"## Summary\n- An admin allows other organisations to create a case from a template by adding their Kaddio URL. Those organisations see the same fields a client sees on a public template.\n- From Nytt in the journal, the sending organisation fills the form and can attach journal notes and letters as PDFs, plus uploaded files.\n- The receiving organisation owns the real case. The client there is created or updated from the sending contact, filling only empty profile fields.\n- The sending organisation gets a journal card with the same case number. That card is not openable, is excluded from the cases list and counts, and cannot be closed or otherwise changed.\n\n## Test plan\n- [ ] On Demo underavdelning, open the Konsultation template and confirm Demo is listed under Andra organisationer.\n- [ ] On Demo, open a client journal, choose Nytt → Konsultation, select notes and a letter, upload a file, and send.\n- [ ] Confirm the sending journal shows “Skickat till …” and the case cannot be opened, closed, or reopened.\n- [ ] On Demo underavdelning, confirm the case exists for the created client with the same number, answers, and files.\n- [ ] Confirm a host who is not allowed cannot create the case, and the sending stub is absent from the cases list and open-case counts.","body_html":"<p dir=\"auto\">Clinics can now send a case to another Kaddio organisation directly from the journal, using a shared template.</p>\n<p dir=\"auto\">An administrator opens a case template to other organisations by adding their Kaddio address. From Nytt in the journal, the sending clinic fills in the template, attaches journal notes and letters as PDFs, and uploads any additional files. The receiving clinic gets the real case with the client created or updated automatically, while the sending clinic keeps a journal record with the same case number for traceability.</p>\n<p dir=\"auto\">Available in the Cases module. No action needed — administrators can start sharing templates whenever they are ready.</p>","translations":{"en":{"title":"Send a case to another clinic straight from the journal","body_html":"<p dir=\"auto\">Clinics can now send a case to another Kaddio organisation directly from the journal, using a shared template.</p>\n<p dir=\"auto\">An administrator opens a case template to other organisations by adding their Kaddio address. From Nytt in the journal, the sending clinic fills in the template, attaches journal notes and letters as PDFs, and uploads any additional files. The receiving clinic gets the real case with the client created or updated automatically, while the sending clinic keeps a journal record with the same case number for traceability.</p>\n<p dir=\"auto\">Available in the Cases module. No action needed — administrators can start sharing templates whenever they are ready.</p>"},"sv":{"title":"Skicka ärenden till en annan klinik direkt från journalen","body_html":"<p dir=\"auto\">Effektivt för att skicka och ta emot remissvar eller dela patientinformation mellan enheter.</p>\n<p dir=\"auto\">Gör såhär: En administratör öppnar en ärendemall för andra organisationer genom att lägga till deras Kaddio-adress. Från <em>Nytt</em> i journalen fyller den avsändande kliniken i mallen, bifogar journalanteckningar och brev som PDF och laddar upp eventuella filer. Den mottagande kliniken får ärendet och klienten skapas eller uppdateras automatiskt, medan avsändaren behåller ett journalkort med samma ärendenummer för spårbarhet.</p>"},"es":{"title":"Envía un caso a otra clínica directamente desde el historial","body_html":"<p dir=\"auto\">Las clínicas pueden enviar un caso a otra organización en Kaddio directamente desde el historial, usando una plantilla compartida.</p>\n<p dir=\"auto\">Un administrador habilita una plantilla de caso para otras organizaciones añadiendo su dirección de Kaddio. Desde Nuevo en el historial, la clínica emisora completa la plantilla, adjunta notas y cartas en PDF y sube archivos adicionales. La clínica receptora obtiene el caso real con el cliente creado o actualizado automáticamente, mientras que la emisora conserva un registro en el historial con el mismo número de caso.</p>\n<p dir=\"auto\">Disponible en el módulo de Casos. No se requiere ninguna acción — los administradores pueden empezar a compartir plantillas cuando quieran.</p>"},"no":{"title":"Send en sak til en annen klinikk rett fra journalen","body_html":"<p dir=\"auto\">Klinikker kan sende en sak til en annen Kaddio-organisasjon rett fra journalen, via en delt mal.</p>\n<p dir=\"auto\">En administrator åpner en saksmal for andre organisasjoner ved å legge til deres Kaddio-adresse. Fra Nytt i journalen fyller avsenderklinikken ut malen, legger ved journalnotater og brev som PDF, og laster opp ekstra filer. Mottakerklinikken får den reelle saken med klienten opprettet eller oppdatert automatisk, mens avsender beholder et journalkort med samme saksnummer for sporbarhet.</p>\n<p dir=\"auto\">Tilgjengelig i Saker-modulen. Ingen handling kreves — administratorer kan dele maler når de er klare.</p>"},"dk":{"title":"Send en sag til en anden klinik direkte fra journalen","body_html":"<p dir=\"auto\">Klinikker kan sende en sag til en anden Kaddio-organisation direkte fra journalen via en delt skabelon.</p>\n<p dir=\"auto\">En administrator åbner en sagsskabelon for andre organisationer ved at tilføje deres Kaddio-adresse. Fra Nyt i journalen udfylder den afsendende klinik skabelonen, vedhæfter journalnotater og breve som PDF og uploader eventuelle filer. Den modtagende klinik får den rigtige sag, og klienten oprettes eller opdateres automatisk, mens afsenderen beholder et journalkort med samme sagsnummer for sporbarhed.</p>\n<p dir=\"auto\">Findes i Sager-modulet. Ingen handling nødvendig — administratorer kan dele skabeloner, når de er klar.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10437","title":"Add your signature to official forms with a single click","state":"closed","number":10437,"created_at":"2026-10-12T13:13:44Z","repo_name":"Kaddio Application","merged_at":"2026-10-16T06:40:55Z","body":"## Summary\n- Adds a button on blankett underskrift sections that have a namnteckning field, so the selected host's profile signature can be included.\n- The PDF stamps that image at 10 mm, slightly above the line, using multiply so a white background drops out.\n\n## Test plan\n- [x] Open a blankett that has a namnteckning field and confirm **Lägg till signatur** appears in the underskrift section.\n- [x] With no signature on the host profile, the button stays disabled and explains that.\n- [x] Upload a signature (including one with a white background), add it, export the PDF, and confirm the ink is about 10 mm tall and the white background does not cover the form.\n- [ ] Remove the signature and confirm a new export leaves the namnteckning line blank.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Add your profile signature directly to official forms, such as those from the Swedish Social Insurance Agency, before printing or sending. The saved signature from your practitioner profile is neatly placed on the signature line, and the white background is removed so it blends seamlessly into the form. Adding the signature is always optional.</p>","translations":{"en":{"title":"Add your signature to official forms with a single click","body_html":"<p dir=\"auto\">Add your profile signature directly to official forms, such as those from the Swedish Social Insurance Agency, before printing or sending. The saved signature from your practitioner profile is neatly placed on the signature line, and the white background is removed so it blends seamlessly into the form. Adding the signature is always optional.</p>"},"sv":{"title":"Lägg till din signatur på officiella blanketter med ett klick","body_html":"<p dir=\"auto\">Lägg till din profilsignatur direkt på blanketter till ex. Försäkringskassan innan du skriver ut eller skickar. Den sparade signaturen från behandlarprofilen placeras snyggt på namnteckningsraden, och vit bakgrund tas bort så att den smälter in i blanketten. Signaturen är alltid frivillig.</p>"},"es":{"title":"Añade tu firma a los formularios oficiales con un solo clic","body_html":"<p dir=\"auto\">Incluye la firma de tu perfil directamente en formularios oficiales, como los de la Seguridad Social sueca, antes de imprimirlos o enviarlos. La firma guardada en tu perfil de profesional se coloca con precisión en la línea de firma, y el fondo blanco se elimina para que se integre perfectamente en el documento. Añadir la firma es siempre opcional.</p>"},"no":{"title":"Legg til signaturen din på offisielle skjemaer med ett klikk","body_html":"<p dir=\"auto\">Legg til profilsignaturen din direkte på offisielle skjemaer, for eksempel fra NAV, før du skriver ut eller sender. Den lagrede signaturen fra behandlerprofilen plasseres pent på signaturlinjen, og den hvite bakgrunnen fjernes slik at signaturen smelter inn i skjemaet. Signaturen er alltid valgfri.</p>"},"dk":{"title":"Tilføj din underskrift på officielle blanketter med ét klik","body_html":"<p dir=\"auto\">Tilføj din profilunderskrift direkte på officielle blanketter, f.eks. fra Udbetaling Danmark, inden du printer eller sender. Den gemte underskrift fra behandlerprofilen placeres pænt på underskriftslinjen, og den hvide baggrund fjernes, så den glider ind i blanketten. Underskriften er altid valgfri.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10393","title":"Client profiles now show the preferred first name from SPAR and Navet","state":"closed","number":10393,"created_at":"2026-10-07T13:56:34Z","repo_name":"Kaddio Application","merged_at":"2026-10-09T07:56:18Z","body":"## Summary\n- Maps SPAR/NAVET tilltalsnamn to `firstname` and stores the full Förnamn in `officialGivenNames` when they differ ([#9273](https://github.com/kaddio/kaddio/issues/9273)).\n- Shows official given names in grey under Förnamn on the client profile and in the new-patient modal after a lookup.\n- Leaves a manually chosen firstname intact on later SPAR/NAVET fetches; hosts can set `officialGivenNames` (including GraphQL).\n\nInternal how-to: [Personregister ‐ SPAR och Navet](https://github.com/kaddio/kaddio/wiki/Personregister-%E2%80%90-SPAR-och-Navet).\n\n## Test plan\n\n**If both are connected, \"Hämta uppgifter\" uses Navet.** Disconnect Navet when testing SPAR.\n\n### Navet\n\nOrg setting: **Anslut till Navet**. Use a test beställnings-id (this switches the motor to Skatteverket’s test environment and org `162021004748`):\n\n- `00000236-FO01-0001` — without sekretess persons\n- `00000236-FO01-0002` — with sekretess persons\n\nOfficial person list: [Testdata Navet (xlsx)](https://www.skatteverket.se/download/18.16f588619a39f2c14a183f/1789561638284/navet-testdata.xlsx) (updated 2026-03-02).\n\n| Personnummer | Förnamn in Navet | Tilltal | Expected `firstname` | Grey official names |\n| --- | --- | --- | --- | --- |\n| `194107086995` | Svante Hans-Emil Grundberg | 12 | Svante Hans | Svante Hans-Emil |\n| `193104019140` | Karin Ulrika Stina Viola Albertsson | 40 | Viola | Karin Ulrika Stina Viola |\n| `198602052386` | Riitta Rantanen | 10 | Riitta | hidden (same as firstname) |\n| `195812193091` | Sture Johan … Jan-Erik Tolvling | 50 | Karl | full Förnamn — **sekretess**, needs `…-0002` |\n\n- [ ] Fetch `194107086995` on a client profile: firstname is **Svante Hans**, grey text **Svante Hans-Emil**.\n- [ ] Same lookup in **Lägg till ny patient**; official names show under Förnamn.\n- [ ] Fetch `198602052386`: firstname **Riitta**, no grey official names.\n- [ ] Change personnummer in the new-patient modal (`194107086995` → `193104019140`) and fetch again: firstname becomes **Viola**, official names **Karin Ulrika Stina Viola**.\n\n### SPAR\n\nOrg setting: **Anslut till SPAR**. Kundnummer `500243`, uppdrags-id `637`, orgnr `0000000000` (orgnr is not sent to SPAR). That combination hits SPAR kundtest (`https://test-personsok.statenspersonadressregister.se/2023.1`).\n\nFull list: [Testfall för personsökning i kundtestmiljön v9.1](https://statenspersonadressregister.se/media/zl2lun1q/testfall-foer-personsoekning-i-kundtestmiljoen_v91.pdf).\n\n| Personnummer | Förnamn in SPAR | Expected `firstname` | Grey official names |\n| --- | --- | --- | --- |\n| `195704133106` | Christina Birgitta Ulrika Efternamn3542 | Birgitta | Christina Birgitta Ulrika |\n| `198007199295` | Kuno Efternamn2993 | Kuno | hidden (same as firstname) |\n| `200809152382` | Förnamn saknas | empty | hidden |\n\n- [ ] Fetch `195704133106` on a client profile: firstname is **Birgitta**, grey text **Christina Birgitta Ulrika**.\n- [ ] Same lookup in **Lägg till ny patient**.\n- [ ] Fetch `198007199295`: firstname **Kuno**, no grey official names.\n\n### Both\n\n- [ ] On an existing profile, set a custom firstname, fetch SPAR or Navet, and confirm firstname is not overwritten.\n- [ ] Confirm a client cannot set `officialGivenNames`; a host can.","body_html":"<p dir=\"auto\">When fetching client details from SPAR or Navet, Kaddio now uses the person's preferred first name (tilltalsnamn) instead of the full list of given…</p>\n<p dir=\"auto\">In the Journal and when adding a new patient, the full official given names appear in grey underneath — so you always see both the name the client goes by and their legal names from the population register.</p>\n<p dir=\"auto\">If you've manually set a first name on a client, it stays untouched the next time you fetch updated details.</p>","translations":{"en":{"title":"Client profiles now show the preferred first name from SPAR and Navet","body_html":"<p dir=\"auto\">When fetching client details from SPAR or Navet, Kaddio now uses the person's preferred first name (tilltalsnamn) instead of the full list of given…</p>\n<p dir=\"auto\">In the Journal and when adding a new patient, the full official given names appear in grey underneath — so you always see both the name the client goes by and their legal names from the population register.</p>\n<p dir=\"auto\">If you've manually set a first name on a client, it stays untouched the next time you fetch updated details.</p>"},"sv":{"title":"Klientprofiler visar nu tilltalsnamnet från SPAR och Navet","body_html":"<p dir=\"auto\">När du hämtar uppgifter från SPAR eller Navet använder Kaddio nu personens tilltalsnamn som förnamn istället för hela raden med förnamn.</p>\n<p dir=\"auto\">I journalen och när du lägger till en ny patient visas de folkbokförda förnamnen i grått under förnamnsfältet — så att du alltid ser både tilltalsnamnet och de officiella namnen från folkbokföringen.</p>\n<p dir=\"auto\">Om du har satt ett eget förnamn på en klient behålls det vid framtida hämtningar från SPAR eller Navet.</p>"},"es":{"title":"Los perfiles de clientes ahora muestran el nombre habitual del registro de población","body_html":"<p dir=\"auto\">Al obtener datos desde los registros suecos SPAR y Navet, Kaddio usa ahora el nombre habitual (tilltalsnamn) de la persona en lugar de toda la…</p>\n<p dir=\"auto\">En la ficha clínica y al añadir un nuevo paciente, los nombres oficiales completos aparecen en gris bajo el campo de nombre, para que siempre veas tanto el nombre que usa el cliente como sus nombres legales.</p>\n<p dir=\"auto\">Si has escrito manualmente un nombre en una ficha, se mantiene intacto al volver a consultar los registros.</p>"},"no":{"title":"Klientprofiler viser nå tiltalenavnet fra SPAR og Navet","body_html":"<p dir=\"auto\">Når Kaddio henter opplysninger fra SPAR eller Navet, brukes nå personens tiltalenavn (tilltalsnamn) som fornavn, i stedet for hele rekken av fornavn.</p>\n<p dir=\"auto\">I journalen og når du legger til en ny pasient vises de folkeregistrerte fornavnene i grått under fornavnfeltet, slik at du alltid ser både tiltalenavnet og de offisielle navnene.</p>\n<p dir=\"auto\">Hvis du har satt et eget fornavn på en klient, blir det stående uendret ved senere oppslag.</p>"},"dk":{"title":"Klientprofiler viser nu kaldenavnet fra SPAR og Navet","body_html":"<p dir=\"auto\">Når Kaddio henter oplysninger fra SPAR eller Navet, bruges personens kaldenavn (tilltalsnamn) nu som fornavn i stedet for hele rækken af fornavne.</p>\n<p dir=\"auto\">I journalen og når du opretter en ny patient vises de folkeregistrerede fornavne i gråt under fornavnsfeltet, så du altid ser både kaldenavnet og de officielle navne.</p>\n<p dir=\"auto\">Hvis du har indtastet et fornavn manuelt på en klient, bevares det ved senere opslag.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10309","title":"Reconcile paid invoices by uploading a CAMT.054 file","state":"closed","number":10309,"created_at":"2026-09-28T11:29:09Z","repo_name":"Kaddio Application","merged_at":"2026-10-09T06:42:09Z","body":"## Summary\n- Admins can upload a CAMT.054 kreditavi from the sent invoices list to tick off matching invoices (OCR or invoice number).\n- Reuses existing avprickning matching and the auto tick-off asset account; skips debits and reversals.\n- Parses Swedbank-style camt.054.001.02 credit notifications with `xml-parser` (no extra ISO 20022 library).\n\n## Test plan\n- [ ] Confirm a tillgångskonto is set under Fakturering → Automatisk avprickning.\n- [ ] On Fakturor → Fakturor, upload `camt.054 Credit (xml).xml` (not Debit / Debit Return / paper-only unless that is the real payment).\n- [ ] Matching invoices are marked paid; summary shows ticked off / already paid / unmatched.\n- [ ] Non-admin cannot upload; invalid XML and debit-only files are rejected.\n- [ ] `npm run test:unit:once` covers `parse-camt054.unit-test.ts`; full-app `camt054.app-test.ts` covers `invoices.processCamt054`.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Go to <em>Invoices</em> &gt; <em>Invoices</em> &gt; <em>More</em> and select <em>Upload CAMT</em>. Kaddio matches each payment to an invoice using OCR or invoice number, and gives you a clear summary of how many were reconciled, already paid, or had no match.</p>\n<p dir=\"auto\">An asset account for automatic reconciliation must be set up under the invoice settings for the upload to work.</p>","translations":{"en":{"title":"Reconcile paid invoices by uploading a CAMT.054 file","body_html":"<p dir=\"auto\">Go to <em>Invoices</em> &gt; <em>Invoices</em> &gt; <em>More</em> and select <em>Upload CAMT</em>. Kaddio matches each payment to an invoice using OCR or invoice number, and gives you a clear summary of how many were reconciled, already paid, or had no match.</p>\n<p dir=\"auto\">An asset account for automatic reconciliation must be set up under the invoice settings for the upload to work.</p>"},"sv":{"title":"Pricka av betalda fakturor genom att ladda upp en CAMT.054-fil","body_html":"<p dir=\"auto\">Gå till <em>Fakturor</em> &gt; <em>Fakturor</em> &gt; <em>Mer</em> och välj <em>Ladda upp CAMT</em>. Kaddio matchar varje betalning mot en faktura via OCR eller fakturanummer och visar en sammanställning över hur många som prickats av, redan var betalda eller saknade matchning.</p>\n<p dir=\"auto\">Ett tillgångskonto för automatisk avprickning behöver vara inställt under fakturainställningarna för att uppladdningen ska fungera.</p>"},"es":{"title":"Concilia facturas pagadas subiendo un archivo CAMT.054","body_html":"<p dir=\"auto\">Ve a <em>Facturas</em> &gt; <em>Facturas</em> &gt; <em>Más</em> y selecciona <em>Subir CAMT</em>. Kaddio empareja cada pago con una factura mediante OCR o número de factura y te muestra un resumen claro de cuántas se han conciliado, cuáles ya estaban pagadas y cuáles no tenían coincidencia.</p>\n<p dir=\"auto\">Para que la carga funcione, es necesario configurar una cuenta de activo para la conciliación automática en los ajustes de facturación.</p>"},"no":{"title":"Avstem betalte fakturaer ved å laste opp en CAMT.054-fil","body_html":"<p dir=\"auto\">Gå til <em>Fakturaer</em> &gt; <em>Fakturaer</em> &gt; <em>Mer</em> og velg <em>Last opp CAMT</em>. Kaddio matcher hver betaling mot en faktura via KID eller fakturanummer, og viser en oversikt over hvor mange som ble avstemt, allerede var betalt eller manglet treff.</p>\n<p dir=\"auto\">En eiendelskonto for automatisk avstemming må være satt opp under fakturainnstillingene for at opplastingen skal fungere.</p>"},"dk":{"title":"Afstem betalte fakturaer ved at uploade en CAMT.054-fil","body_html":"<p dir=\"auto\">Gå til <em>Fakturaer</em> &gt; <em>Fakturaer</em> &gt; <em>Mere</em> og vælg <em>Upload CAMT</em>. Kaddio matcher hver betaling med en faktura via OCR eller fakturanummer og viser et overblik over, hvor mange der blev afstemt, allerede var betalt eller manglede et match.</p>\n<p dir=\"auto\">En aktivkonto til automatisk afstemning skal være opsat under fakturaindstillingerne, for at uploaden virker.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10363","title":"Auto-save for letter templates","state":"closed","number":10363,"created_at":"2026-10-05T13:26:35Z","repo_name":"Kaddio Application","merged_at":"2026-10-09T06:40:49Z","body":"## Summary\n- The letter template editor saves about a second after you stop editing, and shows Sparar... / Sparad in the breadcrumb.\n- Template fields are saved on their own, so an autosave cannot overwrite attachments.\n- The Spara button still saves immediately.\n\n## Test plan\n- [ ] Open a letter template, change the name and body, and wait until Sparad appears without clicking Spara.\n- [ ] Reload the page and confirm the edits are still there.\n- [ ] Click Spara and confirm the saved toast still appears.\n- [ ] Add and remove a PDF attachment and confirm it is not lost after further text edits.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Letter templates in the journal module are now saved automatically as you work, so your changes are never lost.</p>","translations":{"en":{"title":"Auto-save for letter templates","body_html":"<p dir=\"auto\">Letter templates in the journal module are now saved automatically as you work, so your changes are never lost.</p>"},"sv":{"title":"Autospar på brevmallar","body_html":"<p dir=\"auto\">Brevmallar i journalmodulen sparas automatiskt medan du arbetar, så dina ändringar aldrig går förlorade.</p>"},"es":{"title":"Guardado automático en plantillas de cartas","body_html":"<p dir=\"auto\">Las plantillas de cartas del módulo de historia clínica se guardan automáticamente mientras trabajas, para que tus cambios nunca se pierdan.</p>"},"no":{"title":"Autolagring av brevmaler","body_html":"<p dir=\"auto\">Brevmaler i journalmodulen lagres automatisk mens du jobber, slik at endringene dine aldri går tapt.</p>"},"dk":{"title":"Autogem på brevskabeloner","body_html":"<p dir=\"auto\">Brevskabeloner i journalmodulet gemmes automatisk, mens du arbejder, så dine ændringer aldrig går tabt.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10412","title":"Phone numbers are now clickable across Kaddio","state":"closed","number":10412,"created_at":"2026-10-08T22:46:20Z","repo_name":"Kaddio Application","merged_at":"2026-10-08T22:48:17Z","body":"this means that if you use a softphone app, clicking the links will integrate to that softphone.","body_html":"<p dir=\"auto\">Phone numbers shown throughout Kaddio are now clickable links that start a call.</p>\n<p dir=\"auto\">If you use a softphone or mobile device, a single click on a client's number in the dashboard, group lists, member info or campaign previews will launch your calling app. No setup needed.</p>","translations":{"en":{"title":"Phone numbers are now clickable across Kaddio","body_html":"<p dir=\"auto\">Phone numbers shown throughout Kaddio are now clickable links that start a call.</p>\n<p dir=\"auto\">If you use a softphone or mobile device, a single click on a client's number in the dashboard, group lists, member info or campaign previews will launch your calling app. No setup needed.</p>"},"sv":{"title":"Telefonnummer går nu att klicka på i hela Kaddio","body_html":"<p dir=\"auto\">Telefonnummer som visas i Kaddio är nu klickbara länkar som startar ett samtal.</p>\n<p dir=\"auto\">Använder du en softphone eller mobil enhet räcker det med ett klick på numret i klientöversikten, grupplistor, medlemsinformation eller kampanjvyer för att starta samtalet. Ingen inställning krävs.</p>"},"es":{"title":"Los números de teléfono ahora son clicables en Kaddio","body_html":"<p dir=\"auto\">Los números de teléfono que aparecen en Kaddio ahora son enlaces clicables que inician una llamada.</p>\n<p dir=\"auto\">Si usas un softphone o un dispositivo móvil, bastará un clic en el número desde el panel del cliente, listas de grupos, información de miembros o vistas previas de campañas para iniciar la llamada. No requiere configuración.</p>"},"no":{"title":"Telefonnumre er nå klikkbare i hele Kaddio","body_html":"<p dir=\"auto\">Telefonnumre som vises i Kaddio er nå klikkbare lenker som starter en samtale.</p>\n<p dir=\"auto\">Bruker du en softphone eller mobil enhet, holder det med ett klikk på nummeret i klientoversikten, gruppelister, medlemsinformasjon eller kampanjevisninger for å starte samtalen. Ingen oppsett kreves.</p>"},"dk":{"title":"Telefonnumre kan nu klikkes i hele Kaddio","body_html":"<p dir=\"auto\">Telefonnumre, der vises i Kaddio, er nu klikbare links, der starter et opkald.</p>\n<p dir=\"auto\">Bruger du en softphone eller mobil enhed, er et enkelt klik på nummeret i klientoversigten, gruppelister, medlemsinformation eller kampagnevisninger nok til at starte opkaldet. Ingen opsætning kræves.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10357","title":"Incoming documents are now read and sorted by AI into cases","state":"closed","number":10357,"created_at":"2026-10-04T17:19:17Z","repo_name":"Kaddio Application","merged_at":"2026-10-08T10:08:50Z","body":"## Summary\nNew **Inkommande** nav section: scanned/photographed remisser and letters are read by AI, sequenced into items, matched to a case template and patient, and reviewed side-by-side with the documents before approval creates the case.\n\n- **Case templates & fields** get `aiInstructions`; templates use a FILES field for the source documents.\n- **Ingest**: `POST /api/incoming/upload` (API token for scanners, or cookie + `X-Kaddio-Incoming` header from the UI). PDFs are split into pages; processing runs 1 min after the last upload, or immediately via \"Bearbeta\".\n- **Processing**: OCR per page (lightweight model), first-page guessing + segmentation into items (continuing the previous open item when appropriate), then template choice and field extraction (full model). Document content is treated as data, never instructions.\n- **Review UI** (Svelte): overview with queue and counts, split-screen review (PDF viewer + template, patient, client match/search, typed fields with low-confidence highlight), and a *Sidordning* step to correct page grouping.\n- **Approval**: atomic draft→approving, creates the client if no pid match, merges page groups into PDFs in `caseFiles`, creates the case via `createCaseForClientAsync`, then removes the incoming pages.\n- **Access**: org flag `hasIncoming` (requires AI + cases) and a new `incoming` privilege for hosts; nav badge with live count.\n\n## Testing\n- Unit tests: segmentation, extraction mapping.\n- App tests (`MOCHA_GREP=incoming`): segmentation, continuation, split/merge, approval (case, new client, files), single approval, coercion, discard, unauthorized client, module disabled, publication.\n- Manual smoke against Requesty with a synthetic PDF page (OCR + checkbox + pid extraction).\n\n## Known caveats\n- No AI usage logging/pricing yet.\n- Created clients have no email.\n- An item could remain in \"approving\" after a server crash mid-approval.\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">A new Incoming section turns scanned referrals and letters into ready-to-review cases, with AI reading each page and matching it to the right…</p>\n<p dir=\"auto\">Staff can upload documents directly from a scanner or through Kaddio. The AI then splits multi-page files, suggests which case template fits, extracts key fields and finds the matching client. Everything is presented side by side with the original document, so you can check, correct the page order if needed, and approve with one click to create the case.</p>\n<p dir=\"auto\">Available to organizations using the AI and Cases modules. Administrators can enable Incoming in the organization settings and control access through the new Incoming permission.</p>","translations":{"en":{"title":"Incoming documents are now read and sorted by AI into cases","body_html":"<p dir=\"auto\">A new Incoming section turns scanned referrals and letters into ready-to-review cases, with AI reading each page and matching it to the right…</p>\n<p dir=\"auto\">Staff can upload documents directly from a scanner or through Kaddio. The AI then splits multi-page files, suggests which case template fits, extracts key fields and finds the matching client. Everything is presented side by side with the original document, so you can check, correct the page order if needed, and approve with one click to create the case.</p>\n<p dir=\"auto\">Available to organizations using the AI and Cases modules. Administrators can enable Incoming in the organization settings and control access through the new Incoming permission.</p>"},"sv":{"title":"Inkommande dokument läses nu av AI och blir till ärenden","body_html":"<p dir=\"auto\">En ny Inkommande-vy förvandlar inskannade remisser och brev till färdiga ärenden – AI läser varje sida och föreslår mall och patient.</p>\n<p dir=\"auto\">Ladda upp dokument direkt från skannern eller i Kaddio. AI delar upp flersidiga filer, föreslår rätt ärendemall, fyller i fält och letar fram klienten. Allt visas sida vid sida med originaldokumentet så att du enkelt kan granska, justera sidordningen och godkänna – då skapas ärendet automatiskt.</p>\n<p dir=\"auto\">Finns för organisationer med modulerna AI och Ärenden. Administratörer aktiverar Inkommande i organisationsinställningarna och styr åtkomsten via den nya behörigheten Inkommande.</p>"},"es":{"title":"Los documentos entrantes ahora los lee la IA y los convierte en casos","body_html":"<p dir=\"auto\">La nueva sección Entrantes convierte derivaciones y cartas escaneadas en casos listos para revisar, con IA que lee cada página y la asigna a la…</p>\n<p dir=\"auto\">Sube documentos directamente desde el escáner o desde Kaddio. La IA divide los archivos de varias páginas, sugiere la plantilla de caso adecuada, rellena los campos y localiza al cliente. Todo se muestra junto al documento original para que puedas revisar, ajustar el orden de las páginas y aprobar con un clic.</p>\n<p dir=\"auto\">Disponible para organizaciones con los módulos de IA y Casos. Los administradores pueden activar Entrantes en los ajustes de la organización y gestionar el acceso con el nuevo permiso Entrantes.</p>"},"no":{"title":"Innkommende dokumenter leses nå av AI og blir til saker","body_html":"<p dir=\"auto\">En ny Innkommende-visning gjør skannede henvisninger og brev om til ferdige saker, med AI som leser hver side og foreslår riktig mal og pasient.</p>\n<p dir=\"auto\">Last opp dokumenter direkte fra skanneren eller i Kaddio. AI deler opp flersidige filer, foreslår riktig saksmal, fyller inn felter og finner klienten. Alt vises side om side med originaldokumentet, slik at du enkelt kan kontrollere, justere siderekkefølgen og godkjenne – da opprettes saken automatisk.</p>\n<p dir=\"auto\">Tilgjengelig for organisasjoner med modulene AI og Saker. Administratorer aktiverer Innkommende i organisasjonsinnstillingene og styrer tilgang via den nye Innkommende-tilgangen.</p>"},"dk":{"title":"Indkommende dokumenter læses nu af AI og bliver til sager","body_html":"<p dir=\"auto\">En ny Indkommende-visning laver scannede henvisninger og breve om til klar-til-gennemgang-sager, hvor AI læser hver side og matcher den med rette…</p>\n<p dir=\"auto\">Upload dokumenter direkte fra scanneren eller i Kaddio. AI opdeler flersidede filer, foreslår den rigtige sagsskabelon, udfylder felter og finder klienten. Alt vises side om side med originaldokumentet, så du nemt kan gennemgå, justere siderækkefølgen og godkende – så oprettes sagen automatisk.</p>\n<p dir=\"auto\">Tilgængelig for organisationer med modulerne AI og Sager. Administratorer aktiverer Indkommende i organisationsindstillingerne og styrer adgangen via den nye Indkommende-rettighed.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10375","title":"Case templates can now be shared as installable packages","state":"closed","number":10375,"created_at":"2026-10-06T11:24:55Z","repo_name":"Kaddio Application","merged_at":"2026-10-08T07:44:23Z","body":"## Summary\n- Case templates can be published and installed as Kaddio packages, alongside forms, contact types, and letter templates.\n- The shared copy keeps the template settings and drops organization-specific links (forms, responsible person, groups, required client property, and the case-number counter).\n- Settings and the market overview can create and find ärendemall packages.\n\n## Test plan\n- [ ] As an admin, open a case template and choose Skapa paket. Confirm a private package is created and the original template is unchanged.\n- [ ] Install that package in another organization and confirm the new template has the shared fields, empty form links, and case numbers starting at 1.\n- [ ] Confirm a template from another organization cannot be packaged.\n- [ ] Remove the package and confirm the original organization template remains.\n- [ ] Filter the market overview on Ärendemallar.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Share your case templates with other clinics as installable Kaddio packages, just like forms and letter templates.</p>\n<p dir=\"auto\">In Cases, open any template and choose Create package to publish it. The shared copy keeps your template settings but leaves out organization-specific details like linked forms, responsible person, and case numbering. Other clinics can then find and install it from the marketplace under Case templates.</p>\n<p dir=\"auto\">A great way to spread well-crafted workflows across organizations without starting from scratch.</p>","translations":{"en":{"title":"Case templates can now be shared as installable packages","body_html":"<p dir=\"auto\">Share your case templates with other clinics as installable Kaddio packages, just like forms and letter templates.</p>\n<p dir=\"auto\">In Cases, open any template and choose Create package to publish it. The shared copy keeps your template settings but leaves out organization-specific details like linked forms, responsible person, and case numbering. Other clinics can then find and install it from the marketplace under Case templates.</p>\n<p dir=\"auto\">A great way to spread well-crafted workflows across organizations without starting from scratch.</p>"},"sv":{"title":"Ärendemallar kan nu delas som installerbara paket","body_html":"<p dir=\"auto\">Dela ärendemallar med andra kliniker som installerbara Kaddio-paket, precis som formulär och brevmallar.</p>\n<p dir=\"auto\">Öppna en ärendemall och välj Skapa paket för att publicera den. Den delade kopian behåller mallens inställningar men utelämnar organisationsspecifika uppgifter som kopplade formulär, ansvarig person och ärendenummerserie. Andra kliniker hittar och installerar mallen via marknaden under Ärendemallar.</p>\n<p dir=\"auto\">Ett enkelt sätt att sprida genomtänkta arbetssätt mellan organisationer utan att börja om från början.</p>"},"es":{"title":"Las plantillas de casos ya se pueden compartir como paquetes instalables","body_html":"<p dir=\"auto\">Comparte tus plantillas de casos con otras clínicas como paquetes de Kaddio, igual que los formularios y las plantillas de cartas.</p>\n<p dir=\"auto\">Abre una plantilla de caso y elige Crear paquete para publicarla. La copia compartida mantiene la configuración de la plantilla pero omite datos específicos de la organización, como formularios vinculados, persona responsable y numeración de casos. Otras clínicas pueden encontrarla e instalarla desde el mercado, en Plantillas de casos.</p>\n<p dir=\"auto\">Una forma sencilla de difundir flujos de trabajo bien pensados entre organizaciones.</p>"},"no":{"title":"Saksmaler kan nå deles som installerbare pakker","body_html":"<p dir=\"auto\">Del saksmaler med andre klinikker som installerbare Kaddio-pakker, på samme måte som skjema og brevmaler.</p>\n<p dir=\"auto\">Åpne en saksmal og velg Opprett pakke for å publisere den. Den delte kopien beholder malens innstillinger, men utelater organisasjonsspesifikke detaljer som koblede skjema, ansvarlig person og saksnummerering. Andre klinikker finner og installerer malen via markedet under Saksmaler.</p>\n<p dir=\"auto\">En enkel måte å spre gjennomtenkte arbeidsflyter mellom organisasjoner.</p>"},"dk":{"title":"Sagsskabeloner kan nu deles som installerbare pakker","body_html":"<p dir=\"auto\">Del sagsskabeloner med andre klinikker som installerbare Kaddio-pakker, ligesom formularer og brevskabeloner.</p>\n<p dir=\"auto\">Åbn en sagsskabelon og vælg Opret pakke for at udgive den. Den delte kopi bevarer skabelonens indstillinger, men udelader organisationsspecifikke detaljer som tilknyttede formularer, ansvarlig person og sagsnummerering. Andre klinikker kan finde og installere skabelonen via markedet under Sagsskabeloner.</p>\n<p dir=\"auto\">En enkel måde at dele gennemtænkte arbejdsgange mellem organisationer.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10267","title":"Smart scheduling can now be controlled per working hour","state":"closed","number":10267,"created_at":"2026-09-23T10:01:58Z","repo_name":"Kaddio Application","merged_at":"2026-10-07T14:07:04Z","body":"## Summary\r\n- Adds a Smart schemaläggning section under Mer in the arbetstid editor, with organisationsstandard, inaktiverad, and the existing strategies.\r\n- Stores the choice on that bookable time and applies it only when generating and showing its free times. The org start/end hour window is unchanged.\r\n\r\n## Test plan\r\n- [ ] Open an arbetstid, choose Mer, and set each smart-scheduling option. Confirm it saves and stays selected after reload.\r\n- [ ] With the org strategy on, set one arbetstid to Inaktiverad and confirm its slots stay visible inside the smart-scheduling window while other arbetstider still follow the org.\r\n- [ ] With the org strategy off, set one arbetstid to Från start and confirm only that arbetstid's slots are filtered.\r\n- [ ] Change the org strategy and confirm arbetstider left on Organisationsstandard follow it, while an explicit override does not.\r\n\r\n\r\nMade with [Cursor](https://cursor.com)\r\n\r\n\r\nÅterkoppla till \r\n[gunnar@naprapatbokneberg.se](mailto:gunnar@naprapatbokneberg.se)\r\n[t.hylmo@kbtstruktur.se](mailto:t.hylmo@kbtstruktur.se)\r\ndidrik@familjemottagningen.com","body_html":"<p dir=\"auto\">In the calendar, each working hour can now override the clinic's smart scheduling setting. Open a working hour, select <em>More</em> and set Smart scheduling to the organization default, disabled, or any of the available strategies. Other working hours will continue to follow the shared setting.</p>","translations":{"en":{"title":"Smart scheduling can now be controlled per working hour","body_html":"<p dir=\"auto\">In the calendar, each working hour can now override the clinic's smart scheduling setting. Open a working hour, select <em>More</em> and set Smart scheduling to the organization default, disabled, or any of the available strategies. Other working hours will continue to follow the shared setting.</p>"},"sv":{"title":"Smart schemaläggning kan styras per arbetstid","body_html":"<p dir=\"auto\">I kalendern kan varje arbetstid nu åsidosätta klinikens inställning för smart schemaläggning. Öppna en arbetstid, välj <em>Mer</em> och ställ in Smart schemaläggning på organisationsstandard, inaktiverad eller någon av de tillgängliga strategierna. Övriga arbetstider följer fortsatt den gemensamma inställningen.</p>"},"es":{"title":"La programación inteligente ahora se puede controlar por horario de trabajo","body_html":"<p dir=\"auto\">En el calendario, cada horario de trabajo ahora puede anular la configuración de programación inteligente de la clínica. Abre un horario de trabajo, selecciona <em>Más</em> y establece la Programación inteligente en el valor predeterminado de la organización, desactivada o cualquiera de las estrategias disponibles. El resto de los horarios de trabajo seguirán utilizando la configuración común.</p>"},"no":{"title":"Smart timeplanlegging kan styres per arbeidstid","body_html":"<p dir=\"auto\">I kalenderen kan hver arbeidstid nå overstyre klinikkens innstilling for smart timeplanlegging. Åpne en arbeidstid, velg <em>Mer</em> og sett Smart timeplanlegging til organisasjonsstandard, deaktivert eller en av de tilgjengelige strategiene. Øvrige arbeidstider følger fortsatt den felles innstillingen.</p>"},"dk":{"title":"Smart planlægning kan styres pr. arbejdstid","body_html":"<p dir=\"auto\">I kalenderen kan hver arbejdstid nu tilsidesætte klinikkens indstilling for smart planlægning. Åbn en arbejdstid, vælg <em>Mere</em> og indstil Smart planlægning til organisationens standard, deaktiveret eller en af de tilgængelige strategier. Øvrige arbejdstider følger fortsat den fælles indstilling.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10283","title":"Add a brand new client directly from the waiting list","state":"closed","number":10283,"created_at":"2026-09-23T16:06:28Z","repo_name":"Kaddio Application","merged_at":"2026-10-07T06:26:08Z","body":"## Vad\n- Möjligt att lägga till en helt ny patient direkt i en väntelista, utan att först behöva skapa patienten på klientlistan och sedan söka upp den.\n- Layouten på väntelistans detaljsida mirrorar nu exakt \"Patienter\"-sektionen på företagskunder: **Sök...**-filter till vänster, **Sök patient för att lägga till** + **Ny patient**-knapp till höger.\n\n## Implementation\n- `accounts.createClient` accepterar nu ett valfritt `waitingListId`. När det anges: verifierar `waitinglist`-behörighet + att listan tillhör orgen, skapar patienten och lägger till den i listan i samma serveranrop — samma mönster som redan finns för `customerId` (företagskund).\n- `newClient(profile, options)`-fabriken i `account.js` tar nu emot `{ waitingListId }` och skickar det vidare till `CreateClientCtrl` → `accounts.createClient`. Befintliga anrop utan `options` är opåverkade.\n- La till `private.waitinglist` i undantagslistan för automatisk navigering efter skapande (samma undantag som redan finns för `private.customer`), så man stannar kvar på väntelistan.\n- Extraherade delad hjälpfunktion `addProfileToWaitingList` i `waiting_list_methods.ts` (återanvänds nu av både `wl.addClientToList` och `accounts.createClient`) — ingen ändrad logik för befintligt flöde.\n\n## UI\n- `waiting-list.ng.html`: ny tvåkolumnslayout för sök/filtrera + lägg till-sektionen.\n\nDel 2 av serien kring väntelistor (se även #10282 för \"lägg till patient i väntelista från klientöversikten\").","body_html":"<p dir=\"auto\">You can now create a brand new client directly from within a waiting list, without having to go via the client list. You can also search for clients within a waiting list. As before, you can still search for and select an existing client.</p>","translations":{"en":{"title":"Add a brand new client directly from the waiting list","body_html":"<p dir=\"auto\">You can now create a brand new client directly from within a waiting list, without having to go via the client list. You can also search for clients within a waiting list. As before, you can still search for and select an existing client.</p>"},"sv":{"title":"Lägg till en helt ny klient direkt från väntelistan","body_html":"<p dir=\"auto\">Nu går det att skapa en helt ny klient direkt inifrån en väntelista, utan omvägen via klientlistan. Det går också att söka efter klienter i en väntlista. Sedan tidigare går det också att söka och välja en befintlig klient.</p>"},"es":{"title":"Añade un cliente nuevo directamente desde la lista de espera","body_html":"<p dir=\"auto\">Ahora puedes crear un cliente completamente nuevo directamente desde una lista de espera, sin tener que pasar por la lista de clientes. También puedes buscar clientes dentro de una lista de espera. Como ya era posible antes, también puedes buscar y seleccionar un cliente existente.</p>"},"no":{"title":"Legg til en helt ny klient direkte fra ventelisten","body_html":"<p dir=\"auto\">Nå kan du opprette en helt ny klient direkte fra en venteliste, uten omveien om klientlisten. Du kan også søke etter klienter i en venteliste. Som før kan du fortsatt søke opp og velge en eksisterende klient.</p>"},"dk":{"title":"Tilføj en helt ny klient direkte fra ventelisten","body_html":"<p dir=\"auto\">Nu kan du oprette en helt ny klient direkte fra en venteliste, uden omvejen via klientlisten. Du kan også søge efter klienter i en venteliste. Som hidtil kan du desuden søge og vælge en eksisterende klient.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10377","title":"Attach PDFs to physical letters","state":"closed","number":10377,"created_at":"2026-10-06T12:03:51Z","repo_name":"Kaddio Application","merged_at":"2026-10-06T14:38:21Z","body":"## Summary\n- Letter PDF attachments are available to every organization with physical mail, without the `letterAttachments` feature flag.\n- Migration 245 removes the flag document. Physical mail (`allowRealMail`) still gates the UI and uploads.\n\n## Test plan\n- [ ] On an organization with physical mail, open a letter and a letter template and confirm the Bilagor (PDF) panel is shown.\n- [ ] Add a PDF, save, create a letter from that template, and send it as physical mail so the attachment is included.\n- [ ] Confirm an organization without physical mail still does not see the attachments panel.\n- [ ] Confirm a locked letter keeps its existing attachments when saved.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">When sending physical mail from the journal, you can now include PDF attachments in A4 format. Attachments can also be saved in letter templates, ensuring recurring documents are always ready to go.</p>","translations":{"en":{"title":"Attach PDFs to physical letters","body_html":"<p dir=\"auto\">When sending physical mail from the journal, you can now include PDF attachments in A4 format. Attachments can also be saved in letter templates, ensuring recurring documents are always ready to go.</p>"},"sv":{"title":"Bifoga PDF till fysiska brev","body_html":"<p dir=\"auto\">I brev som skickas med fysisk post från journalen går det att lägga till PDF-bilagor i A4. Bilagor kan även sparas i brevmallar, så att återkommande dokument alltid finns på plats.</p>"},"es":{"title":"Adjuntar PDF a cartas físicas","body_html":"<p dir=\"auto\">En las cartas enviadas por correo postal desde la historia clínica, ahora puedes añadir archivos PDF adjuntos en formato A4. Los adjuntos también pueden guardarse en las plantillas de cartas, para que los documentos recurrentes estén siempre listos.</p>"},"no":{"title":"Legg ved PDF i fysiske brev","body_html":"<p dir=\"auto\">I brev som sendes med fysisk post fra journalen kan du nå legge til PDF-vedlegg i A4. Vedlegg kan også lagres i brevmaler, slik at tilbakevendende dokumenter alltid er på plass.</p>"},"dk":{"title":"Vedhæft PDF til fysiske breve","body_html":"<p dir=\"auto\">I breve, der sendes med fysisk post fra journalen, kan du nu tilføje PDF-vedhæftninger i A4. Vedhæftninger kan også gemmes i brevskabeloner, så tilbagevendende dokumenter altid er klar.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10325","title":"Manage API keys and webhooks directly from organization settings","state":"closed","number":10325,"created_at":"2026-09-29T12:33:52Z","repo_name":"Kaddio Application","merged_at":"2026-10-01T13:32:55Z","body":"## Summary\n- Adds an Inställningar → API tab for listing, creating, restricting, and revoking API keys (secrets shown once; GraphQL endpoints optional, empty = all).\n- Adds API-hooks management (create/edit/remove) on the same screen, with org-scoped methods and publications that omit webhook secrets.\n- Gates these operations with a new `ai_admin` privilege (defaults to admins, assignable under Sekretess → Behörigheter) instead of `isAdmin` only.\n\n## Test plan\n- [ ] As Amanda (admin): open Inställningar → API, create a named key, copy the secret, confirm the list shows prefix + name and not the full token.\n- [ ] Restrict a key to a GraphQL endpoint and confirm unlisted GraphQL operations are denied; empty endpoint list still allows all.\n- [ ] Create, edit, and remove an API hook; confirm webhook secret is never listed after create.\n- [ ] As Christine (host without `ai_admin`): confirm `/settings/api` is hidden/redirected and methods/publications return 401.\n- [ ] Grant Christine `ai_admin` under Sekretess → Behörigheter and confirm she can open the API tab and manage keys/hooks.\n- [ ] Confirm generating a token from a host profile no longer replaces existing org keys.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">A new API tab in your organization settings lets administrators create, name, and revoke API keys and manage webhooks in one place.</p>\n<p dir=\"auto\">Each API key can be limited to specific GraphQL endpoints, and secrets are shown once at creation for safer handling. Webhooks for collections such as contacts, bookings, invoices, and messages can be added, edited, and removed from the same screen.</p>\n<p dir=\"auto\">Access is controlled by a new API administrator permission, which can be assigned under Privacy → Permissions to let selected staff manage integrations without full admin rights.</p>","translations":{"en":{"title":"Manage API keys and webhooks directly from organization settings","body_html":"<p dir=\"auto\">A new API tab in your organization settings lets administrators create, name, and revoke API keys and manage webhooks in one place.</p>\n<p dir=\"auto\">Each API key can be limited to specific GraphQL endpoints, and secrets are shown once at creation for safer handling. Webhooks for collections such as contacts, bookings, invoices, and messages can be added, edited, and removed from the same screen.</p>\n<p dir=\"auto\">Access is controlled by a new API administrator permission, which can be assigned under Privacy → Permissions to let selected staff manage integrations without full admin rights.</p>"},"sv":{"title":"Hantera API-nycklar och webhooks direkt i organisationsinställningarna","body_html":"<p dir=\"auto\">En ny API-flik i organisationsinställningarna låter administratörer skapa, namnge och återkalla API-nycklar samt hantera webhooks på ett och samma…</p>\n<p dir=\"auto\">Varje API-nyckel kan begränsas till specifika GraphQL-endpoints, och den hemliga nyckeln visas endast en gång vid skapandet för säkrare hantering. Webhooks för exempelvis kontakter, bokningar, fakturor och meddelanden kan läggas till, redigeras och tas bort från samma vy.</p>\n<p dir=\"auto\">Åtkomsten styrs av en ny behörighet för API-administratör som kan tilldelas under Sekretess → Behörigheter, så att utvalda medarbetare kan sköta integrationer utan full administratörsroll.</p>"},"es":{"title":"Gestiona claves de API y webhooks desde los ajustes de la organización","body_html":"<p dir=\"auto\">Una nueva pestaña de API en los ajustes de la organización permite a los administradores crear, nombrar y revocar claves de API y gestionar…</p>\n<p dir=\"auto\">Cada clave puede limitarse a endpoints específicos de GraphQL, y el secreto se muestra solo una vez al crearla para un manejo más seguro. Los webhooks para contactos, reservas, facturas y mensajes pueden añadirse, editarse y eliminarse desde la misma pantalla.</p>\n<p dir=\"auto\">El acceso se controla mediante un nuevo permiso de administrador de API, asignable en Privacidad → Permisos, para que el personal elegido gestione integraciones sin necesidad de ser administrador completo.</p>"},"no":{"title":"Administrer API-nøkler og webhooks direkte i organisasjonsinnstillingene","body_html":"<p dir=\"auto\">En ny API-fane i organisasjonsinnstillingene lar administratorer opprette, navngi og tilbakekalle API-nøkler og håndtere webhooks på ett sted.</p>\n<p dir=\"auto\">Hver API-nøkkel kan begrenses til utvalgte GraphQL-endepunkter, og hemmeligheten vises bare én gang ved opprettelse for tryggere håndtering. Webhooks for blant annet kontakter, bookinger, fakturaer og meldinger kan legges til, endres og fjernes fra samme skjermbilde.</p>\n<p dir=\"auto\">Tilgangen styres av en ny API-administratorrettighet som kan tildeles under Personvern → Tillatelser, slik at utvalgte medarbeidere kan håndtere integrasjoner uten full administratortilgang.</p>"},"dk":{"title":"Administrer API-nøgler og webhooks direkte i organisationsindstillingerne","body_html":"<p dir=\"auto\">En ny API-fane i organisationsindstillingerne lader administratorer oprette, navngive og tilbagekalde API-nøgler samt håndtere webhooks ét sted.</p>\n<p dir=\"auto\">Hver API-nøgle kan begrænses til bestemte GraphQL-endpoints, og hemmeligheden vises kun én gang ved oprettelsen for mere sikker håndtering. Webhooks til kontakter, bookinger, fakturaer og beskeder kan tilføjes, redigeres og fjernes fra samme skærm.</p>\n<p dir=\"auto\">Adgangen styres af en ny API-administratorrettighed, der kan tildeles under Privatliv → Tilladelser, så udvalgte medarbejdere kan håndtere integrationer uden fuld administratoradgang.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10191","title":"Price lists in bookings for flexible pricing (e.g. discounts, promo codes and corporate agreements)","state":"closed","number":10191,"created_at":"2026-09-14T13:50:18Z","repo_name":"Kaddio Application","merged_at":"2026-10-01T06:35:56Z","body":"## Summary\n- Adds a **Prislistor** collection and settings tab under Tidsbokning so orgs can override booking-type prices by date, optional coupon, and criteria (host, customer, weekday, place, time of day).\n- Lowest matching list price wins; client booking uses public lists only, the host calendar uses all matching lists, and `bookingType.price` remains the fallback. E-frikort runs on the resulting amount.\n- Optional kampanjkod on confirm; customer-specific lists are shown on the invoice customer page.\n- Time-of-day criteria are hourly slots (`00-01` … `23-00`) matched on booking start in the org timezone; same-type slots are OR.\n\n## Test plan\n- [ ] Create a price list in Tidsbokning → Prislistor (name, dates, criteria, booking-type prices, public vs internal).\n- [ ] Host calendar: matching list overrides the booking type price; changing host/place/client/start recomputes; custom typed price is kept until those fields change.\n- [ ] Client booking: only public lists apply; overlapping lists pick the lowest price; coupon on confirm applies when the code matches.\n- [ ] Customer criterion uses invoice customer id; that customer's page lists only those lists.\n- [ ] Time-of-day: a `06-07` list applies at 06:30 and not at 07:00; several hour slots OR together.\n- [ ] Empty collection keeps existing `bookingType.price` behavior; e-frikort still applies after the list price.","body_html":"<p dir=\"auto\">Add special prices or promotions for selected clients, times, locations and practitioners — without having to create duplicate treatment types. Read more at <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>","translations":{"en":{"title":"Price lists in bookings for flexible pricing (e.g. discounts, promo codes and corporate agreements)","body_html":"<p dir=\"auto\">Add special prices or promotions for selected clients, times, locations and practitioners — without having to create duplicate treatment types. Read more at <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>"},"sv":{"title":"Prislistor i bokningen för flexibel prissättning (ex. rabatter, kampanjkoder och företagsavtal)","body_html":"<p dir=\"auto\">Lägg till särskilda priser eller kampanjer för utvalda kunder, tider, platser och behandlare, utan att skapa dubbla behandlingsformer. Läs mer på <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>"},"es":{"title":"Listas de precios en las reservas para una tarificación flexible (p. ej. descuentos, códigos promocionales y acuerdos con empresas)","body_html":"<p dir=\"auto\">Añade precios especiales o promociones para determinados clientes, horarios, ubicaciones y profesionales, sin necesidad de crear tipos de tratamiento duplicados. Más información en <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>"},"no":{"title":"Prislister i bookingen for fleksibel prissetting (f.eks. rabatter, kampanjekoder og bedriftsavtaler)","body_html":"<p dir=\"auto\">Legg til spesialpriser eller kampanjer for utvalgte kunder, tider, steder og behandlere – uten å måtte opprette doble behandlingsformer. Les mer på <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>"},"dk":{"title":"Prislister i bookingen for fleksibel prissætning (f.eks. rabatter, kampagnekoder og virksomhedsaftaler)","body_html":"<p dir=\"auto\">Tilføj særlige priser eller kampagner for udvalgte kunder, tider, lokationer og behandlere – uden at skulle oprette dobbelte behandlingsformer. Læs mere på <a href=\"https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/855190-prislistor-for-tidsbokning</a></p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10255","title":"Send letters to the client's contact person","state":"closed","number":10255,"created_at":"2026-09-22T13:18:03Z","repo_name":"Kaddio Application","merged_at":"2026-09-25T07:05:42Z","body":"## Summary\n- Hosts can pick a client's contact person as letter recipient (grouped under Kontaktpersoner).\n- Email, chat, and signing links go to that person; the letter stays on the client's journal.\n- Recipient identity is stored as `recipientUserId` so the postal address stays just an address.\n\nFixes #9000\n\n## Test plan\n- [ ] Mark a relation as contact person on a client profile\n- [ ] Create a letter and confirm the contact person appears under Kontaktpersoner\n- [ ] Confirm send dialogs and the Skicka menu show the contact person's name\n- [ ] Send via Kaddio Kommunikation and verify the chat is with the contact person\n- [ ] Send via email and verify it goes to the contact person\n- [ ] Sending without a contact person still targets the journal client\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">You can now select the client's registered contact person as the recipient of letters in the journal. The letter can be sent by post, through the contact person's chat in Kaddio, or via email. The letter remains stored in the client's journal. No setup is needed beyond marking a relationship as a contact person on the client's profile.</p>","translations":{"en":{"title":"Send letters to the client's contact person","body_html":"<p dir=\"auto\">You can now select the client's registered contact person as the recipient of letters in the journal. The letter can be sent by post, through the contact person's chat in Kaddio, or via email. The letter remains stored in the client's journal. No setup is needed beyond marking a relationship as a contact person on the client's profile.</p>"},"sv":{"title":"Skicka brev till klientens kontaktperson","body_html":"<p dir=\"auto\">Välj klientens registrerade kontaktperson som mottagare av brev i journalen. Brevet kan skickas via post, via kontaktpersonens chatt i Kaddio eller via epost till personen. Brevet ligger kvar i klientens journal. Ingen inställning behövs utöver att markera en relation som kontaktperson på klientens profil.</p>"},"es":{"title":"Enviar cartas al contacto del cliente","body_html":"<p dir=\"auto\">Ahora puedes seleccionar al contacto registrado del cliente como destinatario de las cartas en el historial. La carta puede enviarse por correo postal, a través del chat del contacto en Kaddio o por correo electrónico. La carta queda guardada en el historial del cliente. No se requiere ninguna configuración adicional, basta con marcar una relación como contacto en el perfil del cliente.</p>"},"no":{"title":"Send brev til klientens kontaktperson","body_html":"<p dir=\"auto\">Velg klientens registrerte kontaktperson som mottaker av brev i journalen. Brevet kan sendes med post, via kontaktpersonens chat i Kaddio eller på e-post. Brevet blir liggende i klientens journal. Ingen innstilling trengs utover å markere en relasjon som kontaktperson på klientens profil.</p>"},"dk":{"title":"Send breve til klientens kontaktperson","body_html":"<p dir=\"auto\">Vælg klientens registrerede kontaktperson som modtager af breve i journalen. Brevet kan sendes med post, via kontaktpersonens chat i Kaddio eller på e-mail. Brevet forbliver gemt i klientens journal. Der kræves ingen opsætning ud over at markere en relation som kontaktperson på klientens profil.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10241","title":"Restrict the calendar so practitioners only see their own schedule","state":"closed","number":10241,"created_at":"2026-09-22T08:34:16Z","repo_name":"Kaddio Application","merged_at":"2026-09-23T12:28:29Z","body":"## Summary\n- Adds a third Sekretess → Kalender option (`OWN_SCHEDULE`) so hosts only see their own activities and bookings.\n- Applies the current host as an attendee filter on top of date, location, and any other attendee filter. Admins still see everything.\n- Covers the new query behavior in booking app-tests; `DEFAULT` still lets hosts see other hosts' bookings.\n\n## Test plan\n- [ ] As admin, open Sekretess and select `$HostP ser endast sitt eget schema`, then save.\n- [ ] Log in as a non-admin host: calendar shows only own activities/bookings; other hosts' bookings are hidden.\n- [ ] With that setting on, filter by a client: only events shared with that client appear.\n- [ ] As admin, confirm the calendar still shows all events.\n- [ ] Switch back to `DEFAULT` and confirm other hosts' bookings are visible again to a non-admin host.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Administrators can enable this option under <em>Settings &gt; Privacy</em>. Once activated, practitioners will only see their own events in the calendar. Administrators continue to see everyone's events. Filtering by client in the calendar works as usual and shows the events involving both the practitioner and the client.</p>","translations":{"en":{"title":"Restrict the calendar so practitioners only see their own schedule","body_html":"<p dir=\"auto\">Administrators can enable this option under <em>Settings &gt; Privacy</em>. Once activated, practitioners will only see their own events in the calendar. Administrators continue to see everyone's events. Filtering by client in the calendar works as usual and shows the events involving both the practitioner and the client.</p>"},"sv":{"title":"Begränsa kalendern så att behandlare bara ser sitt eget schema","body_html":"<p dir=\"auto\">Administratörer aktiverar valet under <em>Inställningar &gt; Sekretess</em>. När aktiverad ser behandlare bara sina egna händelser i kalendern. Administratörer ser fortsatt allas händelser.  Filtrering på klient i kalendern fungerar som vanligt och visar de händelser som rör både behandlaren och klienten.</p>"},"es":{"title":"Limita el calendario para que los profesionales solo vean su propia agenda","body_html":"<p dir=\"auto\">Los administradores pueden activar esta opción en <em>Configuración &gt; Privacidad</em>. Una vez activada, los profesionales solo verán sus propios eventos en el calendario. Los administradores seguirán viendo los eventos de todos. El filtrado por cliente en el calendario funciona con normalidad y muestra los eventos que involucran tanto al profesional como al cliente.</p>"},"no":{"title":"Begrens kalenderen slik at behandlere kun ser sin egen timeplan","body_html":"<p dir=\"auto\">Administratorer aktiverer valget under <em>Innstillinger &gt; Personvern</em>. Når det er aktivert, ser behandlere kun sine egne hendelser i kalenderen. Administratorer ser fortsatt alles hendelser. Filtrering på klient i kalenderen fungerer som vanlig og viser hendelsene som gjelder både behandleren og klienten.</p>"},"dk":{"title":"Begræns kalenderen, så behandlere kun ser deres eget skema","body_html":"<p dir=\"auto\">Administratorer aktiverer valget under <em>Indstillinger &gt; Privatliv</em>. Når det er aktiveret, ser behandlere kun deres egne begivenheder i kalenderen. Administratorer ser fortsat alles begivenheder. Filtrering på klient i kalenderen fungerer som normalt og viser de begivenheder, der vedrører både behandleren og klienten.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10087","title":"Fresh look for the login page and the option to add your own logo (from September 28)","state":"closed","number":10087,"created_at":"2026-08-31T12:55:23Z","repo_name":"Kaddio Application","merged_at":"2026-09-23T08:07:51Z","body":"## Summary\n- Public login, demo login, and password flows use a 50/50 split: booking/case promo on the left, existing form on the right.\n- Transparent public header on auth routes (language + login only); org name and left nav stay on booking and case pages.\n- Login form is a `<login-form>` element instead of the old attribute directive; demo `Receptförnyelse` is public so it shows on the logged-out promo.\n\n## Test plan\n- [ ] `/login` shows photo + promo card on the left and the usual login form on the right (stacked on mobile).\n- [ ] Next free time, **Boka**, and public case cards (including Receptförnyelse in demo) work and link to booking/cases.\n- [ ] `/login-demo` uses the same split; host and client cards stack in one column.\n- [ ] Forgot/reset/enroll/logged-out also use the split; `/booking` and public case pages still show the full public navbar.\n- [ ] Header is transparent on login with body-colored semibold 14px labels; Logga in is primary-flat.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">The public login page now welcomes visitors with a split view: the login form on one side, and an inviting image along with any shortcuts to online booking and contact forms on the other. Clinics with Branding can also choose to display their own logo on the page.</p>","translations":{"en":{"title":"Fresh look for the login page and the option to add your own logo (from September 28)","body_html":"<p dir=\"auto\">The public login page now welcomes visitors with a split view: the login form on one side, and an inviting image along with any shortcuts to online booking and contact forms on the other. Clinics with Branding can also choose to display their own logo on the page.</p>"},"sv":{"title":"Ny design på inloggningssidan och möjlighet till egen logotyp (från 28 september)","body_html":"<p dir=\"auto\">Den publika inloggningssidan möter besökaren i en delad vy: inloggningsformuläret på ena sidan, en trevlig bild och eventuella genvägar till tidsbokning och kontaktformulär på andra sidan. Kliniker med Profilering kan även välja att visa sin egen logotyp på sidan.</p>"},"es":{"title":"Nuevo diseño de la página de inicio de sesión y opción de logotipo personalizado (a partir del 28 de septiembre)","body_html":"<p dir=\"auto\">La página pública de inicio de sesión recibe a los visitantes con una vista dividida: el formulario de acceso a un lado y, al otro, una imagen atractiva junto con posibles accesos directos a la reserva de citas y al formulario de contacto. Las clínicas con Personalización de marca también pueden mostrar su propio logotipo en la página.</p>"},"no":{"title":"Ny design på innloggingssiden og mulighet for egen logo (fra 28. september)","body_html":"<p dir=\"auto\">Den offentlige innloggingssiden møter besøkende med en delt visning: innloggingsskjemaet på den ene siden, og et fint bilde sammen med eventuelle snarveier til timebestilling og kontaktskjema på den andre. Klinikker med Profilering kan også velge å vise sin egen logo på siden.</p>"},"dk":{"title":"Nyt design på login-siden og mulighed for eget logo (fra 28. september)","body_html":"<p dir=\"auto\">Den offentlige login-side møder besøgende med en delt visning: login-formularen på den ene side, og et indbydende billede samt eventuelle genveje til tidsbestilling og kontaktformular på den anden. Klinikker med Profilering kan desuden vælge at vise deres eget logo på siden.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10256","title":"Add city to SMS booking confirmations","state":"closed","number":10256,"created_at":"2026-09-22T13:23:13Z","repo_name":"Kaddio Application","merged_at":"2026-09-23T06:01:27Z","body":"## Summary\n- Adds a `$city` SMS variable that prints the booking place town (empty for video visits), without changing `$address`.\n- Lists `$city` in the SMS variable table next to `$address`.\n- Fixes #9809\n\n## Test plan\n- [ ] Open Inställningar → Tidsbokning → Bekräftelser and confirm `$city` appears for orgs with places\n- [ ] Put `$address, $city` in the confirmation SMS template and send a confirmation for a physical place — street and town both appear\n- [ ] Send a confirmation for a video booking — `$city` is empty\n- [ ] Existing templates that only use `$address` still show street only\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">A new variable, $city, lets you display the city alongside the street address in confirmation SMS messages. Simply add $city to your templates under <em>Settings for Appointment Booking &gt; Confirmations.</em> For video appointments, the variable will be left empty, and existing templates using $address will continue to work exactly as before.</p>","translations":{"en":{"title":"Add city to SMS booking confirmations","body_html":"<p dir=\"auto\">A new variable, $city, lets you display the city alongside the street address in confirmation SMS messages. Simply add $city to your templates under <em>Settings for Appointment Booking &gt; Confirmations.</em> For video appointments, the variable will be left empty, and existing templates using $address will continue to work exactly as before.</p>"},"sv":{"title":"Lägg till ort i bokningsbekräftelser via SMS","body_html":"<p dir=\"auto\">En ny variabel, $city, gör att du kan visa orten i bekräftelse-SMS vid sidan av gatuadressen. Lägg till $city i dina mallar under <em>Inställningar för Tidsbokning &gt; Bekräftelser.</em> Vid videobesök lämnas variabeln tom, och befintliga mallar med $address fungerar precis som tidigare.</p>"},"es":{"title":"Añade la ciudad a las confirmaciones de reserva por SMS","body_html":"<p dir=\"auto\">Una nueva variable, $city, te permite mostrar la ciudad junto a la dirección en los SMS de confirmación. Solo tienes que añadir $city a tus plantillas en <em>Configuración de Reserva de Citas &gt; Confirmaciones.</em> En las citas por videollamada, la variable se dejará vacía, y las plantillas existentes con $address seguirán funcionando exactamente igual que antes.</p>"},"no":{"title":"Legg til sted i bookingbekreftelser via SMS","body_html":"<p dir=\"auto\">En ny variabel, $city, lar deg vise stedet ved siden av gateadressen i bekreftelses-SMS. Legg til $city i malene dine under <em>Innstillinger for Timebooking &gt; Bekreftelser.</em> Ved videokonsultasjoner blir variabelen stående tom, og eksisterende maler med $address fungerer akkurat som før.</p>"},"dk":{"title":"Tilføj by i bookingbekræftelser via SMS","body_html":"<p dir=\"auto\">En ny variabel, $city, gør det muligt at vise byen ved siden af gadeadressen i bekræftelses-SMS. Tilføj $city i dine skabeloner under <em>Indstillinger for Tidsbestilling &gt; Bekræftelser.</em> Ved videokonsultationer efterlades variablen tom, og eksisterende skabeloner med $address fungerer præcis som før.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10243","title":"Send messages to all clients on a specific waiting list (from 28 Sept)","state":"closed","number":10243,"created_at":"2026-09-22T08:40:10Z","repo_name":"Kaddio Application","merged_at":"2026-09-22T12:04:07Z","body":"## Summary\n- Add waiting lists as a CRM campaign criterion so admins can send to clients currently on selected lists.\n- Matching ignores empty selection (same as hosts/booking types), other-org lists, and clients who only appear in waiting-list history.\n- Campaign preview, manual send, and recurring send all use the same filter.\n\n## Test plan\n- [ ] Open a CRM campaign and confirm **Väntelistor** appears under urvalskriterier.\n- [ ] Leave it empty, save, and preview: recipients are not limited to waiting lists.\n- [ ] Select one waiting list, save, and preview: only current members of that list appear.\n- [ ] Select two lists: members of either list appear; people only on a third list do not.\n- [ ] Clients removed from a list (history only) do not appear.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">In the Smart Messaging feature, you can now use a specific waiting list as a selection criterion for choosing which clients to include. Only clients currently on the selected list will be included — those who have been removed are not included.</p>","translations":{"en":{"title":"Send messages to all clients on a specific waiting list (from 28 Sept)","body_html":"<p dir=\"auto\">In the Smart Messaging feature, you can now use a specific waiting list as a selection criterion for choosing which clients to include. Only clients currently on the selected list will be included — those who have been removed are not included.</p>"},"sv":{"title":"Gör utskick till alla klienter på en viss väntelista (från 28 sept)","body_html":"<p dir=\"auto\">I funktionen Smarta utskick går det att använda en viss väntlista som urvalskriterie för vilka klienter som ska väljas. Endast klienter som just nu står på en vald lista tas med — de som tagits bort ingår inte.</p>"},"es":{"title":"Envía mensajes a todos los clientes de una lista de espera específica (desde el 28 de septiembre)","body_html":"<p dir=\"auto\">En la función de Envíos Inteligentes ahora puedes usar una lista de espera concreta como criterio de selección para elegir qué clientes incluir. Solo se incluirán los clientes que estén actualmente en la lista seleccionada — aquellos que hayan sido eliminados no se incluirán.</p>"},"no":{"title":"Send utsendelser til alle klienter på en bestemt venteliste (fra 28. sept)","body_html":"<p dir=\"auto\">I funksjonen Smarte utsendelser kan du nå bruke en bestemt venteliste som utvalgskriterium for hvilke klienter som skal velges. Kun klienter som akkurat nå står på den valgte listen tas med — de som er fjernet inkluderes ikke.</p>"},"dk":{"title":"Send udsendelser til alle klienter på en bestemt venteliste (fra 28. sept)","body_html":"<p dir=\"auto\">I funktionen Smarte udsendelser kan du nu bruge en bestemt venteliste som udvælgelseskriterium for, hvilke klienter der skal vælges. Kun klienter, der i øjeblikket står på den valgte liste, tages med — de, der er fjernet, inkluderes ikke.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10242","title":"Queue date set automatically on waiting lists","state":"closed","number":10242,"created_at":"2026-09-22T08:39:02Z","repo_name":"Kaddio Application","merged_at":"2026-09-22T11:16:32Z","body":"## Summary\n- When a client is added to a waiting list, Ködatum (`promisedDate`) now defaults to the current time, matching Tillagd.\n- Covers both manual add (`wl.addClientToList`) and last-minute signup.\n- Existing add-client app-test asserts Ködatum is set and matches the added timestamp.\n\n## Test plan\n- [ ] Open a waiting list, add a client, and confirm Ködatum is today\n- [ ] Clear or change Ködatum and save — the override should stick\n- [ ] Add the active client from the waiting-lists overview and confirm Ködatum is set\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">When you add a client to a waiting list, the Queue date is now filled in automatically with today's date.</p>","translations":{"en":{"title":"Queue date set automatically on waiting lists","body_html":"<p dir=\"auto\">When you add a client to a waiting list, the Queue date is now filled in automatically with today's date.</p>"},"sv":{"title":"Ködatum sätts automatiskt på väntelistor","body_html":"<p dir=\"auto\">När du lägger till en klient på en väntelista fylls Ködatum automatiskt i med dagens datum.</p>"},"es":{"title":"La fecha de espera se asigna automáticamente en las listas de espera","body_html":"<p dir=\"auto\">Al añadir un cliente a una lista de espera, la fecha de espera se completa automáticamente con la fecha de hoy.</p>"},"no":{"title":"Ködato settes automatisk på ventelister","body_html":"<p dir=\"auto\">Når du legger en klient til på en venteliste, fylles Ködato automatisk ut med dagens dato.</p>"},"dk":{"title":"Kødato sættes automatisk på ventelister","body_html":"<p dir=\"auto\">Når du tilføjer en klient til en venteliste, udfyldes Kødato automatisk med dagens dato.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10240","title":"Space to click next to events in the calendar to add parallel events","state":"closed","number":10240,"created_at":"2026-09-22T08:25:57Z","repo_name":"Kaddio Application","merged_at":"2026-09-22T11:03:29Z","body":"## Summary\n- Staff time-grid calendars now keep a 12% right gutter so you can click next to an existing event and start a new booking in an already-filled slot (Clinic Buddy-style).\n- The client calendar stays tight (`1px`) so public booking views do not show unused empty space.\n\nFixes #9511.\n\n## Test plan\n- [ ] Open a staff calendar day/week view with overlapping or full-width events\n- [ ] Confirm there is clickable empty space on the right of events\n- [ ] Click that gutter and confirm a new booking starts for that time\n- [ ] Confirm existing events are still clickable\n- [ ] Open the client calendar and confirm events still fill the column as before\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Events in the calendar no longer fill the full width of the column, making it easier to quickly add new events alongside existing ones.</p>","translations":{"en":{"title":"Space to click next to events in the calendar to add parallel events","body_html":"<p dir=\"auto\">Events in the calendar no longer fill the full width of the column, making it easier to quickly add new events alongside existing ones.</p>"},"sv":{"title":"Utrymme att klicka bredvid händelser i kalendern för att lägga till parallella händelser","body_html":"<p dir=\"auto\">I kalendern fyller inte händelser ut kolumnens bredd helt, vilket gör det enklare att snabbt lägga till nya händelser bredvid befintliga händelser.</p>"},"es":{"title":"Espacio para hacer clic junto a los eventos del calendario y añadir eventos paralelos","body_html":"<p dir=\"auto\">En el calendario, los eventos ya no ocupan todo el ancho de la columna, lo que facilita añadir rápidamente nuevos eventos junto a los existentes.</p>"},"no":{"title":"Plass til å klikke ved siden av hendelser i kalenderen for å legge til parallelle hendelser","body_html":"<p dir=\"auto\">I kalenderen fyller ikke hendelsene hele bredden av kolonnen, noe som gjør det enklere å raskt legge til nye hendelser ved siden av eksisterende.</p>"},"dk":{"title":"Plads til at klikke ved siden af begivenheder i kalenderen for at tilføje parallelle begivenheder","body_html":"<p dir=\"auto\">I kalenderen fylder begivenhederne ikke hele kolonnens bredde, hvilket gør det nemmere hurtigt at tilføje nye begivenheder ved siden af eksisterende.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10016","title":"Weekly view in client booking","state":"closed","number":10016,"created_at":"2026-08-24T06:19:22Z","repo_name":"Kaddio Application","merged_at":"2026-09-17T09:26:00Z","body":"## Summary\n- Add an org setting (`defaultClientCalView`: standard / week / month) so clientCal in the public time picker can show a week or month grid instead of the day list.\n- Keep the same time pills, one calendar per place when places apply, and the booking type name as a day header when no type is selected.\n- Honor hide weekends, put dates in week-view column headers, and make pills full column width.\n\n## Test plan\n- [ ] In Bokning settings, set **Kalendervy i klientbokningen** to Standard, Vecka, and Månad and confirm the public pick-time UI matches.\n- [ ] With hide weekends on, week and month grids omit Saturday and Sunday.\n- [ ] With multiple places, each place has its own calendar.\n- [ ] With no booking type selected, the type name appears in each day; with a type selected it does not.\n- [ ] Prev/next moves by week or month; empty days still offer the jump-to-next-available action.\n- [ ] Default (list) view still behaves as before.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Under Booking Settings, you can now choose between the standard daily list view and the new weekly view via Calendar view in client booking.</p>","translations":{"en":{"title":"Weekly view in client booking","body_html":"<p dir=\"auto\">Under Booking Settings, you can now choose between the standard daily list view and the new weekly view via Calendar view in client booking.</p>"},"sv":{"title":"Veckovy i klientbokningen","body_html":"<p dir=\"auto\">Under Bokningsinställningar kan du välja mellan standardvyn med daglista och den nya veckovyn via Kalendervy i klientbokningen.</p>"},"es":{"title":"Vista semanal en la reserva de clientes","body_html":"<p dir=\"auto\">En Configuración de reservas, puedes elegir entre la vista estándar con lista diaria y la nueva vista semanal a través de Vista de calendario en la reserva de clientes.</p>"},"no":{"title":"Ukesvisning i klientbookingen","body_html":"<p dir=\"auto\">Under Bookinginnstillinger kan du velge mellom standardvisningen med dagsliste og den nye ukesvisningen via Kalendervisning i klientbookingen.</p>"},"dk":{"title":"Ugevisning i klientbookingen","body_html":"<p dir=\"auto\">Under Bookingindstillinger kan du vælge mellem standardvisningen med dagsliste og den nye ugevisning via Kalendervisning i klientbookingen.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10167","title":"Calendar now highlights client time within the full booking length","state":"closed","number":10167,"created_at":"2026-09-11T08:40:39Z","repo_name":"Kaddio Application","merged_at":"2026-09-17T08:40:31Z","body":"## Summary\n- Darken the calendar booking block from `clientLength` (tid med klient) to the event end so leftover slot time is visible.\n- Applies to standalone bookings and bookings inside arbetstid in week/day/timeline views (not month/list).\n- Overlay only shows when the booking type has a shorter `clientLength` than the actual slot.\n\n## Test plan\n- [ ] Open the host calendar week or day view.\n- [ ] Find or create a booking whose type has `clientLength` shorter than `length` (e.g. 45 vs 60 min).\n- [ ] Confirm the bottom portion of the event is slightly darker gray.\n- [ ] Confirm bookings without `clientLength` look unchanged.\n- [ ] Spot-check a booking inside arbetstid (sub-event) and the timeline view.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">When a booking type has a shorter client time than the total booking length, the lower part of the event is shaded in a slightly darker tone in the week, day, and timeline views. This makes it easy to see where the time with the client ends and the buffer for documentation or preparation begins.</p>","translations":{"en":{"title":"Calendar now highlights client time within the full booking length","body_html":"<p dir=\"auto\">When a booking type has a shorter client time than the total booking length, the lower part of the event is shaded in a slightly darker tone in the week, day, and timeline views. This makes it easy to see where the time with the client ends and the buffer for documentation or preparation begins.</p>"},"sv":{"title":"I kalendern markeras tid med klient ut, i förhållande till hela bokningens längd","body_html":"<p dir=\"auto\">När en bokningstyp har en kortare tid med klient än hela bokningens längd markeras den nedre delen av händelsen i en något mörkare ton i vecko-, dag- och tidslinjevyerna. Det blir tydligt var tiden med klienten slutar och där bufferten för dokumentation eller förberedelse tar vid.</p>"},"es":{"title":"El calendario destaca el tiempo con el cliente dentro de la duración total de la reserva","body_html":"<p dir=\"auto\">Cuando un tipo de reserva tiene un tiempo con el cliente más corto que la duración total de la reserva, la parte inferior del evento se muestra en un tono ligeramente más oscuro en las vistas de semana, día y línea de tiempo. Así resulta fácil ver dónde termina el tiempo con el cliente y comienza el margen para documentación o preparación.</p>"},"no":{"title":"Kalenderen viser tid med klient i forhold til hele bookingens lengde","body_html":"<p dir=\"auto\">Når en bookingtype har kortere tid med klient enn hele bookingens lengde, markeres den nedre delen av hendelsen i en litt mørkere tone i uke-, dag- og tidslinjevisningen. Det blir tydelig hvor tiden med klienten slutter og bufferen for dokumentasjon eller forberedelse tar over.</p>"},"dk":{"title":"Kalenderen viser tid med klient i forhold til hele bookingens længde","body_html":"<p dir=\"auto\">Når en bookingtype har kortere tid med klient end hele bookingens længde, markeres den nederste del af begivenheden i en lidt mørkere tone i uge-, dag- og tidslinjevisningerne. Det bliver tydeligt, hvor tiden med klienten slutter, og bufferen til dokumentation eller forberedelse begynder.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10170","title":"Voice transcription now shows clearer error messages","state":"closed","number":10170,"created_at":"2026-09-11T10:01:10Z","repo_name":"Kaddio Application","merged_at":"2026-09-11T12:07:28Z","body":null,"body_html":"<p dir=\"auto\">When voice recording fails to start, Kaddio now displays the actual reason instead of a generic message.</p>\n<p dir=\"auto\">Inside the Journal, transcription errors are surfaced directly from your browser or microphone, so it's easier to understand what went wrong and how to fix it. Recording also checks upfront whether your browser supports a compatible audio format, preventing silent failures. No action is needed.</p>","translations":{"en":{"title":"Voice transcription now shows clearer error messages","body_html":"<p dir=\"auto\">When voice recording fails to start, Kaddio now displays the actual reason instead of a generic message.</p>\n<p dir=\"auto\">Inside the Journal, transcription errors are surfaced directly from your browser or microphone, so it's easier to understand what went wrong and how to fix it. Recording also checks upfront whether your browser supports a compatible audio format, preventing silent failures. No action is needed.</p>"},"sv":{"title":"Röstinspelning visar nu tydligare felmeddelanden","body_html":"<p dir=\"auto\">När en röstinspelning inte kan starta visar Kaddio nu den faktiska orsaken istället för ett generellt meddelande.</p>\n<p dir=\"auto\">I journalen visas felmeddelanden direkt från webbläsaren eller mikrofonen, vilket gör det enklare att förstå vad som gick fel och hur det kan åtgärdas. Inspelningen kontrollerar också i förväg att webbläsaren har stöd för ett kompatibelt ljudformat, så att fel upptäcks tidigare. Ingen åtgärd krävs.</p>"},"es":{"title":"La transcripción de voz ahora muestra errores más claros","body_html":"<p dir=\"auto\">Cuando una grabación de voz no puede iniciarse, Kaddio muestra el motivo real en lugar de un mensaje genérico.</p>\n<p dir=\"auto\">En el Diario, los errores de transcripción se muestran directamente desde el navegador o el micrófono, lo que facilita entender qué ocurrió y cómo resolverlo. Además, la grabación verifica de antemano si el navegador admite un formato de audio compatible. No se requiere ninguna acción.</p>"},"no":{"title":"Taleopptak viser nå tydeligere feilmeldinger","body_html":"<p dir=\"auto\">Når et taleopptak ikke kan starte, viser Kaddio nå den faktiske årsaken i stedet for en generell melding.</p>\n<p dir=\"auto\">I journalen vises feilmeldinger direkte fra nettleseren eller mikrofonen, slik at det blir enklere å forstå hva som gikk galt og hvordan det kan løses. Opptaket sjekker også på forhånd om nettleseren støtter et kompatibelt lydformat. Ingen handling kreves.</p>"},"dk":{"title":"Taleoptagelse viser nu tydeligere fejlmeddelelser","body_html":"<p dir=\"auto\">Når en taleoptagelse ikke kan starte, viser Kaddio nu den faktiske årsag i stedet for en generel besked.</p>\n<p dir=\"auto\">I journalen vises fejlmeddelelser direkte fra browseren eller mikrofonen, så det bliver lettere at forstå, hvad der gik galt, og hvordan det kan løses. Optagelsen tjekker også på forhånd, om browseren understøtter et kompatibelt lydformat. Ingen handling er nødvendig.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10171","title":"Voice recording in Journal is now more reliable","state":"closed","number":10171,"created_at":"2026-09-11T10:30:56Z","repo_name":"Kaddio Application","merged_at":"2026-09-11T12:06:49Z","body":"Logisk bugfix. Låg risk.","body_html":"<p dir=\"auto\">Voice recording in Journal now starts more reliably, avoiding a rare timing issue when beginning a session.</p>\n<p dir=\"auto\">This small fix ensures the recorder responds correctly the moment you press start, so you can focus on your client instead of the tool. No action needed.</p>","translations":{"en":{"title":"Voice recording in Journal is now more reliable","body_html":"<p dir=\"auto\">Voice recording in Journal now starts more reliably, avoiding a rare timing issue when beginning a session.</p>\n<p dir=\"auto\">This small fix ensures the recorder responds correctly the moment you press start, so you can focus on your client instead of the tool. No action needed.</p>"},"sv":{"title":"Röstinspelning i journalen fungerar nu mer tillförlitligt","body_html":"<p dir=\"auto\">Röstinspelningen i journalen startar nu mer tillförlitligt och undviker ett sällsynt tidsproblem när en session påbörjas.</p>\n<p dir=\"auto\">Den lilla justeringen gör att inspelaren svarar korrekt i samma stund du trycker på start, så du kan fokusera på klienten i stället för verktyget. Ingen åtgärd krävs.</p>"},"es":{"title":"La grabación de voz en el historial ahora es más fiable","body_html":"<p dir=\"auto\">La grabación de voz en el historial clínico se inicia con mayor fiabilidad, evitando un problema puntual de sincronización al comenzar una sesión.</p>\n<p dir=\"auto\">Este pequeño ajuste garantiza que la grabadora responda correctamente al pulsar iniciar, para que puedas centrarte en el paciente y no en la herramienta. No requiere ninguna acción.</p>"},"no":{"title":"Taleopptak i journalen fungerer nå mer pålitelig","body_html":"<p dir=\"auto\">Taleopptak i journalen starter nå mer pålitelig og unngår et sjeldent tidsproblem når en økt påbegynnes.</p>\n<p dir=\"auto\">Denne lille justeringen sørger for at opptakeren reagerer riktig i det øyeblikket du trykker start, slik at du kan fokusere på klienten fremfor verktøyet. Ingen handling nødvendig.</p>"},"dk":{"title":"Stemmeoptagelse i journalen er nu mere pålidelig","body_html":"<p dir=\"auto\">Stemmeoptagelse i journalen starter nu mere pålideligt og undgår et sjældent timing-problem, når en session påbegyndes.</p>\n<p dir=\"auto\">Denne lille justering sikrer, at optageren reagerer korrekt, i det øjeblik du trykker start, så du kan fokusere på klienten frem for værktøjet. Ingen handling påkrævet.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10135","title":"More Försäkringskassan forms available in the journal","state":"closed","number":10135,"created_at":"2026-09-08T12:45:28Z","repo_name":"Kaddio Application","merged_at":"2026-09-11T06:57:31Z","body":"## Summary\n- Adds the official Försäkringskassan forms requested in #10093: 7472, 7426, 7801, 7802, and **7427** (current replacement for 7447).\n- Each form has a Svelte editor, XFA/AcroForm mapping, and a fillable PDF template so orgs can activate them under Journal → Officiella blanketter.\n\n## Test plan\n- [ ] Activate the new forms in Journal settings → Officiella blanketter\n- [ ] Create each form from a client journal and confirm prefilled name/personnummer/host\n- [ ] Fill a few fields, lock, and download PDF; open in an external PDF reader\n- [ ] Confirm 7804 sjukintyg still exports as before\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">In addition to the existing medical certificate (7804), Kaddio now supports form 7472 (temporary parental benefit), 7426 (seriously ill child), 7427 (child aged 12–15), 7801 (activity compensation for reduced work capacity) and 7802 (activity compensation for extended schooling). The forms are pre-filled with the client's name, personal identity number and care provider details, and can be locked and downloaded as a ready-made PDF.</p>\n<p dir=\"auto\">Activate the forms you wish to use under Journal Settings → Official forms.</p>","translations":{"en":{"title":"More Försäkringskassan forms available in the journal","body_html":"<p dir=\"auto\">In addition to the existing medical certificate (7804), Kaddio now supports form 7472 (temporary parental benefit), 7426 (seriously ill child), 7427 (child aged 12–15), 7801 (activity compensation for reduced work capacity) and 7802 (activity compensation for extended schooling). The forms are pre-filled with the client's name, personal identity number and care provider details, and can be locked and downloaded as a ready-made PDF.</p>\n<p dir=\"auto\">Activate the forms you wish to use under Journal Settings → Official forms.</p>"},"sv":{"title":"Fler blanketter från Försäkringskassan finns i journalen","body_html":"<p dir=\"auto\">Utöver det befintliga sjukintyget (7804) stödjer Kaddio nu blankett 7472 (tillfällig föräldrapenning), 7426 (allvarligt sjukt barn), 7427 (barn 12–15 år), 7801 (aktivitetsersättning vid nedsatt arbetsförmåga) och 7802 (aktivitetsersättning vid förlängd skolgång). Blanketterna förifylls med klientens namn, personnummer och vårdgivaruppgifter, och kan låsas och laddas ner som en färdig PDF.</p>\n<p dir=\"auto\">Aktivera de blanketter ni vill använda under Inställningar för Journal → Officiella blanketter.</p>"},"es":{"title":"Más formularios de Försäkringskassan disponibles en el historial","body_html":"<p dir=\"auto\">Además del certificado médico existente (7804), Kaddio ahora admite los formularios 7472 (subsidio parental temporal), 7426 (niño gravemente enfermo), 7427 (niños de 12 a 15 años), 7801 (compensación por actividad en caso de capacidad laboral reducida) y 7802 (compensación por actividad durante escolarización prolongada). Los formularios se rellenan automáticamente con el nombre del cliente, el número de identificación personal y los datos del proveedor de atención, y pueden bloquearse y descargarse como un PDF listo para usar.</p>\n<p dir=\"auto\">Active los formularios que desee utilizar en Configuración del historial → Formularios oficiales.</p>"},"no":{"title":"Flere blanketter fra Försäkringskassan finnes i journalen","body_html":"<p dir=\"auto\">I tillegg til den eksisterende sykmeldingen (7804) støtter Kaddio nå blankett 7472 (midlertidig foreldrepenger), 7426 (alvorlig sykt barn), 7427 (barn 12–15 år), 7801 (aktivitetsstønad ved nedsatt arbeidsevne) og 7802 (aktivitetsstønad ved forlenget skolegang). Blankettene fylles ut på forhånd med klientens navn, personnummer og opplysninger om helsepersonell, og kan låses og lastes ned som en ferdig PDF.</p>\n<p dir=\"auto\">Aktiver de blankettene dere ønsker å bruke under Innstillinger for Journal → Offisielle blanketter.</p>"},"dk":{"title":"Flere blanketter fra Försäkringskassan findes i journalen","body_html":"<p dir=\"auto\">Ud over den eksisterende sygemelding (7804) understøtter Kaddio nu blanket 7472 (midlertidig forældreydelse), 7426 (alvorligt sygt barn), 7427 (barn 12–15 år), 7801 (aktivitetsydelse ved nedsat arbejdsevne) og 7802 (aktivitetsydelse ved forlænget skolegang). Blanketterne udfyldes på forhånd med klientens navn, personnummer og oplysninger om sundhedsudbyder, og kan låses og downloades som en færdig PDF.</p>\n<p dir=\"auto\">Aktivér de blanketter, I ønsker at bruge, under Indstillinger for Journal → Officielle blanketter.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10115","title":"Busy group activities now block members' available times","state":"closed","number":10115,"created_at":"2026-09-03T12:49:11Z","repo_name":"Kaddio Application","merged_at":"2026-09-10T13:55:04Z","body":"## Summary\n- Busy calendar activities with a **group** as attendee now occupy those members’ free times (same as adding them as individuals).\n- `allLinkedHostIdsOnEvent` expands calendar-group attendees to member hosts; free-time matching also treats groups the host belongs to as blocking attendee ids.\n- Fixes https://github.com/kaddio/kaddio/issues/10107\n\n## Test plan\n- [ ] Create a busy activity with a group (e.g. Kontoret) as participant and confirm members’ lediga tider are blocked\n- [ ] Confirm a non-busy group activity does not block\n- [ ] Confirm adding a host as an individual attendee still blocks\n- [ ] `MOCHA_GREP=\"booking algebra org group\" npm run testonce`\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">When you add a group to a busy calendar activity, all members' available times are automatically blocked. Activities that aren't marked as busy won't affect availability. No action required.</p>","translations":{"en":{"title":"Busy group activities now block members' available times","body_html":"<p dir=\"auto\">When you add a group to a busy calendar activity, all members' available times are automatically blocked. Activities that aren't marked as busy won't affect availability. No action required.</p>"},"sv":{"title":"Upptagna gruppaktiviteter blockerar nu medlemmarnas lediga tider","body_html":"<p dir=\"auto\">När du lägger till en grupp i en upptagen kalenderaktivitet blockeras automatiskt alla medlemmars lediga tider. Aktiviteter som inte är markerade som upptagna påverkar inte tillgängligheten. Ingen åtgärd krävs.</p>"},"es":{"title":"Las actividades grupales ocupadas ahora bloquean la disponibilidad de los miembros","body_html":"<p dir=\"auto\">Cuando añades un grupo a una actividad de calendario marcada como ocupada, se bloquean automáticamente los horarios disponibles de todos sus miembros. Las actividades que no estén marcadas como ocupadas no afectarán a la disponibilidad. No se requiere ninguna acción.</p>"},"no":{"title":"Opptatte gruppeaktiviteter blokkerer nå medlemmenes ledige tider","body_html":"<p dir=\"auto\">Når du legger til en gruppe i en opptatt kalenderaktivitet, blokkeres automatisk alle medlemmenes ledige tider. Aktiviteter som ikke er merket som opptatte, påvirker ikke tilgjengeligheten. Ingen handling kreves.</p>"},"dk":{"title":"Optagede gruppeaktiviteter blokerer nu medlemmernes ledige tider","body_html":"<p dir=\"auto\">Når du tilføjer en gruppe til en optaget kalenderaktivitet, blokeres alle medlemmernes ledige tider automatisk. Aktiviteter, der ikke er markeret som optagede, påvirker ikke tilgængeligheden. Ingen handling er nødvendig.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9775","title":"Last-minute waiting lists can now be set up per location","state":"closed","number":9775,"created_at":"2026-06-24T20:41:53Z","repo_name":"Kaddio Application","merged_at":"2026-09-04T10:21:47Z","body":null,"body_html":"<p dir=\"auto\">Clinics with multiple locations can now create separate last-minute waiting lists for each place.</p>\n<p dir=\"auto\">In Booking, when a client signs up to be notified about last-minute openings, they'll only be alerted for the location they're interested in. This means fewer irrelevant messages for clients and better matches when a slot suddenly frees up.</p>\n<p dir=\"auto\">If your clinic operates from more than one location, you can now add a last-minute waiting list per booking type and place directly from the waiting list overview.</p>","translations":{"en":{"title":"Last-minute waiting lists can now be set up per location","body_html":"<p dir=\"auto\">Clinics with multiple locations can now create separate last-minute waiting lists for each place.</p>\n<p dir=\"auto\">In Booking, when a client signs up to be notified about last-minute openings, they'll only be alerted for the location they're interested in. This means fewer irrelevant messages for clients and better matches when a slot suddenly frees up.</p>\n<p dir=\"auto\">If your clinic operates from more than one location, you can now add a last-minute waiting list per booking type and place directly from the waiting list overview.</p>"},"sv":{"title":"Sista minuten-väntelistor kan nu skapas per plats","body_html":"<p dir=\"auto\">Kliniker med flera platser kan nu skapa separata sista minuten-väntelistor för varje plats.</p>\n<p dir=\"auto\">I Bokning får klienter som anmäler sig till sista minuten-erbjudanden bara notiser för den plats de är intresserade av. Det ger färre irrelevanta meddelanden och bättre träffar när en tid plötsligt blir ledig.</p>\n<p dir=\"auto\">Om kliniken har flera platser kan en sista minuten-väntelista skapas per bokningstyp och plats direkt från väntelisteöversikten.</p>"},"es":{"title":"Las listas de espera de última hora ahora se pueden crear por ubicación","body_html":"<p dir=\"auto\">Las clínicas con varias ubicaciones ya pueden crear listas de espera de última hora separadas para cada lugar.</p>\n<p dir=\"auto\">En Reservas, los clientes que se apuntan para recibir avisos de huecos de última hora solo serán notificados sobre la ubicación que les interesa. Esto reduce los mensajes irrelevantes y mejora la coincidencia cuando queda un hueco libre.</p>\n<p dir=\"auto\">Si tu clínica opera en más de un lugar, ahora puedes añadir una lista de espera de última hora por tipo de reserva y ubicación desde la vista general de listas de espera.</p>"},"no":{"title":"Sist-minuttet-ventelister kan nå opprettes per sted","body_html":"<p dir=\"auto\">Klinikker med flere steder kan nå opprette egne sist-minuttet-ventelister for hvert sted.</p>\n<p dir=\"auto\">I Booking får klienter som melder seg på sist-minuttet-varsler bare beskjed om det stedet de er interessert i. Det gir færre irrelevante meldinger og bedre treff når en time plutselig blir ledig.</p>\n<p dir=\"auto\">Har klinikken flere steder, kan en sist-minuttet-venteliste opprettes per bookingtype og sted direkte fra ventelisteoversikten.</p>"},"dk":{"title":"Sidste-øjebliks-ventelister kan nu oprettes pr. sted","body_html":"<p dir=\"auto\">Klinikker med flere adresser kan nu oprette separate sidste-øjebliks-ventelister for hvert sted.</p>\n<p dir=\"auto\">I Booking får klienter, der tilmelder sig sidste-øjebliks-varsler, kun besked om det sted, de er interesserede i. Det giver færre irrelevante beskeder og bedre match, når en tid pludselig bliver ledig.</p>\n<p dir=\"auto\">Hvis klinikken har flere adresser, kan en sidste-øjebliks-venteliste oprettes pr. bookingtype og sted direkte fra ventelisteoversigten.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10109","title":"More filters in the Day &gt; Table calendar view","state":"closed","number":10109,"created_at":"2026-09-03T09:21:06Z","repo_name":"Kaddio Application","merged_at":"2026-09-04T07:05:17Z","body":"Adds status filters to Dag > Tabell under Visa:\r\n\r\n- Avbokade: bookings cancelled by the patient\r\n- Inställda: bookings cancelled by the practitioner, including cancelled group sessions\r\n- Uteblivna besök: no-show visits\r\n\r\nAll filters are enabled by default to preserve the existing behavior.\r\n\r\nÅterkoppla till \r\npatrik.otteberg@nimm.se\r\n","body_html":"<p dir=\"auto\">Go to Day &gt; Table and use the Show menu to toggle Cancelled, Rescheduled and No-show appointments. All filters are enabled by default, so nothing changes unless you choose to adjust them yourself.</p>","translations":{"en":{"title":"More filters in the Day &gt; Table calendar view","body_html":"<p dir=\"auto\">Go to Day &gt; Table and use the Show menu to toggle Cancelled, Rescheduled and No-show appointments. All filters are enabled by default, so nothing changes unless you choose to adjust them yourself.</p>"},"sv":{"title":"Fler filter i kalendervyn Dag &gt; Tabell","body_html":"<p dir=\"auto\">Gå till Dag &gt; Tabell och använd menyn Visa för att växla Avbokade, Inställda och Uteblivna besök. Alla filter är påslagna som standard, så inget förändras om du inte själv väljer det.</p>"},"es":{"title":"Más filtros en la vista de calendario Día &gt; Tabla","body_html":"<p dir=\"auto\">Ve a Día &gt; Tabla y utiliza el menú Mostrar para alternar las citas Canceladas, Reprogramadas y No presentadas. Todos los filtros están activados por defecto, así que nada cambiará a menos que tú decidas ajustarlos.</p>"},"no":{"title":"Flere filtre i kalendervisningen Dag &gt; Tabell","body_html":"<p dir=\"auto\">Gå til Dag &gt; Tabell og bruk Vis-menyen for å veksle mellom Avbestilte, Ombookede og Uteblitte besøk. Alle filtre er slått på som standard, så ingenting endres med mindre du selv velger det.</p>"},"dk":{"title":"Flere filtre i kalendervisningen Dag &gt; Tabel","body_html":"<p dir=\"auto\">Gå til Dag &gt; Tabel og brug Vis-menuen til at skifte mellem Afbestilte, Ombookede og Udeblevne besøg. Alle filtre er slået til som standard, så intet ændres, medmindre du selv vælger det.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10009","title":"New relation type for adult children","state":"closed","number":10009,"created_at":"2026-08-21T09:44:13Z","repo_name":"Kaddio Application","merged_at":"2026-09-03T07:40:22Z","body":"För fallet där vårdnadshavare inte fungerar utan det är förälder till vuxet barn så att säga - tänker jag rätt? Eller ska `child` återanvändas på något sätt?","body_html":"<p dir=\"auto\">You can now link a client to a parent or adult child, making family connections clearer when guardianship no longer applies.</p>\n<p dir=\"auto\">This new relation type sits alongside existing options like partner and guardian, and can be enabled per organization. It's especially helpful when documenting care that involves adult family members.</p>","translations":{"en":{"title":"New relation type for adult children","body_html":"<p dir=\"auto\">You can now link a client to a parent or adult child, making family connections clearer when guardianship no longer applies.</p>\n<p dir=\"auto\">This new relation type sits alongside existing options like partner and guardian, and can be enabled per organization. It's especially helpful when documenting care that involves adult family members.</p>"},"sv":{"title":"Ny relation för vuxna barn","body_html":"<p dir=\"auto\">Nu går det att koppla en klient till en förälder eller ett vuxet barn – perfekt när vårdnadshavare inte längre passar.</p>\n<p dir=\"auto\">Den nya relationstypen finns tillsammans med befintliga alternativ som partner och vårdnadshavare, och kan aktiveras per organisation. Särskilt användbart vid vård som involverar vuxna familjemedlemmar.</p>"},"es":{"title":"Nueva relación para hijos adultos","body_html":"<p dir=\"auto\">Ahora puedes vincular a un cliente con un padre o un hijo adulto, aclarando los lazos familiares cuando la tutela ya no aplica.</p>\n<p dir=\"auto\">Este nuevo tipo de relación se suma a opciones existentes como pareja o tutor legal, y puede activarse por organización. Muy útil al documentar atención que involucra a familiares adultos.</p>"},"no":{"title":"Ny relasjon for voksne barn","body_html":"<p dir=\"auto\">Du kan nå knytte en klient til en forelder eller et voksent barn, noe som gjør familierelasjoner tydeligere når vergemål ikke passer.</p>\n<p dir=\"auto\">Den nye relasjonstypen finnes ved siden av eksisterende valg som partner og verge, og kan aktiveres per organisasjon. Særlig nyttig når du dokumenterer omsorg som involverer voksne familiemedlemmer.</p>"},"dk":{"title":"Ny relation for voksne børn","body_html":"<p dir=\"auto\">Du kan nu forbinde en klient med en forælder eller et voksent barn – ideelt når værgemål ikke længere passer.</p>\n<p dir=\"auto\">Den nye relationstype findes sammen med eksisterende valg som partner og værge, og kan aktiveres pr. organisation. Særligt nyttigt ved dokumentation af pleje, der involverer voksne familiemedlemmer.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9996","title":"Practitioners can now be granted permission to unsign journal entries","state":"closed","number":9996,"created_at":"2026-08-20T12:44:16Z","repo_name":"Kaddio Application","merged_at":"2026-08-28T11:27:15Z","body":"Önskemål från F4L\r\n\r\nIntroduce a new option to permit hosts to unsign contacts, enhancing the existing permissions model. This change includes updates to the schema, method authorization checks, and the user interface.","body_html":"<p dir=\"auto\">Unlocking signed journal entries is no longer limited to administrators. Clinics can now delegate this permission to specific practitioners.</p>\n<p dir=\"auto\">In the Journal module, a new permission group called Unlock signing lets you decide exactly who can reopen signed and locked contacts when unsigning is enabled for your organization. By default, existing administrators keep their access, so no action is needed unless you want to extend the permission to other practitioners.</p>","translations":{"en":{"title":"Practitioners can now be granted permission to unsign journal entries","body_html":"<p dir=\"auto\">Unlocking signed journal entries is no longer limited to administrators. Clinics can now delegate this permission to specific practitioners.</p>\n<p dir=\"auto\">In the Journal module, a new permission group called Unlock signing lets you decide exactly who can reopen signed and locked contacts when unsigning is enabled for your organization. By default, existing administrators keep their access, so no action is needed unless you want to extend the permission to other practitioners.</p>"},"sv":{"title":"Behandlare kan nu få behörighet att låsa upp signerade kontakter","body_html":"<p dir=\"auto\">Att låsa upp signerade journalkontakter är inte längre begränsat till administratörer. Kliniker kan nu ge behörigheten till utvalda behandlare.</p>\n<p dir=\"auto\">I journalmodulen finns en ny behörighetsgrupp, Lås upp signering, där ni styr exakt vilka användare som får låsa upp signerade och låsta kontakter när upplåsning är tillåten i organisationen. Befintliga administratörer behåller sin åtkomst, så ingen åtgärd krävs om ni inte vill utöka behörigheten till fler.</p>"},"es":{"title":"Los profesionales ya pueden recibir permiso para desbloquear entradas firmadas","body_html":"<p dir=\"auto\">Desbloquear entradas firmadas en la historia clínica ya no está limitado a los administradores. Las clínicas pueden delegar este permiso a…</p>\n<p dir=\"auto\">En el módulo de Historia clínica, un nuevo grupo de permisos llamado Desbloquear firma permite decidir con precisión quién puede reabrir contactos firmados y bloqueados cuando esta opción está activada. Los administradores actuales conservan su acceso, por lo que no se requiere ninguna acción salvo que quieran ampliar el permiso a otros profesionales.</p>"},"no":{"title":"Behandlere kan nå få tillatelse til å låse opp signerte journalkontakter","body_html":"<p dir=\"auto\">Å låse opp signerte journalkontakter er ikke lenger forbeholdt administratorer. Klinikker kan nå gi tillatelsen til utvalgte behandlere.</p>\n<p dir=\"auto\">I journalmodulen finnes en ny tilgangsgruppe, Lås opp signering, der dere bestemmer nøyaktig hvem som kan åpne signerte og låste kontakter når opplåsing er tillatt i organisasjonen. Eksisterende administratorer beholder sin tilgang, så ingen handling er nødvendig med mindre dere ønsker å utvide tillatelsen til flere.</p>"},"dk":{"title":"Behandlere kan nu få tilladelse til at låse signerede journalkontakter op","body_html":"<p dir=\"auto\">At låse signerede journalkontakter op er ikke længere forbeholdt administratorer. Klinikker kan nu tildele rettigheden til udvalgte behandlere.</p>\n<p dir=\"auto\">I journalmodulet findes en ny rettighedsgruppe, Lås signering op, hvor I styrer præcis, hvem der må genåbne signerede og låste kontakter, når oplåsning er tilladt i organisationen. Eksisterende administratorer beholder deres adgang, så der kræves ingen handling, medmindre I ønsker at udvide rettigheden til flere.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10011","title":"Försäkringskassan forms in the journal","state":"closed","number":10011,"created_at":"2026-08-21T10:13:26Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T13:11:07Z","body":"## Summary\n- Adds blankett definitions and instances so hosts can prepare Försäkringskassan forms from a client journal.\n- Introduces `/blankett/:id` for editing, PDF preview/download, and sending the blankett as real mail.\n- Includes a sjukintyg form plus a generic fallback form, with unit and app tests for the new methods.\n\n## Test plan\n- [ ] From a client journal, create a blankett and confirm it appears as a journal item.\n- [ ] Open `/blankett/:id`, edit fields, and save.\n- [ ] Preview and download the PDF (`Visa PDF` / `Ladda ner PDF`).\n- [ ] Send the blankett as real mail and confirm it is marked as sent.\n- [ ] Confirm unauthorized users cannot open or mutate another org’s blankett.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Prepare Försäkringskassan forms directly from a client's journal, preview the PDF, and send it as physical mail — all in one place.</p>\n<p dir=\"auto\">The first form available is the medical certificate for sickness benefit (Läkarintyg för sjukpenning, FK 7804). Patient details and recent diagnoses are prefilled from the journal, so less time is spent on paperwork.</p>\n<p dir=\"auto\">Once ready, the form can be locked, downloaded as PDF, or sent as real mail straight to Försäkringskassan's inläsningscentral. Available in the Journal module once activated for your organization.</p>","translations":{"en":{"title":"Försäkringskassan forms in the journal","body_html":"<p dir=\"auto\">Prepare Försäkringskassan forms directly from a client's journal, preview the PDF, and send it as physical mail — all in one place.</p>\n<p dir=\"auto\">The first form available is the medical certificate for sickness benefit (Läkarintyg för sjukpenning, FK 7804). Patient details and recent diagnoses are prefilled from the journal, so less time is spent on paperwork.</p>\n<p dir=\"auto\">Once ready, the form can be locked, downloaded as PDF, or sent as real mail straight to Försäkringskassan's inläsningscentral. Available in the Journal module once activated for your organization.</p>"},"sv":{"title":"Försäkringskassans blanketter i journalen","body_html":"<p dir=\"auto\">Förbered Försäkringskassans blanketter direkt från klientens journal, förhandsgranska PDF:en och skicka den som brev — allt på ett ställe.</p>\n<p dir=\"auto\">Första blanketten som stöds är Läkarintyg för sjukpenning (FK 7804). Patientuppgifter och senaste diagnoser förifylls från journalen, vilket sparar tid i administrationen.</p>\n<p dir=\"auto\">Blanketten kan låsas, laddas ner som PDF eller skickas som riktigt brev direkt till Försäkringskassans inläsningscentral. Finns i journalmodulen när funktionen aktiverats för organisationen.</p>"},"es":{"title":"Formularios de Försäkringskassan en el historial","body_html":"<p dir=\"auto\">Prepara los formularios de Försäkringskassan directamente desde el historial del cliente, previsualiza el PDF y envíalo por correo postal en un…</p>\n<p dir=\"auto\">El primer formulario disponible es el certificado médico para la prestación por enfermedad (Läkarintyg för sjukpenning, FK 7804). Los datos del paciente y los diagnósticos recientes se rellenan automáticamente desde el historial.</p>\n<p dir=\"auto\">El formulario puede bloquearse, descargarse como PDF o enviarse por correo postal directamente al centro de recepción de Försäkringskassan. Disponible en el módulo de Historial una vez activado para tu organización.</p>"},"no":{"title":"Försäkringskassan-skjemaer i journalen","body_html":"<p dir=\"auto\">Forbered Försäkringskassans skjemaer direkte fra klientens journal, forhåndsvis PDF-en og send den som fysisk post — alt på ett sted.</p>\n<p dir=\"auto\">Første skjema som støttes er legeerklæringen for sykepenger (Läkarintyg för sjukpenning, FK 7804). Pasientopplysninger og nylige diagnoser fylles inn automatisk fra journalen.</p>\n<p dir=\"auto\">Skjemaet kan låses, lastes ned som PDF eller sendes som ekte brev direkte til Försäkringskassans mottakssentral. Finnes i journalmodulen når funksjonen er aktivert for organisasjonen.</p>"},"dk":{"title":"Försäkringskassan-blanketter i journalen","body_html":"<p dir=\"auto\">Forbered Försäkringskassans blanketter direkte fra klientens journal, se PDF'en og send den som fysisk brev — det hele ét sted.</p>\n<p dir=\"auto\">Den første understøttede blanket er lægeerklæringen for sygedagpenge (Läkarintyg för sjukpenning, FK 7804). Patientoplysninger og seneste diagnoser udfyldes automatisk fra journalen.</p>\n<p dir=\"auto\">Blanketten kan låses, hentes som PDF eller sendes som rigtigt brev direkte til Försäkringskassans indlæsningscentral. Findes i journalmodulet, når funktionen er aktiveret for organisationen.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10022","title":"Rooms now sorted alphabetically in the calendar and on bookings","state":"closed","number":10022,"created_at":"2026-08-24T19:08:08Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T12:20:55Z","body":"Problem\r\nKolumnerna i Rum vertikalt saknar sortering, upplevs otydligt.\r\nListan över rum på bokningar saknar sortering (förutom på plats), upplevs otydligt.\r\nVid filtrering på plats i vyn Rum vertikalt visas inga rum\r\n\r\nMeddelat av petra@pusselfamiljen.se\r\n\r\n**Löser**\r\nAtt kolumnerna sorteras på bokstavsordning\r\nAtt listan över rum på bokningar sorteras i bokstavsordning per plats.\r\nRum vertikalt kan filtreras på plats\r\n\r\n(testar flöde direkt från Intercom till PR)","body_html":"<p dir=\"auto\">In the calendar, rooms are grouped by location and listed in alphabetical order, with \"No room\" always shown last. The Rooms vertical view can also be filtered by location, making it easy to focus on a single practice.</p>","translations":{"en":{"title":"Rooms now sorted alphabetically in the calendar and on bookings","body_html":"<p dir=\"auto\">In the calendar, rooms are grouped by location and listed in alphabetical order, with \"No room\" always shown last. The Rooms vertical view can also be filtered by location, making it easy to focus on a single practice.</p>"},"sv":{"title":"Rum sorteras i bokstavsordning i kalendern och på bokningar","body_html":"<p dir=\"auto\">I kalendern grupperas rummen per plats och listas i bokstavsordning, med \"Inget rum\" alltid sist. Vyn Rum vertikalt går dessutom att filtrera på plats för att fokusera på en enskild mottagning.</p>"},"es":{"title":"Las salas se ordenan alfabéticamente en el calendario y en las reservas","body_html":"<p dir=\"auto\">En el calendario, las salas se agrupan por ubicación y se muestran en orden alfabético, con \"Sin sala\" siempre al final. La vista Salas en vertical también se puede filtrar por ubicación para centrarte en un solo centro.</p>"},"no":{"title":"Rom sorteres alfabetisk i kalenderen og på bookinger","body_html":"<p dir=\"auto\">I kalenderen grupperes rommene etter sted og listes i alfabetisk rekkefølge, med \"Ingen rom\" alltid sist. Visningen Rom vertikalt kan i tillegg filtreres på sted, slik at du enkelt kan fokusere på én enkelt mottakelse.</p>"},"dk":{"title":"Rum sorteres alfabetisk i kalenderen og på bookinger","body_html":"<p dir=\"auto\">I kalenderen grupperes rummene efter lokation og vises i alfabetisk rækkefølge, med \"Intet rum\" altid til sidst. Visningen Rum lodret kan desuden filtreres på lokation, så du let kan fokusere på én enkelt klinik.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10044","title":"Let practitioners see all groups in the organization, even ones they're not part of","state":"closed","number":10044,"created_at":"2026-08-27T07:44:09Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T11:40:23Z","body":"## Summary\n- Adds org setting `showGroupsWithoutMembershipForHosts` under Inställningar → Sekretess in a new Grupper fieldset.\n- When enabled, non-admin hosts receive all non-chat groups from the `groups` publication, not only groups they belong to. Admins and supervisors still always see all groups; clients still see none.\n- Default remains off, so existing orgs keep membership-scoped group lists.\n\n## Test plan\n- [ ] As admin, open Inställningar → Sekretess and confirm the Grupper fieldset and checkbox save.\n- [ ] As a non-admin host, with the setting off, confirm groups you are not a member of do not appear under Grupper.\n- [ ] Enable the setting, reload as the same host, and confirm those groups appear.\n- [ ] Confirm a client still cannot see org groups.\n- [ ] Confirm admins still see all groups regardless of the setting.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">You'll find the new setting under Settings → Privacy, and it's turned off by default — so nothing changes for existing organizations. Administrators and supervisors still see every group, and clients never see the organization's groups.</p>","translations":{"en":{"title":"Let practitioners see all groups in the organization, even ones they're not part of","body_html":"<p dir=\"auto\">You'll find the new setting under Settings → Privacy, and it's turned off by default — so nothing changes for existing organizations. Administrators and supervisors still see every group, and clients never see the organization's groups.</p>"},"sv":{"title":"Tillåt behandlare att se alla grupper i organisationen, även de de inte är medlemmar i.","body_html":"<p dir=\"auto\">Inställningen finns under Inställningar → Sekretess och är avstängd som standard, så inget ändras för befintliga organisationer. Administratörer och handledare ser fortsatt alla grupper, och klienter ser aldrig organisationens grupper.</p>"},"es":{"title":"Permite que los profesionales vean todos los grupos de la organización, incluso aquellos a los que no pertenecen","body_html":"<p dir=\"auto\">Encontrarás la nueva opción en Configuración → Privacidad, y está desactivada por defecto, así que nada cambia para las organizaciones existentes. Los administradores y supervisores seguirán viendo todos los grupos, y los clientes nunca ven los grupos de la organización.</p>"},"no":{"title":"La behandlere se alle grupper i organisasjonen, også de de ikke er medlem av","body_html":"<p dir=\"auto\">Innstillingen finner du under Innstillinger → Personvern, og den er avslått som standard – så ingenting endres for eksisterende organisasjoner. Administratorer og veiledere ser fortsatt alle grupper, og klienter ser aldri organisasjonens grupper.</p>"},"dk":{"title":"Lad behandlere se alle grupper i organisationen, også dem de ikke er medlem af","body_html":"<p dir=\"auto\">Indstillingen finder du under Indstillinger → Privatliv, og den er slået fra som standard – så intet ændres for eksisterende organisationer. Administratorer og supervisorer ser fortsat alle grupper, og klienter ser aldrig organisationens grupper.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10037","title":"New layout on overview pages for clearer guidance on what needs attention","state":"closed","number":10037,"created_at":"2026-08-26T08:03:25Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T11:39:45Z","body":"## Summary\n- Restyle dash-bricks as bordered white cards on a gray page, with stronger glyphs for action vs empty/info states.\n- Split the host dashboard into a two-column work area and news aside; restyle inbox, bookings, forms, and cases as kd-items.\n- Pack the client dashboard with a masonry layout, move Ny bokning into the bookings header, and tighten the changelog to five expandable titles.\n\n## Test plan\n- [ ] Host dashboard: greeting/date outside cards, work column vs news aside at `lg`, no extra gap from dash-brick margins\n- [ ] Att ta hand om: action glyphs when counts > 0; empty forms/letters still visible\n- [ ] Idag/Imorgon: times in item icons; Anslut navigates as a link (`btn-primary-flat`, not `kd-button`)\n- [ ] Client dashboard: masonry packs cards without holes from ~992px; identity/journal lock stay in the flow\n- [ ] Aktuella bokningar: Ny bokning in the header; rows use host avatar or user glyph; Avboka / Anslut\n- [ ] Formulär and Ärenden: kd-item lists; empty Ärenden state when `org.hasCases`\n- [ ] Nytt i Kaddio: five titles, expand inline, Visa changelog / Visa fler nyheter opens the full changelog\n- [ ] Isolated view shell still uses the near-white body background\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">The overview pages in Kaddio have been given a cleaner and more focused look, with clear cards that highlight what needs your attention today. None of the content has changed — only the appearance.</p>\n<p dir=\"auto\">The practitioner's overview page is now sorted so that items requiring action appear at the top. Messages from Kaddio about updates and events are clearly displayed in the right-hand column. Logged-in clients will also enjoy a more pleasant and clearer experience, with pending items shown at the top. The new layout is also visible in the patient overview and the journal overview.</p>","translations":{"en":{"title":"New layout on overview pages for clearer guidance on what needs attention","body_html":"<p dir=\"auto\">The overview pages in Kaddio have been given a cleaner and more focused look, with clear cards that highlight what needs your attention today. None of the content has changed — only the appearance.</p>\n<p dir=\"auto\">The practitioner's overview page is now sorted so that items requiring action appear at the top. Messages from Kaddio about updates and events are clearly displayed in the right-hand column. Logged-in clients will also enjoy a more pleasant and clearer experience, with pending items shown at the top. The new layout is also visible in the patient overview and the journal overview.</p>"},"sv":{"title":"Ny layout på översiktssidor för tydligare hjälp med vad som behöver hanteras","body_html":"<p dir=\"auto\">Översiktssidorna i Kaddio har fått renare och mer fokuserat utseende med tydliga kort som lyfter fram det som behöver din uppmärksamhet idag. Inget av innehållet har förändrats, bara utseendet.</p>\n<p dir=\"auto\">Behandlarens översiktssida är sorterad så att det som behöver hanteras ligger överst. Meddelanden från Kaddio om uppdateringar och händelser syns tydligt i högerspalten. Även för inloggade klienter blir upplevelsen trevligare och tydligare med det som behöver hanteras högst upp. Den nya layouten syns också i patientöversikten och journalöversikten.</p>"},"es":{"title":"Nuevo diseño en las páginas de resumen para ver con más claridad lo que requiere atención","body_html":"<p dir=\"auto\">Las páginas de resumen de Kaddio ahora tienen un aspecto más limpio y enfocado, con tarjetas claras que destacan lo que necesita tu atención hoy. El contenido no ha cambiado, solo la apariencia.</p>\n<p dir=\"auto\">La página de resumen del profesional está ordenada de manera que lo que requiere gestión aparece en la parte superior. Los mensajes de Kaddio sobre actualizaciones y eventos se muestran claramente en la columna derecha. Los clientes que inician sesión también disfrutarán de una experiencia más agradable y clara, con las tareas pendientes destacadas en la parte superior. El nuevo diseño también está presente en la vista general del paciente y en la vista general del historial clínico.</p>"},"no":{"title":"Ny layout på oversiktssider for tydeligere oversikt over hva som må håndteres","body_html":"<p dir=\"auto\">Oversiktssidene i Kaddio har fått et renere og mer fokusert utseende, med tydelige kort som løfter frem det som trenger din oppmerksomhet i dag. Innholdet er uendret – kun utseendet er nytt.</p>\n<p dir=\"auto\">Behandlerens oversiktsside er sortert slik at det som må håndteres ligger øverst. Meldinger fra Kaddio om oppdateringer og hendelser vises tydelig i høyre kolonne. Også for innloggede klienter blir opplevelsen hyggeligere og tydeligere, med det som må håndteres øverst. Den nye layouten vises også i pasientoversikten og journaloversikten.</p>"},"dk":{"title":"Nyt layout på oversigtssider for tydeligere overblik over, hvad der skal håndteres","body_html":"<p dir=\"auto\">Oversigtssiderne i Kaddio har fået et renere og mere fokuseret udseende med tydelige kort, der fremhæver det, som kræver din opmærksomhed i dag. Indholdet er uændret – kun udseendet er nyt.</p>\n<p dir=\"auto\">Behandlerens oversigtsside er sorteret, så det, der skal håndteres, ligger øverst. Beskeder fra Kaddio om opdateringer og begivenheder vises tydeligt i højre kolonne. Også for loggede klienter bliver oplevelsen rarere og mere overskuelig, med det, der skal håndteres, øverst. Det nye layout ses også i patientoversigten og journaloversigten.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10045","title":"Switch practitioner when rescheduling from the calendar","state":"closed","number":10045,"created_at":"2026-08-27T08:20:29Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T11:25:15Z","body":"## Summary\n- The calendar header filters are hidden during reschedule, so the host filter stayed locked to the original booking.\n- The reschedule bar now includes the same attendee filter (and extra-host picker) as the header, so you can change who you are looking at while ombokning.\n\n## Test plan\n- [x] Open a booking in CalCtrl and choose Omboka\n- [x] Confirm the original host is selected in the reschedule bar\n- [x] Change the attendee filter to another host and confirm that host's calendar/free times load\n- [x] Add an extra host and confirm both calendars are visible\n- [x] Complete or cancel reschedule and confirm filters restore as before\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Previously, the calendar was locked to the original practitioner during rescheduling. Now the same filters available in the calendar header are also in the rescheduling bar, so you can easily view another practitioner's available times or several calendars at once before picking a new slot.</p>","translations":{"en":{"title":"Switch practitioner when rescheduling from the calendar","body_html":"<p dir=\"auto\">Previously, the calendar was locked to the original practitioner during rescheduling. Now the same filters available in the calendar header are also in the rescheduling bar, so you can easily view another practitioner's available times or several calendars at once before picking a new slot.</p>"},"sv":{"title":"Byt behandlare vid ombokning från kalendern","body_html":"<p dir=\"auto\">Tidigare var kalendern låst till den ursprungliga behandlaren under ombokning. Nu finns samma filter i ombokningsraden som i kalenderns rubrik, så du enkelt kan se en annan behandlares lediga tider eller flera kalendrar samtidigt innan du väljer en ny tid.</p>"},"es":{"title":"Cambia de profesional al reprogramar desde el calendario","body_html":"<p dir=\"auto\">Antes, el calendario quedaba fijado al profesional original durante la reprogramación. Ahora encontrarás los mismos filtros en la barra de reprogramación que en la cabecera del calendario, para que puedas consultar fácilmente las horas libres de otro profesional o ver varios calendarios a la vez antes de elegir un nuevo horario.</p>"},"no":{"title":"Bytt behandler ved ombooking fra kalenderen","body_html":"<p dir=\"auto\">Tidligere var kalenderen låst til den opprinnelige behandleren under ombooking. Nå finner du de samme filtrene i ombookingsraden som i kalenderens topptekst, slik at du enkelt kan se en annen behandlers ledige tider eller flere kalendere samtidig før du velger en ny tid.</p>"},"dk":{"title":"Skift behandler ved ombooking fra kalenderen","body_html":"<p dir=\"auto\">Tidligere var kalenderen låst til den oprindelige behandler under ombooking. Nu finder du de samme filtre i ombookingsrækken som i kalenderens overskrift, så du nemt kan se en anden behandlers ledige tider eller flere kalendere på samme tid, inden du vælger en ny tid.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10047","title":"Hide empty activity columns in the calendar's daily views","state":"closed","number":10047,"created_at":"2026-08-27T08:32:20Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T09:26:32Z","body":"## Summary\n- In **$HostP vertikalt** (day host time grid), the shared **Aktiviteter** (`cal`) column is now hidden when it has nothing to show.\n- This follows the existing **Visa $hostP utan bokningar** setting (`calSettingsHideEmptyHosts`): empty practitioner columns and an empty cal column are treated the same.\n- Single-host aktiviteter still belong in that host’s column, so they do not keep the shared cal lane visible.\n\n## Test plan\n- [x] Open calendar → Dag → **$HostP vertikalt** on a day with bookings but no shared aktiviteter / unassigned bookings. Confirm the **Aktiviteter** column is gone (setting off, which is the default).\n- [x] Enable **Visa $hostP utan bokningar**. Confirm empty host columns and an empty **Aktiviteter** column both reappear.\n- [x] On a day with a shared aktivitet (or a booking without a host), confirm **Aktiviteter** stays visible even with the setting off.\n- [x] Confirm a single-host aktivitet still appears in that host’s column and does not force the cal column to show.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Empty practitioner columns and an empty Activities column are now handled the same way, following your existing setting for showing practitioners without bookings. As soon as there's a shared activity or a booking without a practitioner, the column automatically reappears.</p>","translations":{"en":{"title":"Hide empty activity columns in the calendar's daily views","body_html":"<p dir=\"auto\">Empty practitioner columns and an empty Activities column are now handled the same way, following your existing setting for showing practitioners without bookings. As soon as there's a shared activity or a booking without a practitioner, the column automatically reappears.</p>"},"sv":{"title":"Dölj tomma kolumner för aktiviteter i dagsvyerna i kalendern","body_html":"<p dir=\"auto\">Tomma behandlarkolumner och en tom Aktiviteter-kolumn hanteras på samma sätt och följer din befintliga inställning för att visa behandlare utan bokningar. Så fort det finns en delad aktivitet eller en bokning utan behandlare visas kolumnen igen automatiskt.</p>"},"es":{"title":"Ocultar columnas de actividades vacías en las vistas diarias del calendario","body_html":"<p dir=\"auto\">Las columnas de terapeutas vacías y la columna de Actividades vacía se gestionan de la misma manera y siguen tu configuración actual para mostrar terapeutas sin reservas. En cuanto haya una actividad compartida o una reserva sin terapeuta, la columna vuelve a aparecer automáticamente.</p>"},"no":{"title":"Skjul tomme aktivitetskolonner i dagsvisningene i kalenderen","body_html":"<p dir=\"auto\">Tomme behandlerkolonner og en tom Aktiviteter-kolonne håndteres på samme måte og følger din eksisterende innstilling for å vise behandlere uten bookinger. Så snart det finnes en delt aktivitet eller en booking uten behandler, vises kolonnen igjen automatisk.</p>"},"dk":{"title":"Skjul tomme aktivitetskolonner i kalenderens dagsvisninger","body_html":"<p dir=\"auto\">Tomme behandlerkolonner og en tom Aktiviteter-kolonne håndteres på samme måde og følger din eksisterende indstilling for at vise behandlere uden bookinger. Så snart der er en delt aktivitet eller en booking uden behandler, vises kolonnen automatisk igen.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9941","title":"Reliable online booking","state":"closed","number":9941,"created_at":"2026-08-14T05:57:38Z","repo_name":"Kaddio Application","merged_at":"2026-08-27T06:36:59Z","body":"Problem\r\nTjänster visas inte i klientbokningen om vi inte får valutakursinfo. \r\n\r\nLösning\r\n- Visa tjänster oavsett kontakt\r\n- Ej kunna välja andra valutor om kurs saknas","body_html":"<p dir=\"auto\">Online booking now shows your services even when currency exchange rates are temporarily unavailable.</p>\n<p dir=\"auto\">Previously, the client booking view could appear empty if exchange rate information was missing. Services are now always visible, and clients can book in your clinic's default currency. Other currencies are shown as unavailable until exchange rates are back in place.</p>","translations":{"en":{"title":"Reliable online booking","body_html":"<p dir=\"auto\">Online booking now shows your services even when currency exchange rates are temporarily unavailable.</p>\n<p dir=\"auto\">Previously, the client booking view could appear empty if exchange rate information was missing. Services are now always visible, and clients can book in your clinic's default currency. Other currencies are shown as unavailable until exchange rates are back in place.</p>"},"sv":{"title":"Klientbokningen visar dina tjänster även när valutakurser tillfälligt saknas.","body_html":"<p dir=\"auto\">Tidigare kunde bokningsvyn se tom ut om valutakursinformation saknades. Tjänster syns nu alltid, och klienter kan boka i klinikens standardvaluta. Andra valutor visas som otillgängliga tills kurserna är på plats igen.</p>"},"es":{"title":"Reserva de clientes fiable","body_html":"<p dir=\"auto\">La reserva online muestra ahora tus servicios incluso cuando los tipos de cambio no están disponibles temporalmente.</p>\n<p dir=\"auto\">Antes, la vista de reserva podía aparecer vacía si faltaba información de tipos de cambio. Los servicios se muestran siempre, y los clientes pueden reservar en la moneda predeterminada de la clínica. Otras monedas aparecen como no disponibles hasta que los tipos de cambio vuelvan a estar activos.</p>"},"no":{"title":"Pålitelig klientbooking","body_html":"<p dir=\"auto\">Klientbookingen viser nå tjenestene dine også når valutakurser midlertidig mangler.</p>\n<p dir=\"auto\">Tidligere kunne bookingvisningen se tom ut hvis valutakursinformasjon manglet. Tjenester vises nå alltid, og klienter kan booke i klinikkens standardvaluta. Andre valutaer vises som utilgjengelige inntil kursene er på plass igjen.</p>"},"dk":{"title":"Pålidelig klientbooking","body_html":"<p dir=\"auto\">Klientbookingen viser nu dine ydelser, selv når valutakurser midlertidigt mangler.</p>\n<p dir=\"auto\">Tidligere kunne bookingvisningen se tom ud, hvis valutakursinformation manglede. Ydelser vises nu altid, og klienter kan booke i klinikkens standardvaluta. Andre valutaer vises som utilgængelige, indtil kurserne er tilbage.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/10040","title":"Smoother AI transcription","state":"closed","number":10040,"created_at":"2026-08-26T18:45:18Z","repo_name":"Kaddio Application","merged_at":"2026-08-26T19:02:32Z","body":null,"body_html":"<p dir=\"auto\">AI transcription in the Journal now handles edge cases more gracefully, so recordings flow into notes without unexpected interruptions.</p>\n<p dir=\"auto\">This fix improves stability when working with contact types that have no note types attached, ensuring the AI assistant responds reliably every time. No action needed.</p>","translations":{"en":{"title":"Smoother AI transcription","body_html":"<p dir=\"auto\">AI transcription in the Journal now handles edge cases more gracefully, so recordings flow into notes without unexpected interruptions.</p>\n<p dir=\"auto\">This fix improves stability when working with contact types that have no note types attached, ensuring the AI assistant responds reliably every time. No action needed.</p>"},"sv":{"title":"Stabilare AI-transkribering","body_html":"<p dir=\"auto\">AI-transkribering i journalen hanterar nu specialfall smidigare, så att inspelningar blir till anteckningar utan oväntade avbrott.</p>\n<p dir=\"auto\">Stabiliteten förbättras när kontakttyper saknar kopplade anteckningstyper, och AI-assistenten svarar pålitligt varje gång. Ingen åtgärd krävs.</p>"},"es":{"title":"Transcripción con IA más estable","body_html":"<p dir=\"auto\">La transcripción con IA en la historia clínica ahora gestiona mejor los casos especiales, para que las grabaciones se conviertan en notas sin…</p>\n<p dir=\"auto\">La estabilidad mejora cuando los tipos de contacto no tienen tipos de nota asociados, y el asistente de IA responde de forma fiable. No requiere ninguna acción.</p>"},"no":{"title":"Mer stabil AI-transkribering","body_html":"<p dir=\"auto\">AI-transkribering i journalen håndterer nå spesialtilfeller mer smidig, slik at opptak blir til notater uten uventede avbrudd.</p>\n<p dir=\"auto\">Stabiliteten forbedres når kontakttyper mangler tilknyttede notattyper, og AI-assistenten svarer pålitelig hver gang. Ingen handling nødvendig.</p>"},"dk":{"title":"Mere stabil AI-transskribering","body_html":"<p dir=\"auto\">AI-transskribering i journalen håndterer nu særlige tilfælde mere smidigt, så optagelser bliver til notater uden uventede afbrydelser.</p>\n<p dir=\"auto\">Stabiliteten forbedres, når kontakttyper ikke har tilknyttede notattyper, og AI-assistenten svarer pålideligt hver gang. Ingen handling nødvendig.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9939","title":"Smarter AI journal handling","state":"closed","number":9939,"created_at":"2026-08-13T18:21:22Z","repo_name":"Kaddio Application","merged_at":"2026-08-21T06:50:24Z","body":null,"body_html":"<p dir=\"auto\">The AI assistant now skips drawings and file attachments when working with journal notes, keeping generated text focused on written content.</p>\n<p dir=\"auto\">This means AI features in the Journal module — like transcription and summaries — will no longer risk overwriting images or files with text. Practitioners get cleaner, more reliable results without any changes to their workflow.</p>","translations":{"en":{"title":"Smarter AI journal handling","body_html":"<p dir=\"auto\">The AI assistant now skips drawings and file attachments when working with journal notes, keeping generated text focused on written content.</p>\n<p dir=\"auto\">This means AI features in the Journal module — like transcription and summaries — will no longer risk overwriting images or files with text. Practitioners get cleaner, more reliable results without any changes to their workflow.</p>"},"sv":{"title":"Smartare AI i journalen","body_html":"<p dir=\"auto\">AI-assistenten hoppar över ritningar och bifogade filer när den arbetar med journalanteckningar, så att genererad text håller sig till skrivet…</p>\n<p dir=\"auto\">Det innebär att AI-funktioner i Journalmodulen – som transkribering och sammanfattningar – inte längre riskerar att skriva över bilder eller filer med text. Behandlare får renare och mer tillförlitliga resultat utan att behöva ändra sitt arbetssätt.</p>"},"es":{"title":"IA más precisa en la historia clínica","body_html":"<p dir=\"auto\">El asistente de IA ahora omite dibujos y archivos adjuntos al trabajar con notas clínicas, manteniendo el texto generado centrado en el contenido…</p>\n<p dir=\"auto\">Esto significa que funciones como la transcripción y los resúmenes en el módulo Historia Clínica ya no corren el riesgo de sobrescribir imágenes o archivos con texto. Los profesionales obtienen resultados más limpios y fiables sin cambiar su forma de trabajar.</p>"},"no":{"title":"Smartere AI i journalen","body_html":"<p dir=\"auto\">AI-assistenten hopper nå over tegninger og vedlagte filer når den jobber med journalnotater, slik at generert tekst holder seg til skriftlig innhold.</p>\n<p dir=\"auto\">Det betyr at AI-funksjoner i Journal-modulen – som transkribering og oppsummeringer – ikke lenger risikerer å overskrive bilder eller filer med tekst. Behandlere får renere og mer pålitelige resultater uten å endre arbeidsflyten.</p>"},"dk":{"title":"Smartere AI i journalen","body_html":"<p dir=\"auto\">AI-assistenten springer nu tegninger og vedhæftede filer over, når den arbejder med journalnotater, så genereret tekst holder sig til skriftligt…</p>\n<p dir=\"auto\">Det betyder, at AI-funktioner i Journal-modulet – som transskription og opsummeringer – ikke længere risikerer at overskrive billeder eller filer med tekst. Behandlere får renere og mere pålidelige resultater uden at ændre deres arbejdsgang.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9993","title":"Activities land in the right column","state":"closed","number":9993,"created_at":"2026-08-20T09:37:09Z","repo_name":"Kaddio Application","merged_at":"2026-08-20T14:15:32Z","body":"## Summary\n- In Behandlare vertikalt, an aktivitet with only one host attendee now shows in that host's column instead of Aktiviteter.\n- Creating an aktivitet in a host lane assigns that host as the attendee so it stays in the column you clicked.\n- The Aktiviteter column is no longer treated as a host id, which was crashing place lookup (`defaultPlaceId`).\n\n## Test plan\n- [ ] Open **Dag → Behandlare vertikalt**.\n- [ ] An aktivitet with a single host attendee appears in that host's lane.\n- [ ] An aktivitet with several attendees (or a non-host) stays in **Aktiviteter**.\n- [ ] Click a host lane, create **Aktivitet** — it lands in that host's lane.\n- [ ] Click the **Aktiviteter** column and create an aktivitet — no `defaultPlaceId` error.\n- [ ] With \"hide empty hosts\" on, a host whose only event that day is such an aktivitet still has a column.\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">In the Practitioner vertical day view, an activity with a single practitioner now appears in that practitioner's column instead of the shared…</p>\n<p dir=\"auto\">When you click a practitioner's column to create an activity, it stays right where you clicked. Activities with several attendees continue to live in the Activities column, keeping the calendar tidy and easy to scan.</p>\n<p dir=\"auto\">This is part of the Booking module and works automatically — no setup needed.</p>","translations":{"en":{"title":"Activities land in the right column","body_html":"<p dir=\"auto\">In the Practitioner vertical day view, an activity with a single practitioner now appears in that practitioner's column instead of the shared…</p>\n<p dir=\"auto\">When you click a practitioner's column to create an activity, it stays right where you clicked. Activities with several attendees continue to live in the Activities column, keeping the calendar tidy and easy to scan.</p>\n<p dir=\"auto\">This is part of the Booking module and works automatically — no setup needed.</p>"},"sv":{"title":"Aktiviteter hamnar i rätt kolumn","body_html":"<p dir=\"auto\">I dagsvyn Behandlare vertikalt visas en aktivitet med endast en behandlare i den behandlarens kolumn istället för i den gemensamma…</p>\n<p dir=\"auto\">När du klickar i en behandlares kolumn för att skapa en aktivitet stannar den där du klickade. Aktiviteter med flera deltagare ligger kvar i Aktiviteter-kolumnen, så kalendern blir enklare att överblicka.</p>\n<p dir=\"auto\">Förändringen är en del av Bokning och fungerar automatiskt — inget behöver ställas in.</p>"},"es":{"title":"Las actividades en la columna correcta","body_html":"<p dir=\"auto\">En la vista diaria vertical por profesional, una actividad con un solo profesional aparece ahora en la columna de ese profesional en lugar de en la…</p>\n<p dir=\"auto\">Al hacer clic en la columna de un profesional para crear una actividad, esta se queda justo donde has hecho clic. Las actividades con varios participantes siguen mostrándose en la columna Actividades, manteniendo el calendario claro y fácil de leer.</p>\n<p dir=\"auto\">Forma parte del módulo de Reservas y funciona de forma automática, sin configuración.</p>"},"no":{"title":"Aktiviteter havner i riktig kolonne","body_html":"<p dir=\"auto\">I dagsvisningen Behandler vertikalt vises en aktivitet med bare én behandler i denne behandlerens kolonne i stedet for i den felles…</p>\n<p dir=\"auto\">Når du klikker i en behandlers kolonne for å opprette en aktivitet, blir den liggende der du klikket. Aktiviteter med flere deltakere ligger fortsatt i Aktiviteter-kolonnen, slik at kalenderen blir enklere å få oversikt over.</p>\n<p dir=\"auto\">Endringen er en del av Booking og fungerer automatisk — ingen oppsett kreves.</p>"},"dk":{"title":"Aktiviteter i den rigtige kolonne","body_html":"<p dir=\"auto\">I dagsvisningen Behandler vertikalt vises en aktivitet med kun én behandler i denne behandlers kolonne i stedet for i den fælles Aktiviteter-kolonne.</p>\n<p dir=\"auto\">Når du klikker i en behandlers kolonne for at oprette en aktivitet, bliver den liggende, hvor du klikkede. Aktiviteter med flere deltagere bliver stadig vist i Aktiviteter-kolonnen, så kalenderen er nem at overskue.</p>\n<p dir=\"auto\">Ændringen er en del af Booking og virker automatisk — ingen opsætning nødvendig.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9948","title":"Reporting tool now shows rebooking history and original booking details","state":"closed","number":9948,"created_at":"2026-08-14T11:17:44Z","repo_name":"Kaddio Application","merged_at":"2026-08-20T11:11:26Z","body":null,"body_html":"<p dir=\"auto\">Booking reports now display the full trail whenever an appointment is rescheduled, making it easy to see where a booking originated and where it was moved.</p>","translations":{"en":{"title":"Reporting tool now shows rebooking history and original booking details","body_html":"<p dir=\"auto\">Booking reports now display the full trail whenever an appointment is rescheduled, making it easy to see where a booking originated and where it was moved.</p>"},"sv":{"title":"Rapportverktyget visar information om ombokningar och den ursprungliga bokningen","body_html":"<p dir=\"auto\">Bokningsrapporter visar nu hela spåret när en tid bokas om, så att det är enkelt att se var en bokning kommer ifrån och vart den flyttades.</p>"},"es":{"title":"La herramienta de informes muestra información sobre las reprogramaciones y la reserva original","body_html":"<p dir=\"auto\">Los informes de reservas muestran ahora el recorrido completo cuando se reprograma una cita, para que puedas ver fácilmente de dónde proviene una reserva y a dónde se movió.</p>"},"no":{"title":"Rapportverktøyet viser informasjon om ombookinger og den opprinnelige bookingen","body_html":"<p dir=\"auto\">Bookingrapporter viser nå hele sporet når en time bookes om, slik at det er enkelt å se hvor en booking kommer fra og hvor den ble flyttet.</p>"},"dk":{"title":"Rapportværktøjet viser information om ombookinger og den oprindelige booking","body_html":"<p dir=\"auto\">Bookingrapporter viser nu hele forløbet, når en tid bliver ombooket, så det er nemt at se, hvor en booking kommer fra, og hvor den blev flyttet hen.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9871","title":"Smoother filtering in Journal","state":"closed","number":9871,"created_at":"2026-07-23T10:49:29Z","repo_name":"Kaddio Application","merged_at":"2026-08-20T11:00:07Z","body":"Nu blir det enklare att filtrera i översikt Journal (/contacts)","body_html":"<p dir=\"auto\">The filter menu in the Journal overview now stays open while you make your selections.</p>\n<p dir=\"auto\">Apply multiple filters in one go without the menu closing after every click — a small tweak that makes finding the right contacts noticeably faster.</p>","translations":{"en":{"title":"Smoother filtering in Journal","body_html":"<p dir=\"auto\">The filter menu in the Journal overview now stays open while you make your selections.</p>\n<p dir=\"auto\">Apply multiple filters in one go without the menu closing after every click — a small tweak that makes finding the right contacts noticeably faster.</p>"},"sv":{"title":"Smidigare filtrering i Journal","body_html":"<p dir=\"auto\">Filtermenyn i journalöversikten stannar öppen medan du gör dina val.</p>\n<p dir=\"auto\">Välj flera filter i följd utan att menyn stängs efter varje klick — en liten justering som gör det märkbart snabbare att hitta rätt kontakter.</p>"},"es":{"title":"Filtrado más fluido en Journal","body_html":"<p dir=\"auto\">El menú de filtros en la vista general de Journal ahora permanece abierto mientras haces tus selecciones.</p>\n<p dir=\"auto\">Aplica varios filtros seguidos sin que el menú se cierre tras cada clic — un pequeño ajuste que hace mucho más rápido encontrar los contactos correctos.</p>"},"no":{"title":"Enklere filtrering i Journal","body_html":"<p dir=\"auto\">Filtermenyen i journaloversikten holder seg åpen mens du gjør valgene dine.</p>\n<p dir=\"auto\">Velg flere filtre etter hverandre uten at menyen lukkes ved hvert klikk — en liten forbedring som gjør det raskere å finne de rette kontaktene.</p>"},"dk":{"title":"Nemmere filtrering i Journal","body_html":"<p dir=\"auto\">Filtermenuen i journaloversigten forbliver nu åben, mens du foretager dine valg.</p>\n<p dir=\"auto\">Vælg flere filtre i træk uden at menuen lukker efter hvert klik — en lille justering, der gør det mærkbart hurtigere at finde de rigtige kontakter.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9863","title":"Smoother Peppol e-invoicing","state":"closed","number":9863,"created_at":"2026-07-21T09:20:31Z","repo_name":"Kaddio Application","merged_at":"2026-08-20T08:22:00Z","body":"Löser typ alla våra problem med e-faktura.","body_html":"<p dir=\"auto\">Sending invoices via Peppol is now more reliable, with clearer guidance when something needs attention.</p>\n<p dir=\"auto\">In Invoicing, Kaddio now validates payment details, VAT numbers and organisation numbers against the official Peppol rules for Sweden, Denmark and Norway before an invoice is sent. Cross-border invoices between the Nordic countries are handled correctly, and the right payment method — Bankgiro, Plusgiro or IBAN/BIC — is picked automatically based on where the invoice is going.</p>\n<p dir=\"auto\">If anything is missing or incorrect, you'll see a clear warning explaining what to fix, so fewer invoices get rejected by the receiver.</p>","translations":{"en":{"title":"Smoother Peppol e-invoicing","body_html":"<p dir=\"auto\">Sending invoices via Peppol is now more reliable, with clearer guidance when something needs attention.</p>\n<p dir=\"auto\">In Invoicing, Kaddio now validates payment details, VAT numbers and organisation numbers against the official Peppol rules for Sweden, Denmark and Norway before an invoice is sent. Cross-border invoices between the Nordic countries are handled correctly, and the right payment method — Bankgiro, Plusgiro or IBAN/BIC — is picked automatically based on where the invoice is going.</p>\n<p dir=\"auto\">If anything is missing or incorrect, you'll see a clear warning explaining what to fix, so fewer invoices get rejected by the receiver.</p>"},"sv":{"title":"Smidigare e-faktura via Peppol","body_html":"<p dir=\"auto\">Att skicka fakturor via Peppol är nu mer pålitligt, med tydligare vägledning när något behöver justeras.</p>\n<p dir=\"auto\">I Fakturering kontrollerar Kaddio betaluppgifter, momsnummer och organisationsnummer mot Peppols officiella regler för Sverige, Danmark och Norge innan fakturan skickas. Fakturor mellan de nordiska länderna hanteras korrekt, och rätt betalsätt — Bankgiro, Plusgiro eller IBAN/BIC — väljs automatiskt utifrån mottagarens land.</p>\n<p dir=\"auto\">Om något saknas eller är felaktigt visas en tydlig varning med vad som behöver rättas, så att färre fakturor avvisas av mottagaren.</p>"},"es":{"title":"Facturación Peppol más fluida","body_html":"<p dir=\"auto\">Enviar facturas por Peppol es ahora más fiable, con avisos claros cuando algo requiere atención.</p>\n<p dir=\"auto\">En el módulo de Facturación, Kaddio valida los datos de pago, el número de IVA y el número de organización según las reglas oficiales de Peppol para Suecia, Dinamarca y Noruega antes de enviar la factura. Las facturas transfronterizas entre países nórdicos se gestionan correctamente, y el método de pago adecuado — Bankgiro, Plusgiro o IBAN/BIC — se elige automáticamente según el destino.</p>\n<p dir=\"auto\">Si falta algún dato o hay un error, verás un aviso claro con lo que hay que corregir, de modo que menos facturas sean rechazadas por el destinatario.</p>"},"no":{"title":"Smidigere e-faktura via Peppol","body_html":"<p dir=\"auto\">Å sende fakturaer via Peppol er nå mer pålitelig, med tydeligere veiledning når noe må justeres.</p>\n<p dir=\"auto\">I Fakturering kontrollerer Kaddio betalingsopplysninger, MVA-nummer og organisasjonsnummer mot Peppols offisielle regler for Sverige, Danmark og Norge før fakturaen sendes. Fakturaer på tvers av de nordiske landene håndteres riktig, og rett betalingsmåte — Bankgiro, Plusgiro eller IBAN/BIC — velges automatisk ut fra mottakerens land.</p>\n<p dir=\"auto\">Hvis noe mangler eller er feil, vises en tydelig advarsel om hva som må rettes, slik at færre fakturaer blir avvist av mottakeren.</p>"},"dk":{"title":"Smidigere e-faktura via Peppol","body_html":"<p dir=\"auto\">At sende fakturaer via Peppol er nu mere pålideligt, med tydeligere vejledning når noget skal rettes.</p>\n<p dir=\"auto\">I Fakturering kontrollerer Kaddio betalingsoplysninger, momsnummer og organisationsnummer mod Peppols officielle regler for Sverige, Danmark og Norge, inden fakturaen sendes. Fakturaer på tværs af de nordiske lande håndteres korrekt, og den rette betalingsmåde — Bankgiro, Plusgiro eller IBAN/BIC — vælges automatisk ud fra modtagerens land.</p>\n<p dir=\"auto\">Hvis noget mangler eller er forkert, vises en tydelig advarsel med, hvad der skal rettes, så færre fakturaer bliver afvist af modtageren.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9981","title":"Exclude contact types from journal exports","state":"closed","number":9981,"created_at":"2026-08-19T08:42:52Z","repo_name":"Kaddio Application","merged_at":"2026-08-20T08:19:51Z","body":"## Summary\n- Add optional `hideInExport` on contact types so org admins can exclude specific types from client journal PDF exports.\n- Filter hidden types in bulk export (`/pdf/contacts`, `/viewpdf/contacts`, `/html/contacts`); single-contact export remains unchanged.\n- Expose the setting on the Kontakttyper settings page with a checkbox and summary badge.\n\n## Browser test\nTested locally with demo fixtures (`npm run meteor-for-playwright`) as **Amanda**.\n\n| Check | Expected | Result |\n|---|---|---|\n| Settings checkbox + summary badge | Visible and persists after save | Pass |\n| Bulk HTML export `/html/contacts/:clientId` | Omits contacts with hidden types | Pass |\n| Single HTML export `/html/contact/:id` | Still exports hidden types | Pass |\n\n**Settings UI**\n- Opened **Inställningar → Journal → Kontakttyper**\n- Enabled **Dölj vid PDF-export** on **Nybesök**\n- Saved successfully; summary updated to **Döljs vid export**\n\n**Bulk export**\n- Patient: **Kajsa Svensson**\n- Route: `/html/contacts/NscyuL8mPPdJBk8ci?showHistory=true&showDetails=true&layout=legacy`\n- Result: only patient header rendered; no contact content\n- Expected here because Kajsa only has a **Nybesök** contact and that type was hidden\n\n**Single-contact export**\n- Contact: Kajsa's **Nybesök** (`/contacts/a7yQRdLLeqWERsWbP`)\n- Route: `/html/contact/a7yQRdLLeqWERsWbP?showHistory=true&showDetails=&layout=legacy`\n- Result: full export with **Nybesök - 2026-08-09**, Kontaktorsak, Anamnes, Aktuellt, Bedömning, Åtgärd, etc.\n\n## Test plan\n- [x] Open Journal → Inställningar → Kontakttyper and enable \"Dölj vid PDF-export\" on a contact type\n- [x] Export all contacts for a client with that type and verify those contacts are omitted\n- [x] Export a single contact of that type and verify it still works\n- [ ] Verify MCP `get_kontakttyper` returns `hideInExport`\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Choose which contact types should stay out of bulk journal PDF exports for a cleaner, more relevant output.</p>\n<p dir=\"auto\">In the Journal settings, each contact type now has a Hide from PDF export option. When enabled, contacts of that type are left out when exporting all contacts for a client, while single-contact exports remain unaffected.</p>","translations":{"en":{"title":"Exclude contact types from journal exports","body_html":"<p dir=\"auto\">Choose which contact types should stay out of bulk journal PDF exports for a cleaner, more relevant output.</p>\n<p dir=\"auto\">In the Journal settings, each contact type now has a Hide from PDF export option. When enabled, contacts of that type are left out when exporting all contacts for a client, while single-contact exports remain unaffected.</p>"},"sv":{"title":"Dölj kontakttyper vid journalexport","body_html":"<p dir=\"auto\">Välj vilka kontakttyper som ska utelämnas vid PDF-export av hela journalen för en renare och mer relevant export.</p>\n<p dir=\"auto\">Under Journal-inställningar finns nu valet Dölj vid PDF-export för varje kontakttyp. När det är aktiverat utelämnas kontakter av den typen vid samlad export för en klient, medan export av enskild kontakt fungerar som vanligt.</p>"},"es":{"title":"Excluir tipos de contacto en exportaciones","body_html":"<p dir=\"auto\">Elige qué tipos de contacto se omiten al exportar el historial clínico completo en PDF, para obtener un resultado más limpio y relevante.</p>\n<p dir=\"auto\">En los ajustes del Diario, cada tipo de contacto incluye ahora la opción Ocultar en exportación PDF. Al activarla, esos contactos se omiten en la exportación conjunta de un cliente, mientras que la exportación de un contacto individual no se ve afectada.</p>"},"no":{"title":"Skjul kontakttyper ved journaleksport","body_html":"<p dir=\"auto\">Velg hvilke kontakttyper som skal utelates ved PDF-eksport av hele journalen, for et ryddigere og mer relevant resultat.</p>\n<p dir=\"auto\">Under Journal-innstillinger finnes nå valget Skjul ved PDF-eksport for hver kontakttype. Når det er aktivert, utelates kontakter av den typen ved samlet eksport for en klient, mens eksport av en enkelt kontakt fungerer som før.</p>"},"dk":{"title":"Skjul kontakttyper ved journaleksport","body_html":"<p dir=\"auto\">Vælg hvilke kontakttyper der skal udelades ved PDF-eksport af hele journalen, så resultatet bliver mere overskueligt og relevant.</p>\n<p dir=\"auto\">Under Journal-indstillinger findes nu valget Skjul ved PDF-eksport for hver kontakttype. Når det er aktiveret, udelades kontakter af den type ved samlet eksport for en klient, mens eksport af en enkelt kontakt fungerer som hidtil.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9937","title":"Custom fields on booking receipts","state":"closed","number":9937,"created_at":"2026-08-13T13:32:11Z","repo_name":"Kaddio Application","merged_at":"2026-08-19T09:20:02Z","body":null,"body_html":"<p dir=\"auto\">Booking receipts can now show custom fields, giving clients more of the details that matter on every confirmation.</p>\n<p dir=\"auto\">In Booking settings, choose which custom fields should appear on receipts. The selected fields are then included on both emailed and PDF receipts, alongside the standard booking information.</p>","translations":{"en":{"title":"Custom fields on booking receipts","body_html":"<p dir=\"auto\">Booking receipts can now show custom fields, giving clients more of the details that matter on every confirmation.</p>\n<p dir=\"auto\">In Booking settings, choose which custom fields should appear on receipts. The selected fields are then included on both emailed and PDF receipts, alongside the standard booking information.</p>"},"sv":{"title":"Anpassade fält på kvitton","body_html":"<p dir=\"auto\">Kvitton för bokningar kan nu visa anpassade fält, så att klienter får med mer av den information som är relevant för besöket.</p>\n<p dir=\"auto\">Under bokningsinställningarna väljer du vilka anpassade fält som ska visas på kvitton. Valda fält följer med både i mejlade kvitton och PDF-kvitton, tillsammans med den vanliga bokningsinformationen.</p>"},"es":{"title":"Campos personalizados en los recibos","body_html":"<p dir=\"auto\">Los recibos de reservas pueden mostrar ahora campos personalizados, incluyendo más detalles relevantes en cada confirmación.</p>\n<p dir=\"auto\">En los ajustes de Reservas, elige qué campos personalizados deben aparecer en los recibos. Los campos seleccionados se incluirán tanto en los recibos enviados por correo como en los recibos en PDF, junto con la información habitual de la reserva.</p>"},"no":{"title":"Egendefinerte felt på kvitteringer","body_html":"<p dir=\"auto\">Bookingkvitteringer kan nå vise egendefinerte felt, slik at klienter får med mer av informasjonen som er relevant for timen.</p>\n<p dir=\"auto\">Under bookinginnstillingene velger du hvilke egendefinerte felt som skal vises på kvitteringer. Valgte felt følger med både i e-postkvitteringer og PDF-kvitteringer, sammen med den vanlige bookinginformasjonen.</p>"},"dk":{"title":"Brugerdefinerede felter på kvitteringer","body_html":"<p dir=\"auto\">Bookingkvitteringer kan nu vise brugerdefinerede felter, så klienter får flere af de detaljer, der er relevante for hver aftale.</p>\n<p dir=\"auto\">Under bookingindstillingerne vælger du, hvilke brugerdefinerede felter der skal vises på kvitteringer. De valgte felter tages med i både e-mailkvitteringer og PDF-kvitteringer sammen med de sædvanlige bookingoplysninger.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9947","title":"Booking IDs in exports","state":"closed","number":9947,"created_at":"2026-08-14T11:08:45Z","repo_name":"Kaddio Application","merged_at":"2026-08-15T07:15:45Z","body":null,"body_html":"<p dir=\"auto\">Booking reports now include a unique booking ID for every row, making it easier to trace and cross-reference individual bookings.</p>\n<p dir=\"auto\">When exporting booking data from Reports, each entry carries its own identifier alongside the existing details. This is especially useful when matching exported data with other systems or following up on specific bookings.</p>","translations":{"en":{"title":"Booking IDs in exports","body_html":"<p dir=\"auto\">Booking reports now include a unique booking ID for every row, making it easier to trace and cross-reference individual bookings.</p>\n<p dir=\"auto\">When exporting booking data from Reports, each entry carries its own identifier alongside the existing details. This is especially useful when matching exported data with other systems or following up on specific bookings.</p>"},"sv":{"title":"Boknings-ID i rapporter","body_html":"<p dir=\"auto\">Bokningsrapporter innehåller nu ett unikt boknings-ID för varje rad, vilket gör det enklare att spåra och referera till enskilda bokningar.</p>\n<p dir=\"auto\">Vid export av bokningsdata från Rapporter följer en egen identifierare med varje post utöver övriga uppgifter. Det underlättar särskilt när exporterad data ska matchas mot andra system eller när du vill följa upp specifika bokningar.</p>"},"es":{"title":"ID de reserva en informes","body_html":"<p dir=\"auto\">Los informes de reservas ahora incluyen un identificador único por cada fila, facilitando el seguimiento y la referencia cruzada de cada reserva.</p>\n<p dir=\"auto\">Al exportar datos de reservas desde Informes, cada entrada lleva su propio identificador junto con los detalles habituales. Es especialmente útil para cruzar información con otros sistemas o dar seguimiento a reservas concretas.</p>"},"no":{"title":"Booking-ID i rapporter","body_html":"<p dir=\"auto\">Bookingrapporter inneholder nå en unik booking-ID for hver rad, noe som gjør det enklere å spore og referere til enkeltbookinger.</p>\n<p dir=\"auto\">Ved eksport av bookingdata fra Rapporter følger en egen identifikator med hver oppføring i tillegg til de vanlige detaljene. Det er spesielt nyttig når eksportert data skal matches mot andre systemer eller når du vil følge opp bestemte bookinger.</p>"},"dk":{"title":"Booking-ID i rapporter","body_html":"<p dir=\"auto\">Bookingrapporter indeholder nu et unikt booking-ID for hver række, hvilket gør det nemmere at spore og krydsreferere enkelte bookinger.</p>\n<p dir=\"auto\">Når du eksporterer bookingdata fra Rapporter, følger en egen identifikator med hver post ud over de sædvanlige oplysninger. Det er især nyttigt, når eksporterede data skal matches med andre systemer eller ved opfølgning på bestemte bookinger.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9896","title":"Choose how practitioners are listed","state":"closed","number":9896,"created_at":"2026-08-05T09:54:47Z","repo_name":"Kaddio Application","merged_at":"2026-08-14T07:02:19Z","body":null,"body_html":"<p dir=\"auto\">You can now decide the order practitioners appear in when clients book online.</p>\n<p dir=\"auto\">Under Booking settings, pick between the order practitioners were added, alphabetical, random, or highest PVA first. A small change that makes your booking page feel just right for your clinic.</p>","translations":{"en":{"title":"Choose how practitioners are listed","body_html":"<p dir=\"auto\">You can now decide the order practitioners appear in when clients book online.</p>\n<p dir=\"auto\">Under Booking settings, pick between the order practitioners were added, alphabetical, random, or highest PVA first. A small change that makes your booking page feel just right for your clinic.</p>"},"sv":{"title":"Välj ordning på behandlarlistan","body_html":"<p dir=\"auto\">Du kan nu bestämma i vilken ordning behandlarna visas när klienter bokar online.</p>\n<p dir=\"auto\">Under bokningsinställningar väljer du mellan tillagd ordning, alfabetisk, slumpmässig eller högst PVA överst. En liten förändring som gör att bokningssidan känns precis rätt för din verksamhet.</p>"},"es":{"title":"Elige el orden de los profesionales","body_html":"<p dir=\"auto\">Ahora puedes decidir en qué orden aparecen los profesionales cuando los clientes reservan en línea.</p>\n<p dir=\"auto\">En los ajustes de reservas, elige entre orden de incorporación, alfabético, aleatorio o mayor PVA primero. Un pequeño ajuste para que tu página de reservas se sienta hecha a medida.</p>"},"no":{"title":"Velg rekkefølge på behandlerlisten","body_html":"<p dir=\"auto\">Du kan nå bestemme rekkefølgen behandlerne vises i når klienter booker på nett.</p>\n<p dir=\"auto\">Under bookinginnstillinger kan du velge mellom rekkefølgen de ble lagt til, alfabetisk, tilfeldig eller høyest PVA øverst. En liten endring som gjør bookingsiden akkurat slik du vil ha den.</p>"},"dk":{"title":"Vælg rækkefølge på behandlerlisten","body_html":"<p dir=\"auto\">Du kan nu bestemme rækkefølgen, som behandlerne vises i, når klienter booker online.</p>\n<p dir=\"auto\">Under bookingindstillinger kan du vælge mellem tilføjet rækkefølge, alfabetisk, tilfældig eller højeste PVA øverst. En lille ændring, der får bookingsiden til at passe præcis til din klinik.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9751","title":"Send file attachments via API","state":"closed","number":9751,"created_at":"2026-06-23T11:55:07Z","repo_name":"Kaddio Application","merged_at":"2026-08-13T12:19:27Z","body":null,"body_html":"<p dir=\"auto\">Chat messages sent through the Kaddio API can now include a file attachment.</p>\n<p dir=\"auto\">This makes it easier for integrations and external systems to share documents directly into a conversation, alongside the message text. Useful for partners and developers building on top of Kaddio.</p>","translations":{"en":{"title":"Send file attachments via API","body_html":"<p dir=\"auto\">Chat messages sent through the Kaddio API can now include a file attachment.</p>\n<p dir=\"auto\">This makes it easier for integrations and external systems to share documents directly into a conversation, alongside the message text. Useful for partners and developers building on top of Kaddio.</p>"},"sv":{"title":"Skicka filbilagor via API","body_html":"<p dir=\"auto\">Chattmeddelanden som skickas via Kaddios API kan nu innehålla en filbilaga.</p>\n<p dir=\"auto\">Det gör det enklare för integrationer och externa system att dela dokument direkt i en konversation, tillsammans med meddelandetexten. Användbart för partners och utvecklare som bygger vidare på Kaddio.</p>"},"es":{"title":"Enviar archivos adjuntos por API","body_html":"<p dir=\"auto\">Los mensajes de chat enviados a través de la API de Kaddio ahora pueden incluir un archivo adjunto.</p>\n<p dir=\"auto\">Esto facilita que las integraciones y sistemas externos compartan documentos directamente en una conversación, junto con el texto del mensaje. Útil para socios y desarrolladores que construyen sobre Kaddio.</p>"},"no":{"title":"Send filvedlegg via API","body_html":"<p dir=\"auto\">Chatmeldinger som sendes via Kaddios API kan nå inkludere et filvedlegg.</p>\n<p dir=\"auto\">Det gjør det enklere for integrasjoner og eksterne systemer å dele dokumenter direkte i en samtale, sammen med meldingsteksten. Nyttig for partnere og utviklere som bygger videre på Kaddio.</p>"},"dk":{"title":"Send filvedhæftninger via API","body_html":"<p dir=\"auto\">Chatbeskeder sendt via Kaddios API kan nu indeholde en filvedhæftning.</p>\n<p dir=\"auto\">Det gør det nemmere for integrationer og eksterne systemer at dele dokumenter direkte i en samtale, sammen med beskedteksten. Nyttigt for partnere og udviklere, der bygger videre på Kaddio.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9891","title":"Form answers available in the API","state":"closed","number":9891,"created_at":"2026-08-05T07:46:38Z","repo_name":"Kaddio Application","merged_at":"2026-08-13T12:02:11Z","body":null,"body_html":"<p dir=\"auto\">Form answers are now accessible through the Kaddio API, making it easier to connect forms with other systems and workflows.</p>\n<p dir=\"auto\">Developers and partners can now read form answers, update responses, and mark them as completed through the API. This opens up new possibilities for integrating patient-reported data with external tools, custom dashboards, and automated flows. No action is needed to benefit from the change.</p>","translations":{"en":{"title":"Form answers available in the API","body_html":"<p dir=\"auto\">Form answers are now accessible through the Kaddio API, making it easier to connect forms with other systems and workflows.</p>\n<p dir=\"auto\">Developers and partners can now read form answers, update responses, and mark them as completed through the API. This opens up new possibilities for integrating patient-reported data with external tools, custom dashboards, and automated flows. No action is needed to benefit from the change.</p>"},"sv":{"title":"Formulärsvar via API","body_html":"<p dir=\"auto\">Formulärsvar går nu att hantera via Kaddios API, vilket gör det enklare att koppla ihop formulär med andra system och arbetsflöden.</p>\n<p dir=\"auto\">Utvecklare och partners kan läsa formulärsvar, uppdatera svar och markera dem som färdiga direkt via API:et. Det öppnar upp för nya möjligheter att integrera patientrapporterad data med externa verktyg, egna översikter och automatiserade flöden.</p>"},"es":{"title":"Respuestas de formularios en la API","body_html":"<p dir=\"auto\">Las respuestas de formularios ya están disponibles a través de la API de Kaddio, facilitando la conexión con otros sistemas y flujos de trabajo.</p>\n<p dir=\"auto\">Desarrolladores y socios pueden leer respuestas, actualizarlas y marcarlas como completadas desde la API. Esto abre nuevas posibilidades para integrar datos de pacientes con herramientas externas, paneles personalizados y flujos automatizados.</p>"},"no":{"title":"Skjemasvar via API","body_html":"<p dir=\"auto\">Skjemasvar er nå tilgjengelige via Kaddios API, noe som gjør det enklere å koble skjemaer sammen med andre systemer og arbeidsflyter.</p>\n<p dir=\"auto\">Utviklere og partnere kan lese skjemasvar, oppdatere svar og markere dem som fullførte direkte via API-et. Det åpner for nye muligheter til å integrere pasientrapporterte data med eksterne verktøy, egne oversikter og automatiserte flyter.</p>"},"dk":{"title":"Formularsvar via API","body_html":"<p dir=\"auto\">Formularsvar er nu tilgængelige via Kaddios API, hvilket gør det nemmere at forbinde formularer med andre systemer og arbejdsgange.</p>\n<p dir=\"auto\">Udviklere og partnere kan læse formularsvar, opdatere svar og markere dem som færdige direkte via API'et. Det åbner nye muligheder for at integrere patientrapporterede data med eksterne værktøjer, egne oversigter og automatiserede flows.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9754","title":"Online status in the API","state":"closed","number":9754,"created_at":"2026-06-23T12:06:02Z","repo_name":"Kaddio Application","merged_at":"2026-08-13T09:00:38Z","body":null,"body_html":"<p dir=\"auto\">Developers can now see whether a practitioner is online through the Kaddio API.</p>\n<p dir=\"auto\">This small addition to our GraphQL API makes it easier to build integrations that reflect real-time availability, such as staff dashboards or custom booking flows. No action needed for existing users.</p>","translations":{"en":{"title":"Online status in the API","body_html":"<p dir=\"auto\">Developers can now see whether a practitioner is online through the Kaddio API.</p>\n<p dir=\"auto\">This small addition to our GraphQL API makes it easier to build integrations that reflect real-time availability, such as staff dashboards or custom booking flows. No action needed for existing users.</p>"},"sv":{"title":"Onlinestatus i API:et","body_html":"<p dir=\"auto\">Utvecklare kan nu se om en behandlare är online via Kaddios API.</p>\n<p dir=\"auto\">Det här lilla tillägget i vårt GraphQL-API gör det enklare att bygga integrationer som speglar tillgänglighet i realtid, till exempel personaltavlor eller egna bokningsflöden. Ingen åtgärd krävs för befintliga användare.</p>"},"es":{"title":"Estado en línea en la API","body_html":"<p dir=\"auto\">Los desarrolladores ya pueden ver si un profesional está en línea a través de la API de Kaddio.</p>\n<p dir=\"auto\">Esta pequeña incorporación a nuestra API de GraphQL facilita crear integraciones que reflejen la disponibilidad en tiempo real, como paneles de personal o flujos de reserva personalizados. No se requiere ninguna acción.</p>"},"no":{"title":"Onlinestatus i API-et","body_html":"<p dir=\"auto\">Utviklere kan nå se om en behandler er tilkoblet via Kaddios API.</p>\n<p dir=\"auto\">Dette lille tillegget i vårt GraphQL-API gjør det enklere å bygge integrasjoner som viser tilgjengelighet i sanntid, som personaltavler eller egne bookingløsninger. Ingen handling kreves for eksisterende brukere.</p>"},"dk":{"title":"Onlinestatus i API'et","body_html":"<p dir=\"auto\">Udviklere kan nu se, om en behandler er online via Kaddios API.</p>\n<p dir=\"auto\">Denne lille tilføjelse til vores GraphQL-API gør det nemmere at bygge integrationer, der afspejler tilgængelighed i realtid, som personaleoversigter eller egne bookingflows. Ingen handling er nødvendig for eksisterende brugere.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9730","title":"Improved message handling for integrations","state":"closed","number":9730,"created_at":"2026-06-21T08:30:34Z","repo_name":"Kaddio Application","merged_at":"2026-08-13T08:33:11Z","body":null,"body_html":"<p dir=\"auto\">Messages sent through the Kaddio API now return a unique identifier, making it easier to build reliable integrations with the Chat.</p>\n<p dir=\"auto\">This update helps partners and developers track individual messages after sending them, opening the door for smoother workflows and better third-party tools connected to Kaddio.</p>","translations":{"en":{"title":"Improved message handling for integrations","body_html":"<p dir=\"auto\">Messages sent through the Kaddio API now return a unique identifier, making it easier to build reliable integrations with the Chat.</p>\n<p dir=\"auto\">This update helps partners and developers track individual messages after sending them, opening the door for smoother workflows and better third-party tools connected to Kaddio.</p>"},"sv":{"title":"Förbättrad meddelandehantering för integrationer","body_html":"<p dir=\"auto\">Meddelanden som skickas via Kaddios API returnerar nu ett unikt id, vilket gör det enklare att bygga pålitliga integrationer mot chatten.</p>\n<p dir=\"auto\">Uppdateringen hjälper partners och utvecklare att spåra enskilda meddelanden efter att de skickats, och möjliggör smidigare arbetsflöden och bättre verktyg kopplade till Kaddio.</p>"},"es":{"title":"Mejor gestión de mensajes en integraciones","body_html":"<p dir=\"auto\">Los mensajes enviados a través de la API de Kaddio ahora devuelven un identificador único, facilitando integraciones más fiables con el chat.</p>\n<p dir=\"auto\">Esta mejora permite a socios y desarrolladores hacer seguimiento de los mensajes enviados, abriendo la puerta a flujos de trabajo más ágiles y a mejores herramientas conectadas con Kaddio.</p>"},"no":{"title":"Bedre meldingshåndtering for integrasjoner","body_html":"<p dir=\"auto\">Meldinger sendt via Kaddios API returnerer nå en unik ID, noe som gjør det enklere å bygge pålitelige integrasjoner mot chatten.</p>\n<p dir=\"auto\">Oppdateringen hjelper partnere og utviklere med å spore enkeltmeldinger etter at de er sendt, og legger til rette for smidigere arbeidsflyter og bedre verktøy koblet til Kaddio.</p>"},"dk":{"title":"Bedre beskedhåndtering for integrationer","body_html":"<p dir=\"auto\">Beskeder sendt via Kaddios API returnerer nu et unikt id, hvilket gør det lettere at bygge pålidelige integrationer med chatten.</p>\n<p dir=\"auto\">Opdateringen hjælper partnere og udviklere med at spore enkelte beskeder efter afsendelse og åbner op for smidigere arbejdsgange og bedre værktøjer forbundet til Kaddio.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9915","title":"Reschedule bookings from the calendar","state":"closed","number":9915,"created_at":"2026-08-10T11:32:24Z","repo_name":"Kaddio Application","merged_at":"2026-08-13T07:53:15Z","body":"## Summary\n- Add **Omboka** in the host calendar event-editor Mer dropdown to enter a RESCHEDULE operations mode\n- Preselect Lediga tider (`bookingTypeFilter`) and host `attendeeFilter`, then let hosts pick a free time similar to ClientCal\n- Extend `bookFromHostCal` with `rescheduleFromBookingId` to create the new booking, unbook the old one, and transfer notes/payment/reschedule linkage\n\n## Test plan\n- [x] Open a booking in host calendar → Mer → Omboka\n- [x] Confirm top-field shows “Bokar om” with booking details and filters for free times/host\n- [x] Click a free time → create editor shows Ombokning with client prefilled\n- [x] Confirm Omboka → old booking becomes unbooked/ombokad, new booking opens with rescheduledFrom\n- [x] Cancel reschedule mode from top-field without booking and verify filters clear\n- [x] Regression: create a normal booking from free time without reschedule mode still works\n\n\nMade with [Cursor](https://cursor.com)","body_html":"<p dir=\"auto\">Rescheduling an appointment is now a few clicks away, directly from the host calendar.</p>\n<p dir=\"auto\">In the Booking module, open a booking, choose Reschedule from the More menu, and pick a new free time. The client, booking type, notes and payment carry over automatically, and the original slot is marked as rescheduled.</p>\n<p dir=\"auto\">No setup needed — it is available to all practitioners with calendar access.</p>","translations":{"en":{"title":"Reschedule bookings from the calendar","body_html":"<p dir=\"auto\">Rescheduling an appointment is now a few clicks away, directly from the host calendar.</p>\n<p dir=\"auto\">In the Booking module, open a booking, choose Reschedule from the More menu, and pick a new free time. The client, booking type, notes and payment carry over automatically, and the original slot is marked as rescheduled.</p>\n<p dir=\"auto\">No setup needed — it is available to all practitioners with calendar access.</p>"},"sv":{"title":"Omboka direkt från kalendern","body_html":"<p dir=\"auto\">Att flytta ett besök går nu snabbt, direkt från behandlarens kalender.</p>\n<p dir=\"auto\">I Bokning öppnar du en bokning, väljer Omboka under Mer och klickar sedan på en ledig tid. Klient, bokningstyp, anteckningar och betalning följer automatiskt med, och den gamla tiden markeras som ombokad.</p>\n<p dir=\"auto\">Ingen inställning krävs — funktionen är tillgänglig för alla behandlare med tillgång till kalendern.</p>"},"es":{"title":"Reprogramar citas desde el calendario","body_html":"<p dir=\"auto\">Cambiar la hora de una cita ahora se hace en pocos clics, directamente desde el calendario del profesional.</p>\n<p dir=\"auto\">En el módulo de Reservas, abre una cita, elige Reprogramar en el menú Más y selecciona un nuevo horario libre. El cliente, el tipo de cita, las notas y el pago se transfieren automáticamente, y el horario original queda marcado como reprogramado.</p>\n<p dir=\"auto\">No requiere configuración — está disponible para todos los profesionales con acceso al calendario.</p>"},"no":{"title":"Ombook direkte fra kalenderen","body_html":"<p dir=\"auto\">Å flytte en time går nå raskt, rett fra behandlerens kalender.</p>\n<p dir=\"auto\">I Booking åpner du en time, velger Ombook under Mer, og klikker deretter på en ledig tid. Klient, timetype, notater og betaling følger automatisk med, og den opprinnelige tiden markeres som ombooket.</p>\n<p dir=\"auto\">Ingen oppsett kreves — funksjonen er tilgjengelig for alle behandlere med kalendertilgang.</p>"},"dk":{"title":"Ombook direkte fra kalenderen","body_html":"<p dir=\"auto\">At flytte en aftale går nu hurtigt, direkte fra behandlerens kalender.</p>\n<p dir=\"auto\">I Booking åbner du en aftale, vælger Ombook under Mere og klikker derefter på en ledig tid. Klient, aftaletype, noter og betaling følger automatisk med, og den oprindelige tid markeres som ombooket.</p>\n<p dir=\"auto\">Ingen opsætning kræves — funktionen er tilgængelig for alle behandlere med adgang til kalenderen.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9911","title":"Booking custom fields in reports","state":"closed","number":9911,"created_at":"2026-08-10T07:48:22Z","repo_name":"Kaddio Application","merged_at":"2026-08-11T08:29:40Z","body":null,"body_html":"<p dir=\"auto\">Custom fields on bookings now appear in the bookings report, giving a fuller picture of each appointment.</p>\n<p dir=\"auto\">In the Reports module, any custom field tied to a booking is included as its own column when you export or view the bookings report. This makes it easier to follow up on the details that matter to your clinic, without leaving Kaddio.</p>","translations":{"en":{"title":"Booking custom fields in reports","body_html":"<p dir=\"auto\">Custom fields on bookings now appear in the bookings report, giving a fuller picture of each appointment.</p>\n<p dir=\"auto\">In the Reports module, any custom field tied to a booking is included as its own column when you export or view the bookings report. This makes it easier to follow up on the details that matter to your clinic, without leaving Kaddio.</p>"},"sv":{"title":"Anpassade fält i bokningsrapport","body_html":"<p dir=\"auto\">Anpassade fält på bokningar visas nu i bokningsrapporten och ger en tydligare bild av varje besök.</p>\n<p dir=\"auto\">I rapportmodulen inkluderas varje eget fält kopplat till bokningar som en egen kolumn när du tar fram eller exporterar bokningsrapporten. Det gör det enklare att följa upp de detaljer som är viktiga för just din verksamhet.</p>"},"es":{"title":"Campos personalizados en informes","body_html":"<p dir=\"auto\">Los campos personalizados de las reservas ahora aparecen en el informe de reservas, ofreciendo una visión más completa de cada cita.</p>\n<p dir=\"auto\">En el módulo de Informes, cada campo personalizado vinculado a una reserva se incluye como una columna propia al ver o exportar el informe. Así es más fácil hacer seguimiento de los detalles importantes para tu clínica.</p>"},"no":{"title":"Egne felt i bookingrapport","body_html":"<p dir=\"auto\">Egne felt på bookinger vises nå i bookingrapporten og gir et tydeligere bilde av hver time.</p>\n<p dir=\"auto\">I rapportmodulen inkluderes hvert eget felt knyttet til en booking som en egen kolonne når du henter eller eksporterer bookingrapporten. Det gjør det enklere å følge opp detaljene som er viktige for klinikken din.</p>"},"dk":{"title":"Egne felter i bookingrapport","body_html":"<p dir=\"auto\">Egne felter på bookinger vises nu i bookingrapporten og giver et klarere billede af hver aftale.</p>\n<p dir=\"auto\">I rapportmodulet medtages hvert eget felt tilknyttet en booking som sin egen kolonne, når du henter eller eksporterer bookingrapporten. Det gør det nemmere at følge op på de detaljer, der er vigtige for din klinik.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9620","title":"Smart client mailings based on your selection criteria","state":"closed","number":9620,"created_at":"2026-06-02T09:43:27Z","repo_name":"Kaddio Application","merged_at":"2026-06-07T10:19:04Z","body":null,"body_html":"<p dir=\"auto\">Send emails to inactive clients who haven't booked a new appointment, inform all clients who have booked a specific service, or why not send birthday greetings to your clients. Mailings are sent via email and can be done manually or fully automated. Read more at <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>","translations":{"en":{"title":"Smart client mailings based on your selection criteria","body_html":"<p dir=\"auto\">Send emails to inactive clients who haven't booked a new appointment, inform all clients who have booked a specific service, or why not send birthday greetings to your clients. Mailings are sent via email and can be done manually or fully automated. Read more at <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>"},"sv":{"title":"Smarta utskick till klienterna utifrån dina urvalskriterier","body_html":"<p dir=\"auto\">Du kan skicka mail till inaktiva klienter som inte bokat någon ny tid, eller informera alla klienter som bokat en viss tjänst eller varför inte gratulera klienter på födelsedagen. Utskicken görs via epost och kan göras manuellt eller lösas helt automatiskt. Läs mer på <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>"},"es":{"title":"Envíos inteligentes a tus clientes según tus criterios de selección","body_html":"<p dir=\"auto\">Puedes enviar correos a clientes inactivos que no han reservado una nueva cita, informar a todos los clientes que han reservado un servicio determinado o, por qué no, felicitar a tus clientes en su cumpleaños. Los envíos se realizan por correo electrónico y pueden hacerse manualmente o de forma totalmente automática. Más información en <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>"},"no":{"title":"Smarte utsendelser til klientene basert på dine utvalgskriterier","body_html":"<p dir=\"auto\">Du kan sende e-post til inaktive klienter som ikke har booket ny time, informere alle klienter som har booket en bestemt tjeneste, eller hvorfor ikke gratulere klientene med bursdagen. Utsendelsene gjøres via e-post og kan gjøres manuelt eller helt automatisk. Les mer på <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>"},"dk":{"title":"Smarte udsendelser til dine klienter baseret på dine udvælgelseskriterier","body_html":"<p dir=\"auto\">Du kan sende mails til inaktive klienter, der ikke har booket en ny tid, informere alle klienter, der har booket en bestemt ydelse, eller hvorfor ikke lykønske klienterne på fødselsdagen. Udsendelserne sker via e-mail og kan foretages manuelt eller helt automatisk. Læs mere på <a href=\"https://help.kaddio.com/sv/articles/727407-smarta-utskick\" rel=\"nofollow\">https://help.kaddio.com/sv/articles/727407-smarta-utskick</a></p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/kaddio/pulls/9625","title":"Treatment outcome report compares forms over time","state":"closed","number":9625,"created_at":"2026-06-03T08:05:57Z","repo_name":"Kaddio Application","merged_at":"2026-06-05T09:38:27Z","body":null,"body_html":"<p dir=\"auto\">Compare the results of a specific form completed by patients over time, per practitioner or across the entire organisation. The results are presented in a chart and a table. A corresponding comparison view is also available per patient on each patient's overview.</p>","translations":{"en":{"title":"Treatment outcome report compares forms over time","body_html":"<p dir=\"auto\">Compare the results of a specific form completed by patients over time, per practitioner or across the entire organisation. The results are presented in a chart and a table. A corresponding comparison view is also available per patient on each patient's overview.</p>"},"sv":{"title":"Rapport för behandlingsresultat jämför formulär över tid","body_html":"<p dir=\"auto\">Jämför resultatet för ett visst formulär som patienter fyllt i över tid, per behandlare eller utifrån hela organisationen. Resultatet presenteras i ett diagram och en tabell. Motsvarande presentation av jämförelse finns även per patient på respektive patientens översikt.</p>"},"es":{"title":"Informe de resultados de tratamiento: compara formularios a lo largo del tiempo","body_html":"<p dir=\"auto\">Compara los resultados de un formulario concreto que los pacientes han rellenado a lo largo del tiempo, por profesional o para toda la organización. Los resultados se presentan en un gráfico y en una tabla. También encontrarás la correspondiente comparación por paciente en la vista general de cada uno.</p>"},"no":{"title":"Rapport for behandlingsresultat sammenligner skjemaer over tid","body_html":"<p dir=\"auto\">Sammenlign resultatet for et bestemt skjema som pasienter har fylt ut over tid, per behandler eller for hele organisasjonen. Resultatet vises i et diagram og en tabell. Tilsvarende sammenligning finnes også per pasient i den enkelte pasientens oversikt.</p>"},"dk":{"title":"Rapport for behandlingsresultat sammenligner formularer over tid","body_html":"<p dir=\"auto\">Sammenlign resultatet for en bestemt formular, som patienterne har udfyldt over tid, pr. behandler eller for hele organisationen. Resultatet vises i et diagram og en tabel. En tilsvarende sammenligning findes også pr. patient på den enkelte patients oversigt.</p>"}},"labels":[]},{"url":"https://api.github.com/repos/kaddio/platform/pulls/137","title":"Blog","state":"closed","number":137,"created_at":"2025-04-22T13:08:02Z","repo_name":"Platform","merged_at":"2025-04-23T18:40:28Z","body":"Introducing a new blog on kaddio.com","body_html":"<p dir=\"auto\">Introducing a new blog on kaddio.com</p>","translations":{},"labels":[]}]}