Face ID är knutet till adressen appen öppnas på — en telefon som satts på för den gamla vercel.app-adressen fungerar där, och sätts på igen för texsolv.app första gången man loggar in där. Båda adresserna fungerar var för sig under flytten; APP_URL påverkar inte längre passkeys.
Öppnas appen på en annan adress än hemadressen (APP_URL = https://texsolv.app) visar inloggningssidan en flyttskylt: öppna texsolv.app i Safari, lägg till på hemskärmen, ta bort den gamla ikonen.
Databasen får sova: skrivaragenten frågar glesare utanför arbetstid2.32.1
2026-09-16
Skrivaragenten frågade efter papper var fjärde sekund dygnet runt, så databasen (Neon) sov aldrig och månadens fria 100 timmar tog slut den sextonde. Nu säger servern hur bråttom det är: var femte sekund mån–fre 06:30–18:30 (svensk tid), annars var tionde minut. Ett papper utanför arbetstid väntar som mest tio minuter. Tiderna går att ändra med inställningen skrivare_tider (start, slut, dagar, snabb, langsam).
Kräver att skrivaragenten byggs om på skrivardatorn: kör Installera.cmd i mappen skrivaragent igen. Tills dess frågar den som förut.
Inställningar omgjorda: grupper med färg, Mitt konto, Administration2.32.0
2026-09-16
Inställningar är sorterade om i grupper med egen färg och ikon: Mitt konto, Hemsida och sociala medier, Lager och artiklar, Frakt, Notiser och larm, Utskrift, Översikter, Administration, Appen. Varje rad har en ikon i gruppens färg. Sidhuvudet säger vem som är inloggad; Logga ut ligger under Appen.
Mitt konto: namn och e-post (byts av en själv), Face ID-enheterna, koden, Håll skärmen tänd, Mina notiser och mina senaste inloggningar — på en sida. Namnbytet slår igenom direkt, även i commit-texterna för hemsidan.
Administration syns bara för konton med den nya rollen admin (sätts under Personal, som Hemsidor): kopplingar, Personal, Kategorier, Säkerhetskopia, Utrymme och gallring, Inloggningshändelser, Serverns svarstid. Så länge ingen har rollen ser alla gruppen, så att den går att dela ut. Sidorna kräver adminlösenordet som förut.
Hemsidor: commits appen gör har nu alltid kontots adress hos GitHub (Texsolvshop@gmail.com) som e-post på både författare och committer, och användarens namn i appen som namn. Adressen byggd på namnet pekade på en främmande GitHub-användare. Byts med GITHUB_COMMIT_EPOST på Vercel.
Face ID på riktigt: appen frågar, ett tryck loggar in2.31.0
2026-09-16
Efter en inloggning med kod frågar appen «Logga in med Face ID nästa gång?» — ett tryck på Sätt på, telefonens eget lås, klart. Frågas bara på enheter som kan (Face ID, Touch ID, Windows Hello, fingeravtryck), som inte redan är påsatta, och «Inte nu» håller i fjorton dagar.
På en påsatt telefon är Face ID-knappen stor och först på inloggningssidan; namnen och koden ligger bakom «Använd kod i stället». Face ID direkt räcker som båda stegen för konton med tvåsteg — ingen mejlkod.
Går Face ID inte igenom säger appen vad man gör: logga in med kod, så frågar den efteråt. (Telefonen skiljer inte på «avbrutet» och «ingen finns», så det var det gamla meddelandet som förvirrade.)
Inställningar → Inloggning och säkerhet heter nu Face ID och andra lås: knappen «Sätt på Face ID på den här enheten», och enheterna listas med namn.
Pilen på Inställningar går alltid till appen2.30.6
2026-09-15
Pilen uppe till vänster på Inställningar gick bakåt i historien, så efter hemsideredigeraren ledde den tillbaka in i redigeraren igen. Nu går den alltid till Artiklar — Inställningar är ett nav, och pilen betyder upp.
Hemsidor: tillbaka-pilen i redigeraren svarar alltid2.30.5
2026-09-15
Tillbaka-pilen tonar ned redigeraren i samma stund man trycker, så man ser att något händer medan Inställningar hämtas. Har sidbytet inte hänt inom 2,5 sekunder laddas Inställningar rakt av i stället. På iPhone äter det öppna tangentbordet annars det första trycket när man skrivit i sidan — nu räknas trycket ändå.
Navigeringsraden under Inställningar låg sju pixlar snett på datorn2.30.4
2026-09-15
Svepramen runt Inställningar var 40 pixlar högre än fönstret, så fönstret fick en rullningslist. Sidan i ramen centrerades i det som blev kvar, medan menyn längst ner (som är fast placerad) centrerades i hela fönstret — därav förskjutningen. Nu är ramen lika hög som sidan, ingen rullningslist, samma mitt.
Hemsidor: helskärm även på datorn, Till main borta före lanseringen2.30.3
2026-09-15
På datorn fyller Redigera hela fönstret, inte sidans ram; navigeringsraden längst ner likaså. Rullgardinen för sida är högst 320 px bred.
Knappen Till main är borta så länge sajten inte är lanserad: main går då ändå bara till testadressen, så den gjorde ingen skillnad. Remsan säger i stället «N ändringar på test som följer med vid lanseringen». Lansera flyttar först main fram till staging (allt som är sparat på test), sätter sedan LIVE och kör bygget — frågan säger hur många ändringar som följer med. Efter lanseringen heter knappen Gå live och finns i remsan och som gul rad i Redigera.
Hemsidor: redigeraren alltid i helskärm, flikarna längst ner2.30.2
2026-09-15
Redigera fyller alltid hela skärmen: en rad överst med tillbaka-pil, sida och Redigera/Navigera, sedan förhandsvisningen ned till navigeringsraden. Helskärmsknappen är borta — den behövs inte längre.
Redigera, Bilder, Historik, Status och Lansering ligger som en navigeringsrad längst ner med ikoner, som i resten av appen. Remsan med läget (väntar på att gå live, test, main) visas på de andra flikarna; i Redigera visas i stället en gul rad «N ändringar väntar på main · Till main» när det finns något att flytta och inget är osparat.
Rullgardinen för sida är smalare och hög nog för att texten ska synas.
Hemsidor: ny layout i redigeraren2.30.1
2026-09-15
Redigera: förhandsvisningen tar resten av skärmen och verktygen är en rad — sida, Redigera/Navigera och en knapp för helskärm (⛶; Esc eller samma knapp tar tillbaka). Navigeringsraden längst ner är borta på hemsidesidan, och flikraden Redigera/Bilder/Historik/Status/Lansering ligger kvar högst upp utan att följa med när man rullar.
Text- och bildrutan öppnas som ett ark nederst ovanpå förhandsvisningen i stället för att trycka ner den. Rutan Text går alltid att skriva i, även när stycket har länkar eller fetstil — ändringen skrivs in i rätt textbit så att länken behålls (byter man ut hela stycket på en gång försvinner de; rutan säger till). Textrutan får markören direkt.
Raden «N osparade ändringar · Ångra · Spara» syns bara när något är osparat. En kort ledtråd i förhandsvisningen när läget byts: «Tryck på en text eller bild för att ändra den» / «Tryck på länkar för att gå mellan sidorna».
Gå live heter Till main så länge repovariabeln LIVE är av, och frågan säger att bara testadressen nås. Remsan visar «main (test) · LIVE av». texsolv.se rörs inte förrän Lansera under fliken Lansering.
Hemsidor: redigera texsolv.se från appen2.30.0
2026-09-15
Ny rubrik HEMSIDOR överst under Inställningar, för konton med rollen hemsidor (sätts under /setup → Personal). Först texsolv.se; nästa sajt är en rad i tabellen hemsidor, ingen kod.
Redigera: sajten visas som den ligger på grenen staging. Klicka på en bild för att byta den (beskärning, rotation, format, skalning till platsens storlek, webp-kopia), klicka på en text för att ändra den. Ändringarna samlas («3 osparade ändringar») tills Spara — en commit till staging i ditt namn: «Joel: bytte bild på Heddles, ändrade text på Contact». GitHub lägger staging på testadressen.
Gå live flyttar main fram till staging (fast-forward; hämtar först in det main fått av recensionsroboten). Remsan överst säger alltid hur många ändringar som väntar och om deployen kör, är grön eller röd.
Alla bilder: varje bild med beskrivning, var den används, och om webp finns. Historik: commits på staging och main med Ångra, som skapar en ny commit som lägger tillbaka filerna — aldrig force-push.
Status var 15:e minut: sajten svarar, certifikatets dagar kvar, indexering (noindex på live är rött), sitemap, recensionernas ålder, senaste deploy, brutna interna länkar (nattlig koll). Notis till rollen hemsidor när något går från grönt till rött.
Säkerhetskopia varje natt: site/ som zip i Dropbox under Hemsidor/, de 14 senaste. Lansering: checklista (FTP, .com-alias, DNS kollas automatiskt, Search Console) och knapparna Lansera / Dra tillbaka som sätter repovariabeln LIVE och startar arbetsflödet på main.
GitHub-nyckeln ligger i GITHUB_TOKEN på servern och når aldrig telefonen. Varje rutt under /api/hemsidor kräver inloggning och rollen.
Byt din kod själv — minst sex siffror2.29.1
2026-09-15
Under Inställningar → Inloggning och säkerhet finns «Byt kod»: nuvarande kod, ny kod två gånger. Nya koder är 6–12 siffror; samma siffra hela vägen eller 123456 nekas. Bytet står i händelseloggen.
Nya konton under /setup får också minst sex siffror. Befintliga fyrsiffriga koder fungerar tills de byts — be var och en byta.
Logga in med Face ID2.29.0
2026-09-15
Ny knapp överst på inloggningen: «Logga in med Face ID / passkey». Ingen kod, inget namn — telefonen visar dina passkeys för appen, du godkänner med Face ID, fingeravtryck eller Windows Hello, och är inne. Passkeyn bär kontot, så appen vet vem det är. Registrera den under Inställningar → Inloggning och säkerhet (på iPhone: appen på hemskärmen).
Face ID direkt räcker även för konton med tvåsteg: en passkey med Face ID är två faktorer i ett (något du har, något du är). Loggar man in med kod i stället gäller tvåsteget som förut. Koden finns kvar som reserv för den som saknar passkey eller byter telefon, och spärren gäller även passkey-försök.
Koder får vara fyra till tolv siffror (förut högst åtta).
Starkare inloggning: spärr, tvåsteg med passkeys, händelselogg2.28.0
2026-09-15
Fem felaktiga koder på samma konto — eller från samma adress, oavsett konto — spärrar i femton minuter. Knappen visar hur länge som är kvar och räknar ned. Varje spärr står i loggen.
Tvåstegsverifiering per konto, för den som får ändra bokföring eller publicera: slås på under /setup → Personal, tillsammans med kontots e-postadress. Efter koden krävs då en passkey — Face ID, fingeravtryck, Windows Hello eller säkerhetsnyckel — eller en sexsiffrig engångskod som mejlas (tio minuter, fem försök). Lagerpersonal med bara plock och utskrift loggar in med kod som förut.
Passkeys registreras av var och en under Inställningar → Inloggning och säkerhet; flera per konto, med namn, och går att ta bort. Den som sköter /setup kan nollställa alla passkeys för ett konto om telefonen är borta — då tar e-postkoden över.
Ny händelselogg: vem loggade in, när, från vilken adress och webbläsare, varje fel kod, spärr, utloggning och tvåstegssteg. Visas på samma sida, med räkning för senaste dygnet och veckan. Sparas i 180 dagar.
Tvåstegs väntkaka kan inte användas som session, och tvåsteg kan inte slås på för ett konto som varken har passkey eller e-post — ingen låses ute.
Next.js 14.2.35 och uppdaterade beroenden2.27.2
2026-09-15
Next.js 14.2.15 → 14.2.35, sista i 14-serien. Det stänger bland annat behörighetsförbigången i middleware (CVE-2025-29927), cache-förgiftningen, SSRF via omdirigeringar och överbelastningarna i Server Components som rapporterats sedan 14.2.15. pg 8.13 → 8.23 och övriga beroenden till senaste patch inom samma huvudversion.
Genomgång av inloggningsskyddet: appen har ingen middleware alls — var och en av de 96 API-hanterarna kontrollerar sessionen själv (currentUser, agentnyckel, adminlösenord, Shopify-HMAC eller cron-hemlighet). Två adminkontroller jämförde lösenordet med vanligt !== och gör det nu tidssäkert (sameSecret) som de andra.
Dependabot slås på för npm och GitHub Actions: patch- och minorversioner som pull requests varje måndag, majorbyten hålls utanför.
Kvar i npm audit efter detta, för att rättningen kräver ett majorbyte: nodemailer 7 (rättat i 8–10; gäller funktioner appen inte använder — listrubriker, jsonTransport, raw, OAuth2) och de Next-brister som bara är rättade i 15.5. Se sammanfattningen i commit-texten.
Hemligheter ur repot, och en koll som stoppar nya2.27.1
2026-09-15
.env.example innehöll ett riktigt adminlösenord, Shopifys API-nyckel och Fortnox klient-id sedan första versionen. Alla värden är utbytta mot platshållare. Nycklarna som legat där ska bytas i Vercel, Shopify och Fortnox — filen har legat hos GitHub.
Ny koll: verktyg/hemlighetskoll.mjs letar efter nycklar, tokens, lösenord och .env-filer i det som ska committas, och stoppar committen. Installeras som pre-commit-krok med «npm run hooks»; samma koll körs hos GitHub vid varje push.
.gitignore utesluter nu alla .env-filer utom mallen, samt certifikat och nyckelfiler.
Vem får vilka notiser2.27.0
2026-09-11
Ny sida under Inställningar → Vem får vilka notiser. En rad per person med en rullgardin: alla notiser, valda eller inga. Vid «valda» fälls slagen ut som knappar — nya ordrar att packa, nya tillverkningsordrar, lågt saldo, tillverkningsbehov, tulluppgifter, fraktproblem, efterforskning, veckobrev, drift, övrigt — med en rad om vad vart och ett betyder. Sparas vid varje tryck.
Personerna kommer av sig själva: alla som får logga in, och alla namn en telefon registrerats på. En ny kollega står där så fort hen loggat in, med «alla» förvalt — ingen tystnar av misstag. Det står hur många telefoner personen har, och när de senast nåddes.
Utskicket följer reglerna: varje notis har ett slag, och går bara till de telefoner vars person valt det. Testnotisen går alltid till alla. En telefon som registrerats utan namn får allt, och sidan säger hur man ger den sitt namn.
Spårning: senaste skanningen räknas, «står stilla» efter 14 dagar, FedEx egna varningar direkt2.26.1
2026-09-10
«Står stilla: ingen ny händelse på 6 dagar» på ett paket som flög mellan Liège och Memphis. Appen räknade från FedEx milstolpar (upphämtad, levererad) — för ett paket på väg är senaste milstolpen upphämtningen, hur många städer det än skannats i sedan dess. Nu hämtas skanningarna, och senaste skanningen är senaste händelsen.
FedEx beräknade leveransdag läses in och visas på raden («beräknas lör 13 sep.»). Ett paket på väg med en leveransdag som inte passerat räknas inte som stilla — bolaget väntar sig fortfarande att komma fram.
«Står stilla» säger till efter 14 dagar i stället för 6. Den som haft kvar den gamla standarden höjs; ett eget val står kvar. Går att ändra under Larm → inställningar.
Säger FedEx själva att något är fel kommer notisen direkt: statusen DELAYED (försenad — väder, drift, adress) och deras egna ord «exception» och «delay» i statusraden räknas som avvikelse, även när koden bakom inte står i appens karta. Texten blir «Försenad (FedEx: weather, snow)» när de inte gett en egen mening.
Utkastet är ordern, «Sätt igång», och avbrutna ordrar går att ta tillbaka2.26.0
2026-09-10
Kortet «Utkast: tillverkningsorder E14» på Tillverkningsbehov och raden «Egen E14» under Tillverkning är samma order — inte två. Det stod ingenstans, så utkastet såg ut som en dubblett som blev kvar, och avbröt man «dubbletten» försvann båda (för det var en). Nu står det på raden i listan («utkast · fylls på från Tillverkningsbehov»), överst på ordern, och i frågan innan man avbryter.
Ny knapp på ordern: «Sätt igång tillverkningen». Förut blev en order påbörjad först när en rad bockades av, så utkastet låg kvar på Tillverkningsbehov tills dess. Sätt igång gör den påbörjad direkt; nästa «Lägg på» därifrån öppnar ett nytt utkast.
Avbrutna tillverkningsordrar går att ta tillbaka: knappen «Ta tillbaka» på raden under Tidigare, och överst på den avbrutna ordern. Raderna finns kvar, så den blir öppen igen — påbörjad om något redan bockats av, annars ny. Var det utkastet blir det utkastet igen. En order som slagits ihop med andra går inte att ta tillbaka; den lever vidare i den sammanslagna.
Webbshopens ordrar syns under Nya även utan Fortnox-förslag2.25.4
2026-09-10
En order i webbshopen som saknade varor syntes inte under Nya, fast servern hade läst den («visas nu: 2»). Orsak: listan «Från Shopify — ännu inte i Fortnox» låg innanför villkoret «finns det Fortnox-förslag?» — var det noll förslag från Fortnox visades sidan «Inga förslag» och webbshopens ordrar hölls undan. Samma sak med varningen om ordrar utan hämtade rader. Nu visas de oavsett.
Siffran på fliken Nya räknar nu både Fortnox-förslagen och webbshopens ordrar.
Hjälptexten säger att bara rader vars artikelnummer finns som lagervara i Fortnox visas.
Tillverkning: räkneraderna borta2.25.3
2026-09-10
Raderna «655 kundordrar lästa» och «Shopify: 36 ordrar lästa de senaste 14 dagarna · …» ovanför Hämta ordrar är borttagna — de sköt bara knapparna nedåt. Ordrar som saknar rader varnas det fortfarande om längre ned på sidan, och medan hämtningen pågår står det vad som händer bredvid knappen.
Rutorna på Tillverkningsbehov står två och två igen2.25.2
2026-09-10
Rutorna Slut, Dags nu, Snart och OK hade hamnat tre i bredd med en ensam under, och texten i dem hade skjutits åt sidan. Orsak: statistiksidan för sociala medier (2.24) döpte sina egna rutor till samma namn i stilmallen, och det senare namnet vann. Sociala mediernas rutor har fått egna namn — Tillverkningsbehov och försäljningsstatistiken ser ut som förut.
Videon i statistiken går att spela2.25.1
2026-09-10
Adresserna Buffer lämnar ut till bild och video är tidsbegränsade. Statistiken sparade inläggen i upp till en timme, och då hade videons adress hunnit gå ut — «Videon går inte att spela här» fast samma inlägg gick på startsidan. Nu sparas bara summeringen per kanal en timme; inläggen hämtas alltid färska.
Går en video ändå inte att spela (sidan har legat öppen länge) hämtar appen inlägget om med nya adresser och försöker en gång till innan den ger upp — på båda sidorna.
Inläggen som kort2.25.0
2026-09-10
Listorna på Sociala medier och i statistiken är omgjorda: varje inlägg är ett eget kort med bilden stor överst (video med spelknapp, «3 bilder» på karuseller), plattformens ikon och statusen på bilden, kanal och tid, texten, och knapparna under. Listan är delad i I kön (med utkasten), Publicerat och Gick inte.
Tio inlägg visas åt gången; knappen Visa fler inlägg längst ner tar fram tio till. Appen hämtar upp till 60 från Buffer.
Statistiken glömmer gamla kopior2.24.5
2026-09-10
Statistiken sparas en timme på servern, och en kopia gjord före 2.24.1 saknade länken till inlägget — så knappen Visa inlägget fattades i statistiken men fanns på startsidan. Nu märks kopian med version och hämtas om när något nytt tillkommit.
En video som inte går att spela i appen (filen borttagen efter två veckor, eller ett format telefonen inte spelar) visar omslagsbilden och säger varför, med hänvisning till plattformen — i stället för en svart ruta.
Inlägget i stort, och frågetecken som ruta2.24.4
2026-09-10
Tryck på ett inlägg i listan I Buffer eller i statistiken så visas det i stort: bilderna att svepa mellan, eller videon med spelknapp, texten, och knappen «Visa inlägget på Instagram/Facebook/TikTok» som öppnar det på plattformen (där kommentarerna står). I statistiken visas inläggets tal i rutan.
Frågetecknen öppnar nu en ruta över sidan med Stäng-knapp; ett tryck utanför eller Escape stänger också. Förut fälldes texten ut i raden och det vid kanalerna gick inte att stänga.
Alt-text, bildtaggar och frågetecken2.24.3
2026-09-10
Tryck på en bild i remsan under texten så visas den stort med två saker: alt-text (en beskrivning i ord, för skärmläsare och för att Instagram ska förstå bilden) och bildtaggar — tryck i bilden där ett konto syns, skriv kontonamnet, och taggen sitter där; tryck på taggen för att ta bort den. Bildrutan visar «Aa» när alt-text finns och «@2» för två taggar.
Små frågetecken bredvid det som kan behöva en förklaring — inlägg/reel/story, första kommentar, länk, AI-märkning, omslagsbild, alt-text, bildtaggar, När, mallar, dagsgräns, Först i kön och måtten i statistiken. Tryck så fälls en kort förklaring ut.
Plattformarnas egna ikoner2.24.2
2026-09-10
Facebook, Instagram och TikTok visas med sina egna ikoner i stället för bokstavsmärken — på kanalbilderna, i korten, i listan I Buffer och i statistiken. Ikonerna ligger i public/sociala; en kanal utan ikonfil får bokstavsmärket som förut.
Statistiken direkt under kanalerna2.24.1
2026-09-10
Statistik-knappen ligger nu högst upp på Sociala medier, direkt under kanalbilderna, med egen ikon.
På statistiksidan trycker man på en kanal för att se bara dess inlägg med tal per inlägg; tryck igen eller «visa alla» för allt. Perioden är 7 eller 30 dagar (90 borttaget).
Buffer lämnar ut antalet kommentarer men inte själva kommentarerna. Varje publicerat inlägg har därför en länk Öppna inlägget som går till inlägget på Facebook, Instagram eller TikTok, där kommentarerna står — även i listan I Buffer.
Sociala medier: bilder, statistik, kön, mallar och fler kanaler2.24.0
2026-09-10
Bilder: ett inlägg kan ha en till tio bilder (karusell på Facebook och Instagram) i stället för bara video. Bilderna ligger som rutor under texten, med + för att lägga till fler och × för att ta bort. Bilder laddas upp samma väg som video, via appens server.
Omslagsbild för video: dra i reglaget under videon och välj vilken bildruta som blir omslaget — som i Buffer.
Statistik (länk under Lägg in): räckvidd, visningar, reaktioner, kommentarer, delningar och engagemang per kanal för 7, 30 eller 90 dagar, och varje publicerat inlägg med sina tal och en stapel mot periodens största. Buffer räknar en gång om dygnet, och siffrorna sparas en timme i appen. Kräver att Buffer-nyckeln har rättigheten insightsRead — annars säger sidan det.
Kön i Buffer: Ändra text och tid på ett inlägg som väntar, Först i kön, Ta bort. Utkast i Buffer visas och kan ändras. Listan visar en miniatyr av bilden eller videon.
Dagsgräns under varje kanal («12 kvar i dag») — TikTok och Instagram har gränser, och en kanal som nått sin gräns väljs inte av sig själv.
Mallar: knappen Mallar visar Buffers färdiga texter — tryck på en så fylls den i. Texten man skrivit kan sparas som ny mall. Under När finns nu även Utkast, som sparar inlägget i Buffer utan tid.
Fler kanalinställningar, bara på de kanaler som har dem: länkkort på Facebook, LinkedIn och Threads för textinlägg; titel för bildinlägg på TikTok; YouTube (titel, synlighet, gjord för barn, meddela prenumeranter); Pinterest (titel, länk); Threads (ämne); Mastodon (innehållsvarning); Google Business (rubrik). Kopplar ni fler kanaler i Buffer dyker de upp av sig själva.
Lägg in släpper knappen direkt2.23.3
2026-09-10
Efter Lägg in väntade knappen på att listan I Buffer hämtats om innan den släpptes — nu visas svaret per kanal direkt och listan hämtas i bakgrunden.
Varje kanal i svaret visar hur många sekunder Buffer tog på sig, och tiderna skrivs i serverloggen. Då syns det om det är Buffer som är långsam (den hämtar och kontrollerar videon när inlägget skapas) eller något i appen.
Snabbare uppladdning och publicering2.23.2
2026-09-10
Telefonen skickar tre bitar av videon samtidigt i stället för en i taget — det var väntetiden per anrop, inte själva mängden data, som tog tid. Servern tar bitarna i vilken ordning de kommer och skickar dem vidare till lagret i rätt ordning, under lås så att två samtidiga anrop aldrig skickar samma del. En bit som kommer två gånger (omförsök efter tappat svar) räknas en gång.
Lägg in / Publicera nu skickar till Facebook, Instagram och TikTok samtidigt i stället för i tur och ordning — Buffer tar några sekunder per kanal.
Videon skickas oförändrad byte för byte (kontrollsumma i provet). Ser den sämre ut på TikTok än på Facebook och Instagram är det TikToks egen omkodning, som är hårdare än Metas: vertikal 1080×1920, HDR av på iPhone-kameran och högst 60 bilder/s brukar ge bäst resultat.
Nyckeln till filagret följer alltid med2.23.1
2026-09-10
Vercels bibliotek väljer OIDC med BLOB_STORE_ID före nyckeln BLOB_READ_WRITE_TOKEN. Låg ett gammalt (privat) lagers BLOB_STORE_ID kvar på projektet hamnade allt i det gamla lagret hur rätt nyckeln än var — därför stod «lagret är privat» kvar efter nyckelbytet. Nu skickas nyckeln med uttryckligen i varje anrop, så det är alltid nyckelns lager som gäller.
Kopplas lagret med ett annat prefix på Vercel (t.ex. VIDEO_READ_WRITE_TOKEN, för att BLOB redan var upptaget) hittas den nyckeln också. Prova filagret säger vilken nyckel som används.
Videon går via servern2.23.0
2026-09-10
Uppladdningen av videor är ombyggd från grunden. Förut gick videon direkt från telefonen till Vercels lager med Vercels eget bibliotek — och på iPhone gick den till 100 % och började om, om och om igen, utan att något gick att se. Nu går videon i bitar om fyra megabyte till appens egen server, som sätter ihop dem och skriver till lagret — samma väg som Prova filagret går. Varje bit är ett vanligt anrop som svarar med ett riktigt fel om något går snett, och en tappad bit görs om tre gånger innan appen ger upp och säger vilken bit det var.
Servern skickar delarna vidare till lagret allt eftersom (åtta megabyte i taget), så ingen fil behöver rymmas i ett anrop och inget ligger kvar när uppladdningen är klar. Provat lokalt byte för byte med filer på 3, 21 och 120 MB. Påbörjade uppladdningar som aldrig blev klara städas efter ett dygn.
Videouppladdning som fastnade vid 99 %2.22.2
2026-09-10
Uppladdningen av en video kunde gå till 99 % och börja om, om och om igen. Det var Vercels bibliotek som gör om anropet tio gånger med växande paus när lagret svarar fel, utan att säga något. Nu bryter appen efter andra omstarten (eller efter 20 sekunder utan svar), säger varför, och låter servern prova lagret själv: den skriver en liten fil med samma nyckel och svarar exakt vad som är fel — privat lager, nyckel som hör till ett annat lager, eller att lagret fungerar från servern men inte från telefonen.
Ny knapp Prova filagret under listan I Buffer, för att kolla lagret utan att ladda upp en video. Misslyckade uppladdningar skrivs till serverloggen med fil, storlek och telefonens webbläsare.
Publiceringsläget (Automatiskt/Notis) är borta från korten — Buffer lägger alltid ut själv.
Vercel Blobs återanrop efter en uppladdning nekades som «Ej inloggad» (det har ingen inloggningskaka; signaturen kontrolleras i stället). Rättat.
Sociala medier med Buffers upplägg2.22.1
2026-09-09
Sidan Sociala medier ser nu ut som Buffers egen app: kanalbilderna överst (tryck för att välja), texten och videon i en ruta, och sedan ett kort per vald kanal med det just den kanalen kan ställa in. Facebook och Instagram: Inlägg, Reel eller Story. Instagram och TikTok: publiceringsläge Automatiskt eller Notis (Buffer påminner i sin app och man lägger ut själv). Facebook och Instagram: första kommentar. Instagram: länk. Instagram och TikTok: AI-märkning.
En bifogad video gör Facebook- och Instagram-inlägget till reel av sig självt; utan video går bara vanligt inlägg. Knappen säger hur många kanaler inlägget går till.
Rättat efter första skarpa provet: listan I Buffer hämtades med ett statusfilter som Buffer inte känner igen («Value buffer does not exist in PostStatus enum») — nu hämtas den utan filter och Buffers egna statusord tolkas. Instagram och TikTok tar inga inlägg utan video; kortet säger det, och skickar man ändå får kanalen ett svenskt svar i stället för Buffers engelska felmeddelande. Facebook får alltid typen post med. Buffer skriver tjänsten med små bokstäver («facebook») vilket gjorde att märkena blev «fa»/«ti» och korten stod tomma — rättat.
Tydligare text om vad som saknas när filagret för video inte är kopplat: Vercels nya Blob-lager lägger bara in BLOB_STORE_ID, medan uppladdning från telefonen kräver BLOB_READ_WRITE_TOKEN från lagrets egen sida.
Sociala medier via Buffer, och våra hemsidor2.22.0
2026-09-09
Ny knapp överst (den färgglada bredvid uppdatera): Sociala medier. Välj en video från telefonen, skriv texten, kryssa Facebook, Instagram och TikTok, och välj nästa lediga tid i Buffers schema, nu, eller en vald tid. Buffer publicerar. Sidan visar vad som ligger i kön, vad som gått ut och vad som gick fel, med Ta bort på det som väntar. Facebook och Instagram får videon som reel om man inte kryssar ur det.
Videon laddas upp från telefonen rakt till appens filager (Vercel Blob) och tas bort två veckor efter inlägget. Kräver BUFFER_API_KEY och ett Blob-lager på Vercel — sidan säger vad som saknas.
Loggan uppe till vänster leder till Våra hemsidor: Texsolv.se, Texsolvshop.se och Runlock.com, som öppnas i en egen flik.
Artikelbilderna med i säkerhetskopian2.21.1
2026-09-09
Bilderna sparas i en egen fil i Dropbox (lager-bilder-…) som skickas när någon bild ändrats — inte varje natt, för de är stora och byts sällan. Den senaste bildfilen behålls alltid, hur gammal den än är. «Även bilderna» på sidan skickar dem på direkten. Nu är allt med utom nycklarna till Fortnox, Shopify och Dropbox.
Återställningen tar båda filerna: node verktyg/aterstall.mjs lager-….jsonl.gz lager-bilder-….jsonl.gz.
Säkerhetskopia till Dropbox varje natt2.21.0
2026-09-09
Inställningar → Säkerhetskopia: hela databasen — saldon, ordrar, plock, tillverkning, spårningar, inställningar — sparas som en packad fil i er Dropbox (Appar → Texsolv Lager) strax efter midnatt varje natt. Filer äldre än 30 dagar tas bort, den senaste behålls alltid. «Säkerhetskopiera nu» tar en direkt.
Kopplas en gång: skapa en Dropbox-app (sidan säger exakt hur), lägg nyckeln och hemligheten på Vercel, öppna Dropbox-länken och klistra in koden. Appen får bara skriva i sin egen mapp.
Artikelbilderna och nycklarna till Fortnox, Shopify och Dropbox är inte med — bilderna finns i Fortnox arkiv och nycklar hör inte hemma i en delad mapp. Återställning: node verktyg/aterstall.mjs fil.jsonl.gz.
Skärmen hålls tänd medan appen är öppen2.20.3
2026-09-09
Telefonen släcker inte längre skärmen mitt i plocket eller inventeringen. Appen ber om skärmlåset efter första trycket och tar om det när den kommer fram igen; i bakgrunden släpps det, så batteriet går inte åt i onödan. Går att slå av per telefon under Inställningar → Den här telefonen. Kräver iOS 16.4 eller nyare.
Kategoriernas ordning följer inställningen2.20.2
2026-09-09
Chipsraden på Artiklar sorterades efter antal artiklar, så ordningen under Inställningar → Kategorier gjorde ingenting. Nu gäller listan där: det som står i den kommer först i dess ordning (stora och små bokstäver spelar ingen roll), kategorier som inte står med kommer efter i bokstavsordning, och Övrigt alltid sist. Samma ordning i Tillverkningsbehov och inventeringen.
Inaktivera många utan att servern hinner ge upp2.20.1
2026-09-09
280 artiklar på en gång gav «Servern svarade 504»: varje artikel är ett anrop till Fortnox, och alla på en gång tog längre än serverns minut — fast hälften redan var gjord. Sidan skickar nu tjugo i taget och visar «40 av 280 klara…». Stannar det står de som inte hann med kvar i listan, så det är bara att kryssa och köra igen.
Hjärtslag på kopplingarna, och inaktivera artiklar2.20.0
2026-09-09
Inställningar → Hjärtslag: varje morgon efter sex provas Fortnox, Shopify, FedEx, PostNord, Sendify, schemaläggaren, push-notiserna och e-posten med ett litet anrop var. Det som går från fungerar till trasigt ger en push-notis, och när det fungerar igen sägs det en gång. Sidan visar varje sak med grönt, rött eller avstängt och ett ord om varför; «Prova nu» provar direkt.
Inställningar → Inaktivera artiklar: slå av och på artiklar i Fortnox och appen på en gång. Sök vilken artikel som helst, även inaktiva, eller kryssa bland de aktiva lagervaror som inte finns på en enda order — med saldo och lagervärde. Loggen visar vem som gjorde vad, med «Aktivera igen».
På artikelns redigeringspanel finns «Inaktivera artikeln» längst ner, med ett bekräftande tryck.
Ingen inzoomning när man söker2.19.8
2026-09-08
iPhone zoomade in sidan när man ställde sig i sökfältet under Tillverkningsbehov, och zoomen blev kvar så att sidan skars av. Fälten har nu 16 px text, och sidan säger åt Safari att inte zooma vid fokus — det gäller alla sidor i appen. Nypzoom fungerar som förut.
Tillverkningsbehov: en knapp på raden, och färre rutor2.19.7
2026-09-08
Varje rad som behöver något har en knapp: «+ Tillverkningsorder» skapar utkastet och lägger dit artikeln med förslaget som antal; finns utkastet heter den «+ Lägg på E57». Raden står kvar i «Behöver något» och säger «På utkastet E57: 483 st» tills ordern satts igång. «Välj flera» finns kvar för många på en gång.
Flikarna Behöver något / OK / Utan försäljning och kryssrutan Visa ignorerade är borta. I stället en rullgardin — Behöver något, Slut, Dags nu, Snart, OK, Utan försäljning, Alla, Ignorerade — bredvid kategorin. Rutorna överst och rullgardinen är samma val.
Bild på artikeln i Tillverkningsbehov2.19.6
2026-09-08
Varje rad under Tillverkningsbehov har artikelns bild, som på sidan Artiklar: egen bild först, annars butikens.
Varningen på raden borttagen2.19.5
2026-09-08
Raden i Tillverkningsbehov varnar inte längre när en order dominerar försäljningen. Ordrarna och «Räkna inte» finns kvar under artikeln.
Tillverkningsbehov: ordrarna bakom takten, och rader som inte ska räknas2.19.4
2026-09-08
Öppna en artikel och tryck «Visa ordrarna»: varje order artikeln ingår i, senaste först, med datum, kund och antal. Ordernumret leder till ordern.
Ser en rad fel ut — 159000 såldes en gång i meter fast enheten är antal — tryck «Räkna inte». Raden räknas då inte i takten; ordern rörs inte, och det står vem som gjorde det. «Räkna med» tar tillbaka.
Står en enda order för minst hälften av det sålda (och det finns minst tre ordrar) varnar raden: «En order står för 97 % av försäljningen — öppna och kolla».
Tillverkningsbehov: klickbara rutor, välj flera, utkast till tillverkningsorder2.19.3
2026-09-08
Sidan heter nu Tillverkningsbehov, och kortet under Tillverkning är större och visar hur många artiklar som behöver något.
De fyra rutorna överst går att klicka på: Slut, Dags nu, Snart eller OK sållar listan. Klicka igen för att släppa.
«Välj flera» ger en kryssruta på varje rad. De valda kan ignoreras på en gång, eller läggas i ett utkast till tillverkningsorder med förslaget som antal. Utkastet är en vanlig egen tillverkningsorder som ligger kvar som ny tills den sätts igång — går man tillbaka och lägger till fler hamnar de i samma utkast, och ligger artikeln redan där höjs antalet om förslaget vuxit. Det som ligger i utkastet räknas som på väg, så raden slutar vara röd.
Ett år av Fortnox-historik till takten2.19.2
2026-09-08
Takten räknades på ordrarna i appens databas, som börjar den dag appen sattes upp. Under Beställningsarbetet finns nu «Läs in 12 månader bakåt»: äldre ordrar hämtas ur Fortnox, raderna kommer i den vanliga avläsningen (några timmar), och fönstret går att sätta till 365 dagar. Bara ordrar som har sina rader räknas, så takten sjunker inte medan inläsningen pågår.
«Tillverka nu», inte «Beställ nu»2.19.1
2026-09-08
Ni tillverkar det mesta själva. Läget heter nu Tillverka nu, och förslaget säger «tillverka 480 st». Det som köps in markeras per kategori (kryssrutan Köps in under Beställningsarbetet) eller per artikel — då står det Beställ nu och «beställ … st» i stället.
Att fylla på — beställningsarbetet2.19.0
2026-09-08
Ny sida under Tillverkning: «Att fylla på». Varje lagerartikel får en takt ur ordrarna i Fortnox (butik och webbshop), och mot saldot och det som redan är i tillverkning räknas hur många dagar den räcker. Det som tar slut först ligger överst, med läge (Slut · Beställ nu · Snart · OK), räckvidd i dagar, en stapel mot gränsen och ett förslag på hur mycket som ska tillverkas eller beställas.
Filtrera på läge och kategori, sök, sortera (tar slut först, kategori, störst förslag, artikelnummer). Ignorera artiklar som inte ska räknas — de går att visa och ta tillbaka.
Regler: ledtid, säkerhet och täckning som standard, per kategori och per artikel (plus batch och minsta antal). Inställningar → Artiklar → Beställningsarbetet.
Notis när en artikel går ner i «beställ nu» eller «slut» — en gång per artikel, igen först när den varit OK däremellan. Räknas en gång i timmen dygnet runt.
Fraktbevakningen går dygnet runt på den avläsning som redan finns2.18.2
2026-09-08
Spårning, notiser om frakter med problem och efterforskningar hängde på den stora avläsningen, som bara går när någon har appen öppen. Nu åker de med den lätta avläsningen som er schemaläggare redan anropar varje minut — var tionde minut sveper den, resten av gångerna svarar den direkt. Ingen ny schemaläggning behövs.
Brevlådan säger vad som är fel i variablerna2.18.1
2026-09-08
«getaddrinfo EBUSY ukdy» sa ingenting. Nu granskas SMTP-variablerna redan på inställningssidan: ett SMTP_HOST som inte ser ut som ett servernamn, ett SMTP_USER som inte är en adress, ett för kort lösenord, en ovanlig port, ett MAIL_FROM utan adress — allt står i klartext med värdet som är fel.
MAIL_FROM med bara ett namn («Texsolv») blir «Texsolv <brevlådan>» av sig själv; en avsändaradress som inte är brevlådans ersätts, för Google och Microsoft vägrar skicka som någon annan.
Efterforskning per e-post, «åtgärdat», och ett svep som hinner med2.18.0
2026-09-08
Efterforskning hos fraktbolaget: när en sändning bokad här stått stilla i 15 dagar (ändras) skriver appen ett mejl med allt bolaget behöver — spårningsnummer, konto, avsändare, mottagare, kollin, senaste händelse — och skickar det från er egen brevlåda. Svaret kommer till er inkorg. Knappen «Efterforska hos FedEx» på sändningen skickar samma mejl direkt. Inställningar → Efterforskning: koppla brevlådan, provmejl, adresser per bolag, dagsgräns, språk.
«Markera som åtgärdad» på ett problem som är löst på annat sätt: raden slutar vara röd och notisen tiger, tills det blir ett annat slags problem. Går att ångra.
Webbshoppen: «behöver en blick» räknas över alla sändningar, inte bara de femtio som visas, och knappen visar exakt dem.
Spårningssvepet frågar FedEx trettio nummer i ett anrop och de tre bolagen samtidigt — det som tog minuter tar sekunder. «Uppdatera alla» frågar tills allt är frågat i stället för att be dig trycka igen. Avläsningen var femte minut hinner nu med alla aktiva sändningar.
Hitta det notisen pratar om, hela webbshoppen, och svepet som tystnat2.17.1
2026-09-08
Notisen sa «6 sändningar behöver en blick» men listan märkte bara lägen (tull, ombud, avvikelse) — inte upphämtad och står stilla syntes inte alls. Nu bedöms listan med samma regler som notisen, raden får en röd märkning med orsaken, och rutan «behöver en blick» är tydligt en knapp: Visa / Visa alla. Finns på båda flikarna, och notisen öppnar listan färdigfiltrerad.
Webbshoppen: listan visar nu hela butiken, femtio ordrar i taget med «visa fler», ur appens databas — ingen 30-dagarsgräns längre. Namn och ort hämtas ur Shopify för det som visas; sökning på kundnamn går fortfarande till Shopify.
Webbshoppens sändningar slutade uppdatera sig av sig själva efter 2.16.2: när hela historiken lästes in fylldes svepets kö av tusentals gamla rader, och de nya nådde aldrig fram. Rättat — svepet frågar bara om det som är yngre än sextio dagar och inte levererat.
Notis när en frakt får problem2.17.0
2026-09-07
Telefonen säger till när en sändning behöver en blick: avvikelse hos fraktbolaget, på väg tillbaka, fast hos tullen, ligger hos ombud för länge, står stilla, eller etikett skriven men kartongen aldrig upphämtad. Gäller både det som bokats här och webbshoppens sändningar.
Varje sändning sägs en gång per slag av problem — inte var femte minut tills det löst sig. Trycker man på notisen öppnas listan med bara det som behöver en blick.
Dagsgränserna (inte upphämtad 3, står stilla 6, hos ombud 7) och av/på finns under Larm → inställningar → Frakter med problem.
Skannern: en streckkod som satt både som EAN i Fortnox och som Shopify-streckkod på en annan artikel öppnade inte artikeln utan hamnade i sökrutan. Nu vinner Fortnox egen kod, och bara när två artiklar delar samma kod visas listan — med en förklaring.
«Allt» i statistiken började i juni2.16.2
2026-09-07
Webbshoppens sändningar fanns i databasen bara så långt bak som fliken Webbshoppen råkat visa. Nu läser statistiksidan in hela butikens historik från Shopify, en omgång i taget, medan du tittar — första gången tar det en stund och siffrorna fylls på; sedan är det gjort.
Det som bokats här i appen finns från den dag appen började boka frakt; äldre sändningar som bokades direkt hos FedEx finns inte i någon databas vi kan läsa.
Statistiken sa «okänt land» om nästan allt2.16.1
2026-09-07
Webbshoppens sändningar hade inget land sparat före 2.16.0. Nu slås landet upp hos Shopify på ordernummer när statistiksidan öppnas, några ordrar i taget, tills alla har det — sidan fyller på av sig själv.
Svenska kunder i Fortnox har ofta landet tomt. Bokningen räknar det som Sverige, och nu gör statistiken det också.
«Okänt land» står sist i listan, hur många det än är.
Fraktstatistik2.16.0
2026-09-07
Ny sida: Statistik. Försändelser per land, fraktbolag, tjänst och månad, med fraktkostnad, snittpris och leveranstid (median). Nås från fliken Statistik under Bokade frakter och från Inställningar → Frakt.
Välj period (30 dagar, 90 dagar, 12 månader, i år, allt) och källa (bokat här, webbshoppen, båda).
Webbshoppens sändningar sparar nu mottagarlandet så att de kan räknas per land.
Landsnamn med flera ord skrivs med stor bokstav på varje ord (Nya Zeeland).
Handelsfakturor som gått elektroniskt låg och skräpade i kön2.15.8
2026-09-04
En handelsfaktura som redan gått upp till fraktbolaget sparas för att kunna öppnas i efterhand — men den lades i utskriftskön som ett väntande papper. Ingen skrivare har den rollen, så den blev liggande för alltid: räknaren sa «3 väntar» och ingenting kom någonsin ut. Efter ett par sändningar tror man att skrivaren krånglar, och då slutar man lita på siffran den dagen den betyder något.
Nu har de ett eget läge. De står kvar under Papper i fraktlistan med texten «gick elektroniskt · finns att öppna», räknas inte som väntande arbete, och går fortfarande att skriva ut med «skriv ut igen» om tullen vill ha pappret i en påse.
De som redan ligger i kön flyttas över automatiskt.
Appen minns hur handelsfakturan gick2.15.7
2026-09-04
Sendify bokar inte en tullsändning utan handelsfaktura — sändningen kunde alltså omöjligt ha blivit av om fakturan inte gått upp. Appen visste det i stunden men skrev aldrig ner det, så en runda som öppnades senare kunde inte svara på frågan.
Nu sparas det vid bokningen: gick fakturan elektroniskt till FedEx med kvittens, laddades den upp till Sendify, ligger den som papper i plastfickan, eller behövdes ingen alls. Kvittensen säger samma sak i dag som om en vecka, när tullen ringer.
En runda bokad före den här versionen vet ingenting, och då visas ingen rad — hellre tyst än en gissning.
Kvittensen sa emot sig själv om handelsfakturan2.15.6
2026-09-04
«Handelsfaktura: Måste skrivas ut» stod två centimeter ovanför rutan som sa att fakturan är uppladdad till Sendify och skickad elektroniskt. Raden kände bara FedEx väg — elektroniska handelsdokument med kvittens — och allt annat föll ner på «måste skrivas ut». Nu säger den «Uppladdad till Sendify» när det är det som hänt.
På en runda vars kvittens läses ur databasen visas raden inte alls. Databasen minns inte hur fakturan gick, och «behövs inte — inom EU» på en sändning till Norge vore ett löfte appen inte kan hålla. Pappret ligger kvar under Papper i fraktlistan för den som behöver det.
Etiketten behåller sin form2.15.5
2026-09-04
Du hade rätt: appen gjorde något med filen. Sidan från fraktbolaget renderades in i etikettens ruta — 4 × 6 tum, oavsett vilken form sidan hade. En A6-sida på 105 × 148 mm, vilket flera bolag skickar, trycktes ihop sex procent på bredden och drogs ut lika mycket på höjden.
Det syns knappt på texten och desto mer på en streckkod: dess streckbredder är hela dess funktion, och en skanner som läser fel bredder läser fel kod eller ingen alls. Nu ritas sidan i sina egna proportioner och skalas in i etiketten med formen bevarad.
En 4 × 6-etikett på en 100 mm rulle krymps dessutom till 98 procent i stället för att klippas i kanten. Rullen är 100 mm bred och fraktbolagen ritar för 102.
Provet är en kvadrat: kommer den ut som en kvadrat är formen bevarad. Den provas på fyra sidformat — 4 × 6, A6, A5 och A4 — och föll på tre av dem innan rättelsen.
Etiketten var aldrig fel — och skalas inte längre upp2.15.4
2026-09-04
Etiketterna som skrevs ut direkt från FedEx och Sendify ser likadana ut som appens. Den stora tomma ytan i nederkant är alltså fraktbolagens egen layout, inte något appen gör — och måttkontrollen visade att skrivaren matar rätt längd papper. Ingenting var trasigt.
Däremot rättas något jag införde i morse: en sida som redan är en etikett beskärs och förstoras inte längre för att fylla papperet. Fraktbolagen kräver att etiketten skrivs i skala 1:1, och en uppförstorad streckkod har inte längre de mått deras skannrar är byggda för. Beskärningen gäller nu bara sidor som är mycket större än etiketten — en etikett i hörnet av en A4, där alternativet är en frimärksstor fläck.
Provet som skulle vaka över det här kunde inte misslyckas. Det läste ZPL-bilden med en hemmagjord regel, men ^GFA-datan har inga radbrytningar och är dessutom komprimerad — provet mätte något helt annat än etiketten och sa ändå att allt var bra. Nu packas bilden upp på riktigt (lib/zpltolk.js), och proven mäter etiketten.
Måttkontrollen mätte fel — nu gör den inte det2.15.3
2026-09-04
Det vågräta strecket var 100 mm långt och började 6 mm in på en etikett som är 100 mm bred. Det slutade alltså utanför etiketten, skrivaren klippte det vid kanten, och måttkontrollen rapporterade ett fel som bara fanns i den själv. Strecket är 80 mm nu och ryms med marginal.
Texten saknade å, ä och ö. Zebrans inbyggda typsnitt skriver det den kan och hoppar tyst över resten, så «Vågrätt» kom ut som «Vgrtt». Appens andra etiketter ritas som bilder och klarar vilka tecken som helst; den här är ren ZPL, och då gäller skrivarens teckentabell.
Måttkontrollen går nu till samma skrivare som fraktetiketterna. Skrivarvalet görs per papperssort, så den kunde hamna på en annan Zebra än den man ville mäta — och då mäter man fel maskin.
Vad mätningen visade: det lodräta strecket är exakt 50 mm. Skrivaren matar alltså rätt längd papper och upplösningen stämmer. Det som återstår att förklara är fraktetiketten, och där är nästa steg att mäta trycket på en färsk sådan.
Bokningen svarar i tid, och kvittensen står ensam på skärmen2.15.2
2026-09-04
Fraktraden i Fortnox görs nu i ett eget anrop efter bokningen. Den låg sist i bokningen och gjorde två Fortnox-anrop innan svaret gick iväg — tillsammans med fraktbolaget och etiketten blev anropet så långt att servern hann dödas innan den svarade. Sändningen fanns, etiketten kom ut, och telefonen sa «servern hann inte svara». Varje gång.
Blir fraktraden ändå inte av — appen stängdes, nätet försvann — görs den om nästa gång fraktsidan öppnas. Resultatet sparas på rundan, så att raden inte skrivs två gånger.
Kommer inget läsbart svar frågar appen rundan i stället för att skrämmas. Är sändningen bokad står det «Frakten är bokad» och kvittensen visas; det gamla beskedet kom även när allt gått igenom, och en varning man lär sig strunta i är värdelös den gången den betyder något.
Bokningsknapparna längst ned låg kvar under kvittensen på en runda som lästes ur databasen. De hörde ihop med ett färskt bokningssvar och inte med «är den bokad?» — nu försvinner de så fort frakten är bokad, oavsett var kvittensen kommer ifrån.
Kräver Sendify en handelsfaktura de inte nämnde i prislistan bygger appen den och försöker igen, en gång. Förut fick man beskedet att göra om exakt det som just misslyckats. Ingenting bokades vid nejet, så det finns ingen risk för två sändningar.
En manuell frakt får ingen varning om att avtalspriset saknas. Den har ingen order att skriva raden på — kostnaden står på fraktbolagets faktura.
«FedEx FedEx Regional Economy» heter bara «FedEx Regional Economy». Sendify skickar bolagsnamnet både för sig och först i produktnamnet.
Måttkontroll — mät i stället för att gissa2.15.1
2026-09-04
Ny knapp under Inställningar → Skrivare: «Skriv ut en måttkontroll». Den skriver ut en etikett med två streck av känd längd — 100 mm vågrätt och 50 mm lodrätt — och texten som säger vad måtten betyder. Två mätningar med en linjal, och man vet vad som är fel.
Tre saker ger en ihoptryckt etikett, och de kräver tre olika åtgärder. Är båda strecken ungefär två tredjedelar för korta är skrivaren en 300-punktare och siffran i inställningarna fel. Är bara det lodräta fel matar skrivaren fel längd papper och behöver kalibreras mot rullen. Stämmer båda är etiketten rätt när den lämnar appen, och då sitter felet i vad fraktbolaget skickade.
Kvittensen visar nu vilket format bolaget skickade etiketten i — «102 × 152 mm» eller «210 × 297 mm». Frågan om Sendify skickar olika beroende på fraktbolag gick inte att svara på förut: sidan ritades och kastades. Nu står måtten där.
Fotot av den ihoptryckta etiketten gick att mäta men inte att lita på: bredden stämde och längden var två tredjedelar, vilket inte kan komma av upplösningen ensam. Därför den här knappen i stället för en gissning till.
Provadresser — boka en riktig sändning utan att leta adress2.15.0
2026-09-04
Tre knappar på «Boka frakt manuellt» som fyller i en färdig sträcka: Sverige, inom EU och utanför EU. Mottagare, kolli och — där det behövs — en vara med HS-kod, ursprung och vikt, så att hela vägen fram till en riktig bokning går att prova.
Sverige går till vårt eget lager med ett kolli som ryms i en brevlåda, så att PostNords brevtjänster dyker upp i listan. Inom EU är Köpenhamn, utanför EU är Oslo — offentliga byggnader vars adresser fraktbolagens adresskontroll känner igen. Mottagarna heter PROVSÄNDNING, så att en etikett som blir liggande på packbordet inte råkar följa med en pall ut.
Slås på och av under Inställningar → Fraktbolag. Avstängt är förvalet: knapparna hör hemma när man provar, inte i vägen när man packar på riktigt.
Ett nytt provverktyg kör adresserna genom samma kontroller som bokningen — postnummer, telefon, landkod, mått, HS-koder — så att en provadress inte blir det som provas. Det hittade direkt att sträckan till Danmark saknade varuuppgifter: EU tar ingen tull, men FedEx kräver varuraderna över varje landsgräns ändå.
Bokningarna blir riktiga och kostar pengar. Det står på både knappraden och i inställningen.
Etiketten i rätt storlek — 203 eller 300 dpi2.14.4
2026-09-04
Fraktetiketten kom ut i två tredjedels storlek, tryckt i ett hörn med streckkoder för små att skanna. Både FedEx och PostNord lämnar sina etiketter i 203 dpi — FedEx har ingen annan, och PostNords spec har ett enda tillåtet värde i fältet. En 300-punktare ritar en punkt per punkt, och två tredjedelar är exakt vad 203 delat med 300 blir.
Nu står upplösningen under Inställningar → Skrivare. Är skrivaren en 300-punktare tas etiketten som PDF från bolaget i stället och ritas om här i rätt upplösning — samma väg som Sendifys etiketter redan gick. Är den en 203-punktare används bolagens egen ZPL som förut, den är skarpare.
Siffran gick förut bara att sätta med en miljövariabel i Vercel, alltså av den som kan koden. Den som byter skrivare är någon annan.
Appens egna etiketter följde redan siffran, och därför syntes felet bara på fraktbolagens.
Fraktvyn visar bokningen i stället för fraktvalet2.14.3
2026-09-04
Frågan var varför du inte hamnade på klart-sidan när sändningen ändå bokades. Svaret: kvittensen byggdes bara av svaret på bokningen, och kom inget svar fram visste sidan ingenting. Den visade fraktvalet igen, och trycket gav «redan bokad» — två besked som inte gick ihop, med en etikett i handen. Nu läses bokningen ur databasen, så kvittensen visas oavsett hur svaret gick, med när den bokades och av vem.
Ny knapp: «Skriv ut etiketten igen». Bokningen går inte att göra om — sändningen finns — och när svaret tappats bort eller pappret fastnat i skrivaren var fraktbolagets egen portal enda vägen till en ny etikett. Samma jobb läggs i kön igen, inga nya.
Anropen till Fortnox har en tidsgräns på tolv sekunder. Fraktraden ligger sist i bokningen och hade ingen bortre gräns — funktionen dog på sin minut medan den väntade, och det var därför inget svar kom. Nu blir bokningen klar utan fraktrad i värsta fall, och det står på kvittot att den ska skrivas in för hand.
PostNord-bokningar med många kollin slutar boka medan det finns tid kvar att svara. En försändelse per kolli är ett anrop per kartong, och tio kartonger med ett trögt PostNord blev längre än minuten. De som hann bokas kommer tillbaka, resten bokas när man trycker igen.
Bokningen skrivs ner först, etiketten fyller etiketten2.14.2
2026-09-04
En Sendify-bokning gick igenom, etiketten kom ut, och skärmen sa ändå «The string did not match the expected pattern». Det är telefonens sätt att säga att svaret inte gick att läsa — funktionen hann boka men inte svara klart. Nu står det i stället vad som gäller: sändningen kan vara bokad, kontrollera under Bokat innan du bokar om. Knappen «visa tider» döljs, för då vet vi inte om något nekades.
Bokningen skrivs ner i databasen direkt när fraktbolaget bekräftat, före etiketter, tullpapper och fraktraden. Raden skrevs förut sist av allt, så en funktion som dog på tidsgränsen lämnade en sändning som fanns hos bolaget men inte i appen — och nästa tryck bokade en till.
Fraktsedeln kom ut ihopkrympt. Sidan renderades rakt av till etikettens mått oavsett vilket format fraktbolaget lagt den i, och kommer etiketten som ett litet fält uppe i hörnet på en A4 pressades hela A4:an in på 4 × 6 tum. Nu mäts var trycket sitter, och det området fyller etiketten med bibehållna proportioner.
En manuell frakt utan artikelrader gick inte att skriva ut någon packsedel på. Sidan krävde minst en rad för att räkna rundan som klar, och en manuell frakt eller en retur har ofta noll rader — den fastnade i plockvyn med en tom lista.
Resten av fraktgenomgången2.14.1
2026-09-04
En tom etikett räknas inte längre som en etikett. Fraktbolagets PDF kan komma innan bolaget skrivit in sina uppgifter, och den helvita sidan kodades som en giltig etikett: Zebran matade ut ett blankt papper och appen sa «Bokad · 1 etikett» — omöjligt att skilja från ett skrivarfel. Nu sägs det, med vilken sida det gällde.
FedEx-bokningen skickar inte samma sak två gånger. Faller en sändning inom EU försökte appen boka om «utan elektronisk handelsfaktura» — men inom EU fanns ingen sådan i anropet, så andra försöket var byte för byte identiskt med det första. Två bokningsförsök av samma sändning, och ett felmeddelande som skyllde på fel sak.
Sendify får säga nej med en gång. Deras kontroll av att sändningen går att boka var avstängd, så ett utkast kunde se prissatt ut och nekas först vid bokningen — alltså efter att kartongen packats.
Gamla spårningsnummer ligger inte kvar på kollina när en runda bokas om. En kartong kunde bära numret från en avbokad FedEx-sändning och listan visade det som den nya sändningens; kunden fick ett nummer till något som inte finns.
Upphämtningstiden som skickades till Sendify sparas nu på rundan. Fältet lästes från fel ställe och blev alltid tomt, så spärren «tiden du bad om har passerat» kunde aldrig slå till — beskedet kom i stället som ett nej från fraktbolaget.
Genomgång av fraktbokningen — alla tre bolagen2.14.0
2026-09-04
Ingen sändning kan bokas två gånger längre. Spärren prövade om det fanns ett spårningsnummer, men ett bolag kan boka utan att lämna ett nummer i samma andetag — då såg rundan obokad ut och nästa tryck skapade en andra sändning som ingen kunde avboka. Nu gäller «finns en bokning hos ett fraktbolag». Samma sak när något går fel efter bokningen: anspråket släpps inte längre på en runda där en sändning faktiskt skapats.
FedEx-bokningen görs aldrig om av sig själv. Appen gjorde om anrop som såg tillfälliga ut, och ett 5xx betyder inte att ingen sändning skapades — bara att vi inte fick veta. Nu kastas felet med en uppmaning att kontrollera hos FedEx innan man bokar om. Prisfrågor och adresskontroller görs om som förut; de skapar ingenting.
Etiketterna räknas som etiketter. Kvittot visade antalet kollin, så en sändning där en etikett uteblev såg lika hel ut som en där allt kom med — och en kartong stod kvar utan etikett. Nu står «2 st av 3 kollin» med skälet bolaget gav. FedEx-etiketter som kommer som PDF i stället för ZPL görs dessutom om innan de läggs i kön; förut fick Zebran binärt skräp och matade ut ingenting.
Priset på fraktraden kommer från servern. Det kom från telefonen: raden man tryckt på skickade med sitt belopp, och servern skrev in det. En rad som legat kvar på skärmen medan ett kolli lades till fakturerades med sitt gamla pris. Nu sparas prislistan på rundan när priserna hämtas, och bokningen använder den siffran — skiljer den sig från skärmen sägs det.
Bokas något utan pris — FedEx prislista svarade inte och man valde ur reservlistan — sägs det nu i klartext. Förut skrevs ingen fraktrad och ingenting nämndes, så frakten fakturerades aldrig.
Ett nekat kolli hos PostNord är inte längre en återvändsgränd. Där bokas en försändelse per kolli, och blev den tredje nekad räknades rundan som bokad: «Boka» svarade «redan bokad» och PostNord har ingen avbokning. Nu bokas bara kollina som saknar etikett när man trycker igen.
Telefonnummer, postnummer och vikter städas med samma regler för alla tre bolagen. En växel och en mobil i samma Fortnox-fält blev ett nittontecknat nummer som inte finns; «SE-501 23» skickades med landskoden kvar; ett kolli på 40 gram avrundades till noll kilo. Alla tre nekades av bolagen — efter att kartongen packats.
Adressrad två följer med på FedEx-etiketten. «c/o Vaktmästeriet, port B» stod på fakturan i plastfickan men inte på etiketten, och chauffören hittade inte in.
En retur från ett land utanför EU behandlas som en tullsändning. Testet läste bara mottagarlandet, och på en retur är mottagaren vi själva — en kartong från Oslo räknades som inrikes, HS-koderna kontrollerades inte och handelsfakturan FedEx skickade tillbaka slängdes.
Ursprungsland som inte går att tyda stoppar bokningen med besked. «Vietnam» gick in i tulldeklarationen som VIETNAM och FedEx nekade hela sändningen. Trettio länder till känns nu igen.
Sendify: ombudsrader går inte längre att välja — de kräver ett valt ombud som appen inte kan välja, och nejet såg ut som ett utgånget pris, vilket ledde tillbaka till samma rad. Sändningslistan frågar dessutom med rätt sidstorlek och rätt källa; förut svarade den med bara det appen själv skapat, alltså inte det man letade efter. Och på en retur används kundens adress rakt av — förut fyllde vår adress i kundens tomma fält.
Två nya provverktyg: bokningsprov kör spärrarna och priset mot en riktig databas, faltprov håller telefon-, postnummer- och viktreglerna hos alla tre bolagen. Fjorton provverktyg körs nu före varje leverans.
Fortnox nekade fraktraden på ett tecken2.13.9
2026-09-04
Frakten kom inte in på ordern: Fortnox svarade 400 «Värdet innehåller ej tillåtna tecken». Texten på raden var tjänstenamnet plus en punktavdelare, och punkten «·» är ett sådant tecken som ser vanligt ut på skärmen men inte går igenom hos dem. De säger inte vilket tecken de menar, och publicerar ingen lista.
Nu städas texten innan den skickas — punkter, tankstreck, citattecken och osynliga styrtecken blir sina enkla motsvarigheter. Svenska bokstäver rörs inte; Fortnox är ett svenskt system och åäö står i varje kundregister.
Nekar de ändå skrivs raden om en gång till med bara bokstäver, siffror och de skiljetecken som säkert går igenom, och skickas på nytt. Hellre en fraktrad med torftig text än ingen fraktrad alls — en order som faktureras utan frakt märks först när pengarna saknas. Står det om texten säger kvittot det, med Fortnox eget svar.
Bara teckenfelet går den vägen. Andra nej från Fortnox kastas som förut, med fälten raden bar.
PostNord går att boka med flera kollin igen2.13.8
2026-09-04
Flera kartonger bokas nu som flera försändelser, en per kolli, med samma orderreferens på alla. Varje kartong får eget kollinummer och egen etikett — vilket ändå är det man vill ha när kunden ringer om en av dem.
Home Small är en brevtjänst, och hos PostNord är ett brev en försändelse med ett kolli. Det är därför de svarade «shipment has multiple item». «Sändning» i deras prislista betyder något annat än man tror: enligt Särskilda villkor PostNord Home Small är en sändning en inlämning av fler än 100 paket vid samma tillfälle — en prisnivå, inte en bokning med flera kollin. Därför står det fyra namn på avtalet men finns bara två tjänstekoder.
Priset på raden är styckpriset gånger antalet försändelser, med uträkningen under: «3 × 69 kr». Fraktraden på ordern i Fortnox följer samma summa och säger «· 3 försändelser». Förut hade två av tre kartonger aldrig blivit fakturerade.
Nekas en av dem försvinner inte de andra. De som bokades är bokade och kostar pengar, etiketterna ligger i kön, och kvittot säger vilket kolli som blev utan och varför.
Varubrev tar ett kolli — appen säger det innan ni packar2.13.7
2026-09-04
PostNord svarade «shipment has multiple item» på en bokning med två kollin. Varubrev (PostNord Home Small) är en brevprodukt och tar ett kolli per sändning — det står inte i deras schema utan i produktreglerna, så bokningen gick iväg och föll först hos PostNord.
Nu är «ett kolli» en egenskap på tjänsten. Raden i fraktvalet står kvar men går inte att välja när sändningen har fler kollin, och säger varför: boka en sändning per kolli, eller välj en tjänst som tar flera. Raden döljs inte — annars blir frågan «varför står det ingen PostNord här?» obesvarad.
Bokningen vägrar dessutom innan något skickas till PostNord, med samma förklaring. Nästa tjänst som tar flera kollin behöver bara låta bli flaggan.
FedEx-bokningen föll på ett namn som inte fanns2.13.6
2026-09-03
Bokning med ert eget FedEx-avtal svarade «etdBilder is not defined». Felet låg i grenen som bara körs när appen bett om elektronisk handelsfaktura och FedEx svarat utan kvittens — där byggs en diagnos att visa dem, och den raden läste ett namn som hör hemma i en annan funktion. Bokningen föll alltså i stället för att säga att kvittensen uteblev.
ESLint-regeln som fångar sådana namn är påslagen, och provverktyget kör den. En fri variabel är giltig JavaScript ända till den körs — den syns varken i ett bygge eller vid en genomläsning.
Ett prov till som faktiskt kör den grenen: FedEx svarar utan ETD-kvittens, bokningen ska gå igenom, etiketten komma tillbaka och diagnosen finnas att visa.
Fliken öppnas direkt2.13.5
2026-09-02
Webbshopsfliken frågade fraktbolagen medan sidan laddades — upp till tolv anrop innan listan ritades. Det löste att nya sändningar saknade läge, men betalades av varenda öppning, av alla, hela dagen. Flera sekunder för ett svar som redan stod i databasen.
Listan ritas nu direkt ur det lagrade, och påfyllningen sker efteråt när sidan redan syns. Ändras något hämtas listan om av sig själv; ändras inget märks ingenting. Samma sak på fliken med appens egna sändningar.
Sändningarna skrevs in en i taget — hundratjugo rundturer till databasen per öppning. Nu i en enda sats.
«Uppdatera alla» är oförändrad: den frågar allt, direkt, och struntar i takten.
Webbshopslistan tog slut för tidigt2.13.4
2026-09-02
Listan slutade den tjugonde augusti. Det hade ingenting med augusti att göra — den hämtade en sida på femtio ordrar ur Shopify och visade fyrtio av dem, vilket med er takt räcker tolv dagar. Ett tak som ser ut som ett slut.
Nu hämtas sida efter sida tills fönstret är fyllt. Standard är de senaste 30 dagarna, och under listan står hur långt bak den går med en knapp för tre månader, ett år eller hela butiken.
Sökrutan har ingen datumgräns — den som letar efter en order från i våras skriver ordernumret och hittar den oavsett vilket fönster som är valt.
Ordrar som står som skickade men saknar spårningsnummer räknas inte längre mot taket. Förut kunde en sida på femtio ge tjugofem rader och listan såg kortare ut än den var.
Spårningen frågas varannan timme första veckan2.13.3
2026-09-02
Första veckan frågades varje sändning var sjätte timme. Det räckte för att listan skulle vara ungefär rätt men inte för att den skulle kännas levande — ett paket som lämnades ut på morgonen stod som «på väg» till lunch, och då öppnar man fraktbolagets sida i stället. Nu varannan timme.
Efter en vecka två gånger om dygnet, efter tre veckor var tredje dag, och efter sextio dagar slutar appen fråga. Levererade sändningar frågas aldrig om igen.
Texten «annars frågar appen själv» är borttagen.
«Uppdatera alla» frågar på riktigt2.13.2
2026-09-02
Knappen sa «allt var redan färskt» när det inte var det. Den lydde takten som styr den automatiska avläsningen — en sändning som frågats för en timme sedan hoppades över — medan «Fråga nu» inne på en order gick förbi takten och därför ändrade läget direkt. Två knappar som gjorde olika saker och hette nästan samma sak.
Takten finns för att skydda fraktbolagens kvot från svepet, inte för att överpröva någon som just tryckt på en knapp. Nu frågar knappen allt.
Levererade sändningar och nummer äldre än sextio dagar hoppas fortfarande över — de ändrar sig inte, och fraktbolagen slutar svara på gamla nummer.
Blir svaret ändå noll står det varför: att spårningen hos ett bolag är pausad, eller att det som är kvar är levererat. «Allt var redan färskt» var svaret som fick knappen att se trasig ut.
«We have your package» är inte ett okänt läge2.13.1
2026-09-02
FedEx publicerar ingen fullständig lista över sina scankoder, så allt utom fyra visades som «Okänt läge» — även när FedEx skrev rakt ut att de hade paketet. Nu läses tidsstämplarna i stället: de bär en typ vars betydelse FedEx faktiskt dokumenterat, så «det finns en upphämtning och ingen leverans» räcker för att veta att paketet är på väg. Fraktbolagets egen kod visas fortfarande, så kartan går att fylla på.
Läget som en gång räknats ut läses nu ur databasen i stället för att räknas om ur bara koden. Förut kunde en sändning som stod som «På väg» bli «Okänt läge» när listan öppnades igen.
Webbordrar uppdaterades inte. En sändning utan datum på Shipmondos fraktsedel frågades aldrig — utan datum kan appen inte välja takt, och raden blev tyst. Nu används dagen vi först såg den i stället.
Fraktbolag som Shipmondo bokar med men vi inte kan fråga — DHL, Bring — räknas upp överst i webbshopslistan i stället för att bara sakna läge. Och en pausad spårning syns nu också där.
«Uppdatera alla» finns även på webbshopsfliken.
Sendify går att spåra, och en knapp som uppdaterar allt2.13.0
2026-09-02
Sendify-sändningar stod som «Okänt läge» fastän fraktbolaget hade paketet. Sendify har en riktig spårningsrutt — jag hade läst appens genererade regeltabell i stället för deras spec, och regeltabellen innehåller bara de sex rutter appen validerar mot. Nu frågas rätt rutt, och hela deras statuslista är kartlagd.
Med den kommer också fraktbolagets eget spårningsnummer, var paketet senast scannades, och en spårningsadress hos Sendify — den som saknats för DSV, DHL och de andra som bokas via dem.
Ny knapp «Uppdatera alla» överst i listan. Frågar alla fraktbolag på en gång och säger hur många som ändrades.
Listan fyller på sig själv när den öppnas — inte bara sändningar som aldrig frågats, utan alla vars uppgift hunnit bli gammal. Förut rördes en sändning aldrig mer efter första frågan, utan fick vänta på nästa avläsning.
Två av Sendifys statusar tolkas med flit inte: UNKNOWN och NOT_FOUND är deras sätt att säga att de inte vet, och att göra ett läge av dem vore att hitta på ett besked de avstått från att ge.
Rättade förklaringar når fram2.12.2
2026-09-02
FedEx-varningen visade fortfarande den gamla, felaktiga förklaringen. Hela meningen sparades i databasen när spärren sattes, och eftersom spärren gjorde att fraktbolaget aldrig frågades igen skrevs den aldrig om. En rättelse i koden nådde alltså aldrig skärmen.
Nu lagras bara det som är sant oavsett vad vi tror: när det hände och vad fraktbolaget själva sa. Vår förklaring byggs varje gång rutan visas.
Gamla rader läses om: FedEx egna ord plockas ut, medan min gamla mening inte längre står som om de hade sagt den.
Spärren står ett dygn och provas sedan om av sig själv. Rättas behörigheten hos fraktbolaget börjar spårningen fungera utan att någon behöver trycka på något — förut stod rutan kvar tills man hittade knappen.
Sändningarna syns som sändningar2.12.1
2026-09-02
Korten under Bokat låg i en vit platta, så mellanrummet mellan dem var vitt på vitt — fyra sändningar såg ut som ett block med hårfina streck i. Nu syns sidans bakgrund mellan dem, och varje kort har sin egen skugga.
Tre år, handelsfakturor i ett, och flaggor i listan2.12.0
2026-09-02
Allt sparas i tre år. Mätningen avgjorde det: hela databasen vägde tjugo megabyte och femton av dem var artikelbilder. En plockrunda är några hundra tecken — tre år av dem är mindre än en enda produktbild.
Handelsfakturornas innehåll finns kvar i ett år i stället för en månad. De är de enda papper som väger något, men elva av dem tog en och en halv megabyte — billigare än att sakna en faktura när tullen frågar om en sändning från i våras.
Landet visas som flagga i båda listorna under Bokat. Förut skrev appens lista ut namnet som Fortnox stavat det och webbshoppens en tvåbokstavskod — samma kolumn på två språk. (Windows ritar inga flaggemojier och visar de två bokstäverna i stället; på telefonen syns flaggan.)
FedEx spårning läser nu två saker till ur deras svar: en fördröjning i tullen och ett paket som ligger och väntar på uthämtning. Båda kan stå bredvid en status som säger «på väg» — den är sann men inte det man behöver veta. Värdemängderna står i FedEx egen specifikation, till skillnad från scankoderna.
Säger FedEx att ett spårningsnummer inte finns visas deras egen mening i stället för «FedEx svarade utan någon status», som lät som ett fel i appen.
Spårningen hos FedEx behöver en egen nyckel2.11.1
2026-09-01
Jag hade fel om varför FedEx nekade spårningen. Track är inte ett API man kryssar i på ett projekt — det är en egen projekttyp. Hos FedEx väljer man «Ship, Rate & Other APIs» ELLER «Track API» när ett projekt skapas, aldrig båda. Därför fanns Track inte som en kryssruta, och därför får bokningsnyckeln inte spåra.
Appen tar nu spårningsnyckeln ur FEDEX_TRACK_CLIENT_ID och FEDEX_TRACK_CLIENT_SECRET, med egen inloggning. Sätts de inte används bokningens som förut.
Diagnosen provar båda nycklarna bredvid varandra och säger vad som fattas — att bokningsnyckeln nekas är väntat och inte ett fel.
Åtta prov till: att egna nycklar går före bokningens, att det syns när de saknas, och att spårningen kör mot samma miljö som bokningen.
Listan är ifylld när man öppnar den, och allt sparas ett år2.11.0
2026-09-01
Spårningen fylls i när listan öppnas. Förut hade en nyss bokad sändning inget läge förrän nästa avläsning, och en lista där hälften av raderna var tomma fick en att trycka «Fråga nu» på varje rad — precis det knappen skulle slippa. Nu frågas det som aldrig frågats direkt, med en tidsgräns så att sidan öppnas i stället för att ladda. Gäller webbshoppens lista också.
Avläsningen frågar om 25 sändningar per varv i stället för 10.
Levererade sändningar frågas inte om igen — det gjorde de inte förut heller. Takten glesnar dessutom med åldern: fyra gånger om dygnet första veckan, en gång om dygnet till tre veckor, sedan var tredje dag, och efter sextio dagar slutar appen fråga.
Allt sparas i tolv månader i stället för sex: plockrundor, sändningar, etiketter och papper. «Vår referens»-listan går ett år tillbaka i stället för fyra månader, och listorna Packat och Bokat har fått tak som ligger över vad ett år ger — förut var det listans tak och inte gallringen som avgjorde hur långt bak man såg.
Ny sida under Inställningar → Databasen: vad appen faktiskt tar för plats, tabell för tabell, med utskriftskön uppdelad på etiketter och handelsfakturor. Perioden går att ändra där, och «Städa nu» visar följden med en gång.
Handelsfakturornas innehåll töms fortfarande efter en månad — en PDF väger hundratals kilobyte och skrivs aldrig ut igen när kartongen är framme. Raden står kvar, så listan är komplett.
FedEx nekar spårningen — en gång, inte hundra2.10.2
2026-09-01
Spårningen hos FedEx går inte. Track är inte ett API som går att kryssa i på ert projekt, så det måste begäras av FedEx — bokning, priser och etiketter berörs inte, det är bara statusen som uteblir.
Nekar ett fraktbolag hela tjänsten stängs frågan av och skälet står en gång, överst i listan. Förut kom samma röda fel på varenda sändning, och svepet fortsatte ringa dem för att få samma nej.
«Fråga FedEx varför» frågar dem i stället för att gissa: den provar spårningen i både produktion och test, visar vad nyckeln har för behörighet enligt FedEx eget svar, och säger vad raderna tillsammans betyder. Svarar Track igen slås spårningen på av sig själv.
Föregående versions felmeddelande sa att Track «troligen» inte var tillagt i projektet, och pekade på en kryssruta som inte finns. Det var en gissning, och den skickade någon att leta på fel ställe.
Avstängda bolag räknas bort innan svepets tak, inte efter — annars fyllde de platserna med nej och de sändningar som gick att fråga om blev aldrig frågade.
Webbshoppens paket spåras på riktigt2.10.1
2026-09-01
Webbshoppens sändningar stod som «Skickad» allihop. Det var Shopifys ord: de vet att Shipmondo skrivit en fraktsedel, inte var paketet är. Nu frågas fraktbolaget om dem också, precis som om våra egna — samma lägen, samma takt, och samma rad överst som säger hur många som behöver en blick.
Bara numret, bolaget och läget sparas. Kundens namn och adress hämtas ur Shopify när listan visas och lagras aldrig här.
Webbshopsraderna fälls ut när man trycker på dem. Spårningsnumret, kunduppgifterna, «kopiera» och «Skapa returetikett» ligger inne i utfällningen — en rad man sveper förbi ska inte ha en knapp som bokar en frakt.
«Fråga nu» fungerade inte på sändningar via Sendify. De avvisar en sidstorlek under tio, och en fråga om en enda sändning bad om fem. Golvet ligger nu i anropet, så ingen kan råka be om färre.
FedEx svarade «we could not authorize your credentials» på spårningen trots att bokningen fungerar. Nycklarna är rätt — Track är ett eget API i FedEx-projektet och måste läggas till där. Felet säger det nu i stället för att skicka någon på jakt efter en nyckel som redan stämmer.
«Boka frakt manuellt» ligger som fjärde knapp bredvid Skanna, Leta och Boka upphämtning, i stället för inuti fliken Bokat. De fyra står två och två i ett rutnät — som en rad hamnade de under varandra i telefonen och tog halva förstaskärmen.
Raden «skrivarkön är tom» är borta. En rad som mest säger att ingenting hänt lär man sig att inte läsa — och då läser man den inte den gången det står en siffra där.
Returetiketter, webbshoppens sändningar och en notis om nya artiklar2.10.0
2026-09-01
Returetikett. På en bokad frakt och på en webborder finns nu «Skapa returetikett» — kunden får en etikett att skriva ut och sätta på kartongen. Den bokas genom det vanliga fraktsteget med samma alternativ och priser som allt annat; det enda som skiljer är att avsändare och mottagare är ombytta.
Handelsfakturan vänds med. På en retur är kunden Shipper och vi Consignee, skälet står som «Return of goods», och våra moms- och EORI-nummer följer med till mottagarraden. Att låta vårt EORI stå kvar som avsändare hade varit att intyga för tullen att vi exporterat en vara ur Norge.
Kommer returen från en webborder hämtas kundens adress ur Shopify när man trycker — den sparas inte i appen. Det är kunduppgifter, och de ska inte ligga hos oss för att de kanske behövs.
Under Bokat finns två listor: «Bokade här» och «Webbshoppen». Den andra visar vad Shipmondo skickat, med spårningsnummer, fraktbolag och länk hämtade direkt ur Shopify. Frågan «var är paketet till Oslo?» är densamma oavsett var ordern kom ifrån.
Webbshoppens sändningar går att läsa och spåra, inte avboka eller boka om — de är Shipmondos. En knapp som såg ut att kunna hade ljugit.
Notis när en ny artikel saknar HS-kod, ursprung eller vikt. Frågan ställdes redan vid fraktbokningen, men då står kartongen packad och varan undanlagd. Bara artiklar appen aldrig sett förut, och bara en gång per artikel — gamla luckor står kvar under Artikeluppgifter. Går att stänga av under Larm → Inställningar.
PostNords spårning gick mot fel adress. Rätt väg är deras Track & Trace v7, och hela deras statuslista är nu inläst ur specifikationen — inklusive flaggan som säger att tullen håller kartongen. Den går före statusen: «på väg» är sant men oanvändbart när det som saknas är ett papper.
Var är paketet2.9.0
2026-09-01
Under Bokat står nu vad fraktbolaget säger om varje sändning — levererad, på väg, hos tullen, hos ombud, på väg tillbaka. Appen frågar själv, med tätare takt de första dagarna och glesare sedan.
Överst ligger en rad som säger hur många sändningar som behöver en blick, och ett tryck filtrerar fram just dem. De nittiofem procent som rullar på behöver ingen titta på — det är undantagen som är hela poängen.
Fraktbolagets egna ord står störst, vårt läge under. Känner appen inte igen deras kod står det «Okänt läge» och koden visas — aldrig «på väg». En sändning som fastnat får inte se ut som en som rullar; då vore funktionen värre än ingen alls.
En knapp «Fråga nu» på varje sändning, för den som just fått ett samtal från en kund och inte tänker vänta på nästa avläsning.
Ett fraktbolag som inte svarar raderar aldrig ett läge vi redan hade. Felet står bredvid, och man ser hur färsk uppgiften är.
«Skicka igen» på en bokad frakt öppnar en ny manuell frakt förifylld med samma mottagare, samma rader, samma kartong och samma mått. Ingenting bokas av sig självt — «samma igen» är nästan aldrig exakt samma, och det man ska slippa är avskrivandet, inte beslutet.
Fritextraden väger något2.8.2
2026-09-01
En fritextrad på en manuell frakt gick iväg som 0,01 kg på handelsfakturan. En artikel har sin vikt i registret — en fritextrad har inget register, och det stod tio gram oavsett vad det var. Fakturan såg komplett ut, och tullen jämför summan mot vad kartongen väger. Den som skriver under den är ni.
Fritextraden har fått ett viktfält, per styck i kilo, bredvid antal och värde.
Lämnar sändningen EU går den inte att skapa med en fritextrad utan vikt. Inom unionen finns ingen handelsfaktura att skriva vikten på, och då frågas det inte.
Rader som ändå hamnade på fakturan med minimivikten nämns efter bokningen, med namn — samma sätt som rader utan pris och utan ursprungsland. Det gäller också artiklar vars nettovikt saknas i registret.
Manuell frakt: kartonger, spärr och en adress som fastnar2.8.1
2026-09-01
Knappen under Plock → Bokat heter «Boka frakt manuellt».
Rättad adress fastnade inte på en manuell frakt. Rättelsen skrevs till ordern i Fortnox — men en manuell frakt har ingen order, så skrivningen träffade ingenting och svarade ändå ok. Telefonnumret man just skrivit in var borta på nästa sida. Nu skrivs den där den hör hemma, och en skrivning som inte träffade något säger det.
«Ändra adressen» öppnar sig som en ruta över sidan i stället för längst ned i flödet. Man tryckte och ingenting tycktes hända, för rutan öppnades utanför bild.
Kollina på den manuella frakten har fått förpackningsvalet — samma kartonger som i plockrundan. Måtten fylls i av sig själva.
Samma spärr som i plockrundan: ANGE VIKT! och ANGE MÅTT! kommer även här, med samma två vägar — sparad kartong eller måttband. Rutan ligger nu i en enda fil, så att de två ställena inte kan glida isär.
«Vad är det» — skälet till export — visas bara när sändningen lämnar EU. Frågan ställdes förut för allt utom Sverige, alltså också för en låda till Hamburg. Samma lista över EU-länder svarar nu på både servern och i telefonen.
Sökrutorna på sidan låg indragna, som om de haft en förstoringsglasikon. Texten står nu i kant med de andra fälten, och de grå raderna under fälten klistrar sig inte längre mot rutorna ovanför.
Söker man en mottagare på kundnummer och hen aldrig fått en frakt hämtas kundkortet ur Fortnox. Namnsökningen går fortfarande mot de ordrar appen redan har — den fungerar när Fortnox inte gör det.
Frakt utan order bakom sig2.8.0
2026-09-01
Under Plock → Bokat ligger nu «Skapa frakt utan order». Reklamation, varuprov, retur till leverantör, en beställning som aldrig blir en Fortnox-order — kartongen ska ändå vägas, etiketteras och tullas.
Mottagaren går att söka fram bland dem ni redan skickat till, så fylls adressen i. En manuell frakt går nästan alltid till någon ni skickat till förut, och då är adressen ni faktiskt skickade till bättre än den på kundkortet. Allt går att skriva över, och en helt ny mottagare skriver man in för hand.
Innehållet kan blandas: artiklar ur registret, som bär med sig HS-kod, ursprung och vikt av sig själva, och fritextrader för sådant som inte finns som artikel — en reservdel, ett prov. Fritextraden bär sin egen HS-kod och sitt ursprung, för det finns inget register att hämta dem ur.
Sedan är allt som vanligt. Sändningen blir en plockrunda utan order, och därifrån gäller samma fraktalternativ, samma etiketter, samma handelsfaktura, samma upphämtning. Ett andra fraktflöde vid sidan av det första hade betytt två som gör nästan samma sak, och då underhålls bara det ena.
Ingen fraktrad skrivs i Fortnox. Det finns ingen order att skriva den på, och kostnaden står på fraktbolagets faktura. Det sägs på sidan i stället för att upptäckas av någon som letar efter raden.
Skälet till export följer med till tullen — ett varuprov och en ersättningsleverans är inte samma sak i deras ögon.
Etiketten centrerad, och benämningen större2.7.4
2026-09-01
Layouten var utlagd för två rader benämning. De flesta artiklar har en, och då blev det en tom remsa nedtill — etiketten såg ut som om något fallit bort. Nu räknas blockets höjd ut ur antalet rader och det som blir över delas lika över och under.
Benämningen är större, 8 punkter mot 7. Det är den rad man läser på avstånd i en hylla; artikelnumret hittar man ändå med skannern. Något fler benämningar bryts nu till två rader, vilket är fritt fram sedan de två raderna sitter mitt på etiketten.
Måtten i koden är avstånd i stället för lägen. Att flytta en rad betydde förut att fyra siffror skulle räknas om, och en av dem glöms.
Provet mäter centreringen i stället för att lita på den: alla ritade element plockas ur PDF:en och luften över den översta jämförs med luften under den nedersta. Fem fall, alla inom en tiondels millimeter.
Markera alla2.7.3
2026-09-01
Knappen markerar allt som står i listan just nu — efter sökning, kategori och filter. Det är också poängen: man filtrerar fram en kategori och vill ha etiketter på den, inte på hela registret. Antalet står i knappen, «Markera alla 287», för en knapp utan siffra är en knapp man trycker på för att se vad som händer.
Är allt redan markerat blir den «Avmarkera alla». Är bara en del markerad står Rensa bredvid — men inte annars; två knappar med samma verkan är en knapp för mycket.
Taket höjt från 500 till 1000 etiketter per utskrift. Det fanns för att en felskrivning inte skulle mata ut femtio meter rulle, inte för att stoppa någon som menar det — och sedan Markera alla finns är hela registret en fullt rimlig önskan. Mätt: rasteringen tar 26 ms per etikett, alltså under en halv minut för tusen.
Hundra etiketter tar en minut i stället för sju2.7.2
2026-09-01
Pausen mellan etiketterna var inte skrivaren — det var kön. Skrivaragenten hämtar ett jobb var fjärde sekund, och jag la ett jobb per artikel. Hundra artiklar blev alltså hundra gånger fyra sekunder: nästan sju minuters väntan för något Zebran klarar på under en minut. Tiden gick inte åt till att skriva ut, den gick åt till att fråga.
Nu går hela utskriften som ett enda jobb. Zebran läser etiketterna efter varandra och matar utan paus emellan. Över fyrtio artiklar delas det i flera jobb — ett svar på ett par megabyte som aldrig kommer fram är sämre än fyra sekunders väntan mellan två delar — och då står det i titeln vilken del som är vilken.
Tredje siffran i ^PQ stod som 1, vilket betyder «en dubblett av varje». Vi serienumrerar inte, så den lär inte ha gjort någon skillnad, men en siffra som betyder «skriv ut allt en gång till» har inget i en etikettutskrift att göra. Nu 0.
Etikettrutan inne på en artikel är hopfälld. Den som öppnar en artikel gör det nästan alltid för att räkna, och då ska saldot ligga överst och inte trängas undan av något man gör en gång i månaden. Ett tryck fäller ut den.
Appen startade inte — fyra rader på fel höjd i filen2.7.1
2026-09-01
«Application error: a client-side exception has occurred» på hela appen, och det var mitt fel i går. De fyra useState-raderna för etiketterna hamnade nedanför komponentens tidiga returer. React räknar hookar per rendering: utloggad returnerade startsidan tidigt och kallade tolv, inloggad kallade sexton — och då kastar React och Next byter ut sidan mot sin felruta.
Raderna är flyttade upp bland den övriga staten. Ingenting annat ändrat; funktionen fungerar som den var tänkt.
Felet syns inte i ett bygge — koden är fullt giltig JavaScript — och inte vid en genomläsning heller: raderna såg ut precis som de andra useState-raderna, bara på fel höjd i filen. Alltså finns nu verktyg/hookprov.mjs, som kör react-hooks/rules-of-hooks som fel över app och lib. Jag återinförde buggen och kontrollerade att provet faller på den innan jag tog bort den igen.
Bara den regeln, inga stilregler. Ett prov som klagar på trettio saker läses inte, och då fångar det inte den trettioförsta som är den som stänger appen.
Artikeletiketter 50 × 30 ur Zebran2.7.0
2026-09-01
De nya rullarna går att skriva ut direkt. Etiketten bär samma sak som A4-arken alltid haft: streckkoden överst, koden som text under, benämningen underst — och står det EAN i koden skrivs artikelnumret ut bredvid, för det är det man säger till varandra i lagret. Lång benämning bryts till två rader; en tredje ryms inte på trettio millimeter.
Inne på en artikel finns nu «Skriv ut · 50×30» med ett antal bredvid. Det är där man oftast vill ha en: man har just tagit fram artikeln och ser att burken saknar etikett. Bredvid ligger «Se etiketten först» som öppnar den som PDF — ett mått som sitter fel syns på skärmen på två sekunder och på en rulle efter tjugo etiketter.
I klump: knappen Etiketter i artikellistan gör om raderna till kryssrutor. Kryssa, ange antal per artikel, skriv ut. Ligger i listan du ändå söker i — den gamla etikettsidan hade egen sökning och egna kategorier, alltså samma arbete en gång till på ett annat ställe. Raden längst upp räknar hela tiden ut hur många det blir, för skillnaden mellan tio etiketter och en rulle ska synas innan man trycker.
Etiketten ritas som en sida i millimeter och görs om till ZPL på samma väg som fraktetiketterna. Det betyder att samma etikett går att titta på innan den skrivs ut, och att måtten är millimeter hela vägen. Skrivaren får ^PW och ^LL så att den vet etikettens storlek i stället för att klippa bilden efter sin egen inställning.
Antalet läggs på skrivarens egen upprepning i stället för att samma etikett läggs i kön femtio gånger. Kön får en rad, och den som ångrar sig river bort en rad i stället för femtio. Tak på 500 per knapptryck — en felskrivning i antalsrutan ska inte mata ut en hel rulle.
Under Inställningar → Skrivare finns sorten «Artikeletikett 50×30 (Zebra)» att peka ut en dator för, skild från streckkodsarken på A4. Samma uppgifter, två helt olika skrivare.
Ingen knapp för en faktura som redan gått till tullen2.6.6
2026-08-31
ETD fungerar nu — «mottagen» med FedEx mapp-id på raden. Men under den stod fortfarande rutan «Papper att skriva ut» med en knapp som hette Handelsfaktura. Två besked om samma papper, i motsatt riktning, tio pixlar ifrån varandra — och den som packar följer knappen, för en knapp ser ut som något man ska trycka på.
Knappen är borta när fakturan gått elektroniskt. Gäller både vårt eget FedEx och Sendify: gick den digitalt nämns den inte, gick den inte det kommer rutan över skärmen och tre exemplar ur A4-skrivaren. Ett enda besked per papper.
Fakturan sparas fortfarande. Den ligger under Papper i fraktlistan tillsammans med plocklistan och etiketten, den dagen tullen ringer och frågar.
Rutan heter numera «Papper att hämta». Den listar sådant fraktbolaget skickat med som ligger och väntar — den skriver inte ut något av sig självt, och rubriken påstod motsatsen.
Rutan om plastfickan ritades aldrig, och ETD-kvittot söks nu upp2.6.5
2026-08-31
De tre kopiorna kom ut men rutan gjorde det inte, och det var mitt fel. Rutan låg inuti «ännu inte bokad»-vyn. I samma ögonblick bokningen lyckades byttes den vyn ut mot «Frakten är bokad», och då fanns rutan inte längre på skärmen att rita. Servern gjorde allt rätt — beskedet låg i svaret, papperen i kön. Ingen fick se det. Nu ligger rutan utanför båda vyerna.
Påminnelsen står dessutom kvar. En ruta som visas en gång, i sekunden efter bokningen, är borta så fort man går ur ordern — och kvar blir en rad som säger «måste skrivas ut», vilket är ett konstaterande och inte en påminnelse. Nu står den som en varning på den bokade frakten med en knapp som tar tillbaka rutan.
Gick fakturan elektroniskt? Uppslaget efter FedEx kvitto stod på ett enda ställe, skrivet som två — s.completedEtdDetail och samma sak en gång till via en omväg som pekar på samma s. Ligger kvittot ett steg ned i deras svar såg det ut som att ETD inte hänt. Nu söks hela svaret igenom efter fältnamnet, med ett djuptak så att en konstig struktur inte kan få appen att gräva för evigt.
Och när vi bad om ETD utan att få kvitto står det nu varför, i stället för bara att. Rutan «Varför gick fakturan inte elektroniskt?» säger hur många bilder som är uppladdade — brevhuvud och namnteckning krävs, och utan dem faller ETD — och listar vilka fält FedEx faktiskt svarade med. Det är det man visar dem när man ringer och frågar. Bara fältnamn, inga värden.
Handelsfakturan: VAT, rätt nummer, och era kontaktuppgifter2.6.4
2026-08-31
Handelsfakturan skrev «MOMS SE556…» om avsändarens momsnummer. Pappret läses av en tulltjänsteman i Oslo eller Chicago, och MOMS säger honom ingenting — numret stod där utan att gå att placera. Nu står VAT, precis som mottagarens nummer alltid gjort. Två fält på samma papper kallade samma sak vid olika namn.
Din fråga om hur appen vet att fakturan gick digitalt hittade ett hål. Hos Sendify är det ett kvitto: uppladdningen räknas först när de svarat ja. Hos FedEx var det ett antagande — flaggan sattes så fort appen bett om ETD och blev falsk bara om FedEx nekade bokningen med ett fel som pekade på ETD. En bokning som gick igenom tyst utan att fakturan tagits emot lämnade flaggan sann, och då kom ingen ruta och inget papper.
Nu krävs FedEx eget kvitto — completedEtdDetail, mapp-id och en rad per dokument. Saknas det har ETD inte hänt, hur tyst bokningen än gick, och de tre exemplaren går till skrivaren. Uppgiften har alltid räknats fram och kallats «bevis, inte antagande»; det var bara ingen som lät den avgöra något.
Raden «Handelsfaktura: elektroniskt till tullen» går på samma kvitto. Förut kunde den stå grön samtidigt som rutan bad om papper — två rader intill varandra som sa olika saker, vilket gör att man slutar tro på båda.
Inställningen för vilken skrivare handelsfakturan går till fanns, men hela rutan var dold så länge ni bara har en skrivardator. Nu visas den från och med en: det är också här man läser vart ett papper går, och den frågan ställer man lika gärna med en skrivare som med tre. Sorten heter numera «Handelsfaktura och fraktdokument» i stället för «Tullfaktura».
Handelsfakturan skrev ut varenda nummer ni har inlagt — svenskt momsnummer, brittiskt, EORI, VOEC — på varje sändning. Fraktbolagen har alltid fått ett urval; pappret fick högen. Nu går båda genom samma regel: momsnumret och EORI alltid, det landsspecifika slår ut det allmänna av samma sort, och VOEC bara till norska privatpersoner. En norsk företagskund fick förut ett VOEC-nummer på sin faktura, och det kan i värsta fall ge moms två gånger.
Avsändarens e-post och telefon stod tomma på handelsfakturan. Adressen kommer ur miljövariablerna, men kontaktuppgifterna har sedan länge gått att skriva in i appen — och varje anrop till fraktbolagen väger appens ruta mot miljövariabeln mot Fortnox. Pappret gjorde inte det, så stod numret bara i appens ruta blev fälten tomma. En tulltjänsteman som undrar över en vara hade ingen att ringa. Fyll i dem under Inställningar → Frakt om de saknas.
Handelsfakturan: tyst när den går digitalt, ett rop när den inte gör det2.6.3
2026-08-31
Du hade rätt igen. Gick fakturan upp till Sendify är den inlämnad, och då ska ingen ruta be om en utskrift av den. Den bad ändå, varje gång. Nu står bara raden «uppladdad till Sendify — skickad elektroniskt, inget papper behövs».
Gick den INTE digitalt är det tvärtom: tre exemplar går rakt till A4-skrivaren av sig själva, och en ruta lägger sig över skärmen — KOM IHÅG 3 KOPIOR AV HANDELSFAKTURAN I EN PLASTFICKA! Ett till avgångstullen, ett till mottagarlandets, ett till kunden, vilket är vad fickan är gjord för.
Rutan gäller nu båda fraktvägarna och ställer en enda fråga: kom sändningen i väg utan digital handelsfaktura? Förut hängde den bara på FedEx ETD. En Sendify-sändning som inte fick upp sin faktura gick i väg under tystnad.
Bad Sendify inte om någon faktura fast sändningen lämnar EU byggs den ändå, skrivs ut och rutan kommer. Tullen vill ha en oavsett vad prislistan tycker, och en kartong som står i Oslo kostar mer än tre papper.
Regeln ligger i lib/tullpapper.js med tolv kontroller. Tvekan faller åt rätt håll: vet appen inte om fakturan gick digitalt skrivs pappret ut. En sändning som fastnar i tullen upptäcks en vecka senare av någon annan; ett papper för mycket upptäcks direkt.
Handelsfakturan läggs undan för hämtning även när den gick digitalt. Den syns inte som en utskriftsknapp, men finns kvar under Papper i fraktlistan den dagen tullen ringer och frågar.
Bilen är redan beställd när Sendify bokat2.6.2
2026-08-31
Efter en Sendify-bokning stod det «upphämtning bokas hos fraktbolaget, inte härifrån». Det var fel, och du hade rätt: hos Sendify ÄR bokningen beställningen av bilen. Tiden går med i prisfrågan och raden du väljer bär det fönster bolaget lovar — hela deras API har inte en enda rutt för att boka en upphämtning.
Rutan skickade alltså iväg någon för att göra om något som redan var gjort, och i värsta fall beställa en andra bil som kör förgäves. Nu står det i stället «Bilen är redan beställd» med tiden fraktbolaget lovat: «hämtas i morgon 09:00–12:00».
Samma sak i fraktlistan. Där stod «Upphämtning bokas hos DHL, inte härifrån» — nu står fönstret från bokningen.
Upphämtningssidan varnar. Kommer man dit från en order som redan är bokad med Sendify eller PostNord säger den vilket bolag som kör och att en bokning här beställer en FedEx-bil till. Servern har alltid skickat med den uppgiften; sidan läste den aldrig.
Sendify-bokningens svar satte fältet «dokument» två gånger, och den tomma vann. Handelsfakturorna som just laddats upp och lagts i utskriftskön listades därför aldrig under «Papper att skriva ut».
Provet vaktar den halva som kan gå sönder tyst: att upphämtningstiden och portens öppettider verkligen följer med i varje prisfråga. Gör de inte det är fönstret på raden inget löfte, och «bilen är redan beställd» blir en osanning som upptäcks först när en kartong står kvar på kajen.
Notisen gäller ordrar att packa — inte webbordrar2.6.1
2026-08-31
Du hade rätt. Notisen satt på ordern, och då gick den ut för allt som kom in i Fortnox — även ordrar från webbshoppen, som aldrig får någon plocklista. Vår referens är tom på dem, och appen sorterar bort dem med flit.
En notis om något som inte ska packas är en notis man lär sig svepa bort. Och den som lär sig svepa bort notiser sveper bort dem alla, också den som betydde något.
Nu hänger notisen på plocklistan: «Ny order att packa · 40123», och trycker du på den öppnas plockningen direkt. Den går alltså precis när pappret läggs i skrivarkön, och bara för de ordrar som faktiskt ska plockas för hand.
Stämpeln flyttade med, från ordern till rundan. Samma runda kan aldrig avisera två gånger, hur många avläsningar som än går samtidigt — och en runda som aviserats innan notiserna slogs på kan fortfarande avisera efteråt.
Tre nya kontroller mot en riktig databas: att en runda bara delas ut en gång, att avstängningen i inställningarna tystar den utan att bränna stämpeln, och att fem rundor blir en notis i stället för fem.
Ingen frakt utan vikt och mått — och en notis när ordern kommer in2.6.0
2026-08-31
ANGE VIKT! ANGE MÅTT! Saknas något på ett kolli kommer en ruta som lägger sig över allt, och knappen till frakten kommer inte förbi den. Raden «hoppa över om ni inte mäter» stod där förut och lästes precis så — och sedan stod man vid fraktsteget med en tejpad kartong och ett nej från fraktbolaget.
Rutan ger två vägar för varje uppgift, för det finns två rätta svar. Måtten: välj en sparad kartong ur listan, eller mät. Vikten: använd den beräknade vikten ur artikelregistret, eller väg. Ingenting fylls i av sig självt — appen ska inte gissa åt någon som står vid en våg.
Den beräknade vikten erbjuds bara när ordern går i en enda kartong. Talet är hela orderns, och att lägga det på var och en av tre lådor hade tredubblat fraktvikten — ett fel som syns först på fakturan.
Går ordern i flera kartonger frågar rutan om en i taget. Det man fyllt i står kvar med en bock och går att ändra utan att börja om.
Hämtar kunden själv finns ingen kartong att mäta. Då finns en väg ut som avslutar rundan och skriver packsedeln — men den går inte till frakten. Till fraktbokningen kommer man aldrig utan mått.
Notis på telefonen när en order kommer in: ordernummer, kund och belopp, inom en minut från att den sparas i Fortnox. Trycker man på den öppnas ordern. Kommer fler än tre på en gång blir det en enda notis med räkningen — tio notiser i rad sveps bort i en rörelse, och den elfte som betydde något sveps bort med dem.
Notisen hänger på att ordern är ny och inte på att en plocklista skrevs. En order från webbshoppen får ingen lista automatiskt, och det är ofta just den man vill veta om. Den går att stänga av under Inställningar → Larm och notiser.
«Följer med sändningen» är borta från upphämtningssidan. Listan sa samma sak om varje rad — hos Sendify beställs bilen med bokningen, hos PostNord går den i brevbärarrundan — och det är två fasta regler, inte något som ändrar sig per sändning. Fönstret står kvar på fraktraden inne på ordern, som är där man väljer det.
UPS erbjuds inte längre2.5.0
2026-08-31
UPS är borttaget ur fraktlistan. Vi har provat tre sätt att räkna ut deras upphämtningsfönster och till sist frågat dem rakt ut vilka tider som fungerar — de svarade med en lista tider, och bokningen nekades ändå med «pickup time is too late». Ett alternativ som står först i listan för att det är billigast och sedan inte går att boka kostar mer tid än det sparar pengar.
De syns inte bland Sendifys priser, frågas inte om tider, och står inte längre bland de uteslutna bolagen — den raden såg ut som något att rätta till, och det fanns inget att rätta.
Redan bokade UPS-sändningar rörs inte. De behåller sitt märke och sin spårningslänk i fraktlistan; det är erbjudandet som är borta, inte historiken.
Under Inställningar → Frakt finns nu «Bolag som inte erbjuds», där varje fraktbolag går att slå av och på. UPS står avstängt från start och kan slås på igen den dagen de börjar fungera, utan att appen behöver läggas upp på nytt.
Bolagsnyckeln träffar bara på hela ord. Ett bolagsnamn som slutade på «Groups» blev UPS — med UPS logga och UPS spårningslänk — och hade nu dessutom blivit avstängt utan att någon bett om det.
Appen frågar fraktbolaget vilka tider som fungerar, i stället för att gissa2.4.1
2026-08-31
Jag slutar räkna fram upphämtningstider. Vi vet inte UPS regler och kommer inte att få veta dem — varje bolag har sina egna sista tider, rutter och undantag, och inget av det står i Sendifys spec. En framräknad tid som «borde» fungera är en gissning, och en fel gissning kostar en bokning.
Ny knapp: «Visa tider som fungerar». Appen provar några tider i närheten av den du angett, med samma prisfråga som annars, och visar dem bolaget faktiskt svarade ja på — med pris och upphämtningsfönster för var och en.
Väljer du en av dem bokas exakt den tiden. Bokningsmärket kommer ur provet, så priset hämtas inte om — ett tredje tillfälle för verkligheten att hinna ändra sig är ett för mycket.
Knappen finns på tre ställen: när du ändrar upphämtningstid, i rutan som säger att bolaget vill hämta på en annan tid, och överst i felmeddelandet när en bokning nekats. Det sista är där man är när man behöver den.
Svarar inget bolag på någon av tiderna står det rakt ut — då är det inte tiden som är problemet, och det sparar en runda till av försök.
Utkasten städas. Varje prov skapar en sändning hos Sendify; de som inte väljs raderas direkt, och när du valt en försvinner de andra.
Klockan, fraktbolagets egen tid, och en lista över vad som faktiskt finns hos Sendify2.4.0
2026-08-31
Du hade rätt om tiden. Servern kör i UTC, och klockslagen på papperen formaterades utan tidszon — två timmar fel på sommaren, en på vintern. En plocklista som kom ur skrivaren 14:05 hade «Utskriven 12:05» i huvudet. Samma papper ritas dessutom av två filer, en i webbläsaren och en på servern, så de skilde sig åt med två timmar. All tid formateras nu genom ett ställe med tidszonen utskriven.
Ny lista: Inställningar → Fraktbolag → Sendify → «Visa sändningar hos Sendify». Den hämtar deras egen lista och visar vad som faktiskt finns — bokat eller utkast, med spårningsnummer och pris. Sändningar som är bokade men okända för appen märks särskilt: de kostar pengar och står inte på någon order här. De går att avboka direkt därifrån.
Den finns för att en bokning kan lyckas hos fraktbolaget och ändå se ut som ett fel här. Sendify svarar nej, appen sparar ingenting, och sedan kommer spårningsmejlen om ett paket som är på väg. Det går inte att resonera sig till svaret — deras lista är det enda som vet.
«Pickup time is too late», även med 09:00–16:00 ifyllt. Rutan ändrar vår önskan, inte fraktbolagets fönster — och det är vår önskan som fryses in i priset. Svarar UPS «vi kommer 09–12» och klockan hunnit bli tolv är en begäran om nio i dag en omöjlighet, hur man än fyller i rutan.
Nu frågar appen först. Väljer du ett alternativ vars tid inte går ihop kommer en ruta med båda tiderna och en knapp som hämtar priset igen med bolagets egen tid. Har fönstret redan passerat föreslås närmaste möjliga — nästa vardag, helger borträknade. Ändras dagen står det uttryckligen att kartongen behöver stå klar då i stället.
Rutan kommer bara när det spelar roll. Bolagens fönster är nästan alltid smalare än det vi ber om, och det är inget problem så länge tiden ligger inuti.
FedEx adressförslag frågar inte längre om och om igen. Svaret låg bara i minnet så länge du stod kvar på sidan — gick du ur ordern och in igen ställdes frågan på nytt, även efter ett ja. FedEx putsar gärna vidare på det de själva föreslog, så det blev en loop utan slut. Nu sparas svaret på ordern, tillsammans med adressen det gällde; ändras adressen på riktigt är det en ny fråga.
«Sendify hade inget att erbjuda» stod framme innan man ens hunnit fråga. Appen kunde inte skilja på «inte frågat än» och «inget svar».
Klockan gick två timmar fel, och fraktbolagets egen tid används vid bokning2.3.3
2026-08-31
Du hade rätt om tiden. Servern kör i UTC, och klockslagen på papperen formaterades utan tidszon — alltså två timmar fel på sommaren och en på vintern. En plocklista som kom ur skrivaren 14:05 hade «Utskriven 12:05» i huvudet, och packsedeln sa fel tid för när ordern plockades.
Värre: samma papper ritas av två filer — en i webbläsaren och en på servern — och webbläsaren står i svensk tid. Två dokument som ska vara identiska skilde sig alltså med två timmar. Nu formateras all tid genom ett ställe med tidszonen utskriven, och det gäller även diagnoserna och notiserna.
«Pickup time is too late», även när du skrev 09:00–16:00. Rutan ändrar vår önskan, inte fraktbolagets fönster — och det är vår önskan som fryses in i priset. Svarar UPS «vi kommer 09–12» och klockan hunnit bli tolv är en begäran om nio i dag en omöjlighet, oavsett vad som står i rutan.
Nu frågar appen först. Väljer du ett alternativ vars tid inte går ihop med din kommer en ruta: «UPS vill hämta på en annan tid» med båda tiderna, och en knapp som hämtar priset igen med deras tid. Har fönstret redan passerat föreslås närmaste möjliga i stället — nästa vardag, helger borträknade.
Rutan kommer bara när det spelar roll. Bolagens fönster är nästan alltid smalare än det vi ber om, och det är inget problem så länge tiden ligger inuti. En fråga vid varje val hade blivit en ruta man klickar bort utan att läsa.
Ändras dagen står det uttryckligen att kartongen behöver stå klar den dagen i stället.
«Sendify hade inget att erbjuda» stod framme innan man ens hunnit fråga. Appen kunde inte skilja på «inte frågat än» och «inget svar»; nu kan den det, och rutan där man anger upphämtningstid visas som den ska.
Rubriken heter nu «Boka frakt med Sendify? Ange upphämtningstid».
Sendify frågas först när du sagt när kartongen är klar2.3.2
2026-08-31
Upphämtningsrutan är flyttad. Den ligger nu där Sendifys priser kommer, som en fråga: «Boka med Sendify? Ange upphämtningstid». Först när du fyllt i den hämtas deras priser, och då fälls rutan ihop till en rad du kan trycka på för att ändra.
FedEx och PostNord kommer direkt som förut. Sendify frågas inte alls förrän du bett om det — det gör första hämtningen snabbare, och slutar fylla deras lista med utkast för sändningar ingen tänkt skicka.
Varje fraktalternativ har en sista beställningstid som Sendify svarar med — «boka före 12:00». Passeras den nekar fraktbolaget, och beskedet blir «för sen upphämtningstid», som låter som att tiden du valde är fel i stället för att du är för sen med att fråga. Nu gråas raden ut när tiden passerat, medan du tittar på den, och den går inte att trycka på.
Klockan räknas om var halvminut medan sidan står öppen. Förut kunde en rad stå kvar som valbar en timme efter att den slutat gälla.
Bokningen kontrollerar samma tid innan något skickas, och säger att det gäller klockan och inte priset.
Går bokningen ändå inte igenom står felet kvar på skärmen i stället för att glida förbi som en notis — med ett hopfällt underlag: vilken tid appen bad om, vilket fönster raden lovade, vilken sista beställningstid som gällde, och Sendifys anropsnummer. Ett nej från ett fraktbolag är sällan självförklarande, och utan de uppgifterna blir felsökningen gissningar.
Etiketten kom inte ut, fraktraden nekades, och upphämtningstiden går att välja2.3.1
2026-08-31
«e is not a function» — etiketten kom aldrig ut. PDF-biblioteket är WebAssembly och laddar sin egen fil bredvid sig, men byggverktyget bytte ut den mot en webbadress. Modulen fick alltså en textsträng där den väntade sig programmet. Det syntes aldrig lokalt, för utvecklingsläget packar inte servern på samma sätt. Nu är biblioteket undantaget, och det är kontrollerat i bygget och inte gissat.
Samma fel slog mot allt som läser eller ritar en PDF: fraktetiketterna från Sendify, handelsfakturan, och A4-utskriften av uppladdade PDF:er. Alla tre fungerar nu.
«Fortnox svarade 400: ogiltig momskod E» — fraktraden kom inte in på ordern. Vid genomgången ändrade jag fraktraden till att skicka tillbaka allt Fortnox lagt på orderns rader, för att inte råka nollställa projekt och lagerställe. Men Fortnox lägger fler fält på en rad i svaret än de tar emot i en skrivning. Nu skickas en uttrycklig lista över de fält de dokumenterar som skrivbara — projektet och lagerstället följer fortfarande med.
Säger Fortnox nej till fraktraden står det nu i felet vilka extra fält raden bar. «Ogiltig momskod E» utan att veta vilket fält som bär koden är inget att gå på.
Du kan nu välja upphämtningstid innan priserna hämtas — precis som du föreslog. Dag, klar från, och när ni stänger. Sendify binder både vilka bolag som svarar och vilket fönster de lovar till den tiden, så det är en del av frågan och inte något man fyller i efteråt.
Det var också felet bakom «för sen upphämtningstid». Tiden räknades fram när priserna hämtades och frystes in i priset: hämtade du priserna på morgonen och bokade efter lunch bad bokningen fortfarande om förmiddagen. Nu säger appen ifrån själv, innan bokningen görs, och säger att det gäller klockan och inte priset.
En tid som redan varit går aldrig iväg till fraktbolaget. Väljer du en passerad timme flyttas den fram till närmaste hela timme, och det står på skärmen att den flyttades.
Stängningstiden skickas nu med. Den var hårdkodad till 16:00, vilket ger bilar som kommer när porten är låst.
Handelsfakturan skrivs och laddas upp — Sendify bokar utanför EU2.3.0
2026-08-28
Sendify bokar ingen sändning ut ur EU förrän handelsfakturan ligger uppe hos dem: «missing documents: [customsinvoice]», och hos DHL dessutom [salesinvoice]. Appen läste aldrig fältet som talar om vilka papper en rad kräver, så varje sändning till Norge föll — och felet lästes som ett utgånget pris, så man hämtade priserna igen och fick exakt samma svar.
Nu skriver appen handelsfakturan själv, som PDF, och laddar upp den innan den bokar. Uppgifterna är samma som FedEx får elektroniskt, ur samma register: två dokument som säger olika saker om samma sändning är värre än ett.
Pappret innehåller det tullen frågar efter — avsändare och mottagare med moms- och EORI-nummer, varje varurad med engelsk benämning, HS-kod, ursprungsland, antal och värde, leveransvillkor, antal kollin, vikt och en försäkran att skriva under. Frakten står inte som en varurad, och tullvärdet räknas på varorna.
Fakturan hamnar också i utskriftskön under «Papper att skriva ut», för de gånger tullen vill ha den i en påse på kartongen.
Kräver alternativet ett exportföljedokument (ABD) säger appen det rakt ut. Det utfärdar tullen, och det kan ingen app skriva åt er.
Saknar en artikel HS-kod stoppas bokningen innan fakturan skrivs — samma spärr som FedEx-vägen redan hade. Ett papper med luckor upptäcks i tullen och inte vid packbordet.
Felmeddelandena skiljer nu på fyra sorters nej. «Papperen saknas» säger att papperen saknas, inte att priset gått ut.
PDF-skrivaren är vår egen och drar inte in något nytt beroende. Provverktyget verktyg/fakturaprov.mjs bygger en faktura, läser tillbaka texten ur PDF:en och kontrollerar att varje uppgift står där — plus att kolumnerna inte krockar och att sextio varurader bryter till flera sidor med tabellhuvud på varje.
Fraktartikeln räknas aldrig som en vara2.2.1
2026-08-28
Nej — artikel 100 kommer inte med på tullfakturan. Men bara för att «100» stod hårdkodat på tre ställen i tre filer, medan artikelnumret samtidigt är en inställning. Hade du bytt det till något annat hade frakten börjat stå som en varurad på tullfakturan, och som en rad att bocka av på plocklistan, utan att något sagt ifrån.
Nu ligger regeln på ett ställe och läser inställningen. Byter du nummer följer alla tre reglerna med: bort från plocklistan, bort från tullfakturan, bort från tillverkningsförslagen.
100 fortsätter gälla även om du byter, för gamla ordrar bär det numret. En regel som slutar gälla bakåt är sämre än en som är för bred.
Det går också att lägga till fler artiklar som inte är varor — emballage, avgifter — under inställningen ej_varor.
Tullvärdet räknas som förut på varorna, inte på frakten. Fraktkostnaden är en kostnad, inte ett föremål.
Valutaväxling, Sendify utanför EU, och vart pappret går2.2.0
2026-08-28
Frakten hamnar nu på ordern även när valutorna skiljer sig. PostNord och Sendify svarar alltid i kronor — är ordern i euro skrevs förut ingen rad alls, och sändningen fakturerades aldrig. Kursen hämtas från ordern i Fortnox, alltså exakt den kurs fakturan använder, så raden kan inte glida isär från resten av ordern.
På bokningskvittot står hela räkningen: 450 SEK ÷ 11,49 = 39,16 EUR, avrundat uppåt till 40. En siffra som inte är den du såg i listan ska gå att härleda.
Avrundningen sker efter växlingen och i orderns valuta — det är den siffran kunden ser. Saknar ordern kurs i Fortnox skrivs ingen rad, och det står varför. Växlingen går att stänga av under Inställningar → Fraktbolag.
Sendify svarade «For shipments outside the EU, please visit our website» på varje order till Norge, Storbritannien och USA. Deras API kräver en flagga för sändningar utanför unionen som vi inte skickade. Nu skickas den — och säger de ändå nej står det som en not och inte som ett rött fel, för FedEx tar sändningen ändå.
Appen säger nu vart pappret går. «Skickad till skrivaren» ersatt med datorns namn — eller «första lediga av 3», eller «ingen etikettskrivare inlagd — pappret blir liggande i kön», vilket är det man behöver veta och som inte syntes alls.
Upphämtningssidan visar alla tre bolagen. Sendify har ingen upphämtning att boka — bilen beställs i samma stund sändningen bokas, och tidsfönstret sparas nu och står under «Följer med sändningen». PostNord Home Small går i brevbärarrundan. FedEx bokas som förut.
Ny ruta: anvisning till chauffören. Portkod, vilken port kartongen står vid, lastkaj. Sendify tar fälten vid bokningen och appen skickade ingetdera.
Nytt provverktyg: verktyg/fraktradprov.mjs kör tretton fall genom fraktraden med Fortnox stubbat — växlingen, avrundningen, valutor som noteras per hundra, och att inga andra fält på ordern rörs.
Varubrev visas för allt som faktiskt går att skicka2.1.0
2026-08-28
PostNord har två gränser, och appen förväxlade dem. Brevlådemåttet 34 × 24 × 7 cm avgör om paketet kostar extra — produktvillkoren 3 kg, 60 cm längsta sida och 90 cm sammanlagt avgör om det överhuvudtaget är tjänsten. Appen stoppade på 7 cm tjocklek, alltså på fel nivå.
Följden var att Home Small göms för sändningar som hade varit både billigast och snabbast. En kartong som är 12 cm tjock går utmärkt att skicka — den kostar några kronor extra och läggs vid dörren i stället för i lådan.
Nu stoppar appen bara på produktvillkoren. Är kollit större än brevlådan visas raden ändå, med texten «Tillägg för särskild hantering» och exakt vilket mått det är som spräcker — «12 cm tjockt (lådan tar 7)». Beslutet är ditt, inte appens.
Under PostNords minimimått (15 × 10 × 1,5 cm) står det också på raden. Det stoppar inte heller — men ett litet och tunt kolli är det som kommer bort i sorteringen.
Måtten är kontrollerade mot PostNords tjänstebeskrivning och mot Särskilda villkor PostNord Home Small från maj 2026, och åtta mättfall ligger nu i provverktyget.
Genomgång del 5: saldojusteringar, och prov mot en riktig databas2.0.1
2026-08-28
En inleverans kan inte längre bokas in dubbelt. Faller nätet efter att Fortnox tagit emot rörelsen sa appen «kan ha gått fram ändå» — och den som tryckte igen fick +50 en gång till. Varje knapptryck bär nu ett eget nummer, så ett omförsök av samma tryck svarar med justeringen som redan gjorts.
Två personer som räknar samma artikel samtidigt kan inte längre båda lägga på sin differens. Förut läste båda 100, båda skickade 120, och saldot blev 140.
Samma sak för delräkningar på artiklar som ligger på två ställen: en färdig räkning kunde raderas av den andra telefonens sparning, och artikeln räknades då som oräknad och skickades aldrig — tyst.
Nytt provverktyg: verktyg/dbprov.mjs kör hela schemat och tjugo prov mot en riktig Postgres. Det är den sortens fel som inte syns i ett bygge — en fråga som ser rätt ut men räknar fel, ett villkor som släpper igenom två samtidiga tryck, en migrering som kastar på en tom databas.
Genomgång del 4: gränssnittet, EAN och veckobrevet2.0.0
2026-08-28
Inloggningsknappen fastnade för alltid om nätet föll mitt i. Knappen stod avstängd utan felmeddelande, och appen gick inte att använda förrän man tvingade fram en omladdning.
Samma sak i artikelrutan: «Sparar…» som aldrig gick tillbaka, och en borttagen bild som kvitterades grön fast borttagningen aldrig nådde servern.
Två sökningar som är i luften samtidigt skriver inte längre över varandra. Tryckte du kategori A och sedan B kunde A:s artiklar stå kvar under B:s markerade knapp.
Kategorierna finns nu även när du går direkt till Inventering. «Vad ska räknas?» erbjöd bara «Hela lagret» om man inte först gått omvägen via Artiklar.
«Saldon uppdaterade för N sekunder sedan» räknas om medan appen är öppen. Låg telefonen på bänken stod raden kvar på tolv sekunder en timme senare, och varningen om gamla saldon slog aldrig till.
Krysset på notisrutan stänger rutan i stället för att utlösa iOS-frågan man just sagt nej till.
Plock och Tillverkning i flikraden laddar inte längre om hela sidan. Att svepa dit var omedelbart medan knappen gav flera sekunders vit skärm.
Kameran kan inte längre öppna en artikel efter att du tryckt Stäng.
Versionsvakten vet vilken version fönstret startade med, även när telefonen saknade täckning vid start. Förut kunde den ta det nya bygget som sin egen utgångspunkt och sedan aldrig säga till.
EAN: två personer som delar ut koder samtidigt kan inte längre få samma nummer. Och numret loggas innan det skrivs till Fortnox — förut kunde en tappad uppkoppling lämna koden i Fortnox utan spår i appen, varpå nästa omgång delade ut den igen.
Veckobrevet kan inte gå ut tre gånger samma måndag när tre personer öppnar appen samtidigt.
Genomgång del 3: tull, Fortnox-synk, tillverkning1.99.0
2026-08-28
Fjorton EU-länder behandlades som utanför EU. Står det «Portugal» i klartext i Fortnox — och landfältet är fritext — kunde appen inte tyda det, och en order dit hamnade bland det som brådskar på tullsidan och nekades bokning med «artiklar saknar HS-kod», trots att ingen tullfaktura behövs. Alla tjugosju står med nu, på både svenska och engelska.
Rutorna i tulltabellen kontrolleras nu som bulkrutan gör. «845» gick att spara som HS-kod och «Tjeckien» som ursprungsland — och det gick rakt ut på handelsfakturan, eftersom bokningen bara kontrollerar att en HS-kod finns, inte att den duger.
Provkörningens siffra nollställs när listfiltret ändras. Provade du på en kategori och sedan bytte filter stod knappen kvar på «Sätt för 12 artiklar» medan körningen träffade hela registret.
Saknas ursprungsland deklareras varan fortfarande som svensk — men nu står det på kvittot vilka artiklar det gäller. En felaktig ursprungsdeklaration är er underskrift.
-CA-artiklarna räknas inte längre in i tullsidans täckning, syns inte i tabellen och kommer inte med när uppgifter hämtas från butiken. Regeln fanns i tre versioner som var oense; nu finns den på ett ställe.
«Hämta från butiken» gör en skrivning i stället för en per artikel. Vid tusen artiklar sprängde den tidsgränsen mitt i, och man fick en halv import och ett nätverksfel.
Ordersynken flyttar inte fram sitt tidsfönster när den stannat på femtio sidor. Ordrarna som inte hann med hämtades förut aldrig — nästa körning frågade efter det som ändrats sedan «nu».
Orderraderna byts ut i stället för att raderas och läggas tillbaka. Under några millisekunder hade ordern noll eller halva sina rader, och en plocklista eller behovsuträkning som råkade läsa just då räknade på en halv order.
Sidan Skillnader hämtade hela Fortnox artikelregister och hela Shopifykatalogen — och rensade appens artikeltabell mot resultatet — vid varje besök, automatiskt. Nu hämtas det som ändrats, och bara när du trycker på knappen.
Fortnox säger nu ifrån när orderrader inte går att hämta. Nekas behörigheten gjorde appen 120 misslyckade anrop var femte minut och svarade att allt gick bra.
Produkter med fler än hundra varianter i Shopify tappade resten helt. De syntes som föräldralösa på Skillnader, och deras streckkoder och tulluppgifter uppdaterades aldrig.
Fraktraden kan inte längre nollställa fält på orderns andra rader. Raderna byggdes om ur tio kända fält, och allt annat Fortnox hade på dem — projekt, kostnadsställe, ett lagerställe satt på raden — försvann i samma sats.
Tillverkning: en order som redan levererats kunde få ett behov på sig igen. Spärren fanns i kommentaren men inte i koden, så verkstaden kunde köra om ett jobb som var gjort.
Skapa-knappen la upp ett annat antal än kortet visade — alltid större. De två vägarna räknade med olika tidsfönster.
En tillverkningsorder går inte längre att ändra eller avbryta medan den bokas in i Fortnox. Med två minuters tidsgräns fanns det gott om utrymme att hinna, och resultatet blev lager inbokat i Fortnox på en order som stod som avbruten.
-CA-artiklar går att undanta från tillverkningsförslag. Mönstret `*-CA` matchade aldrig — undantagslistan kunde bara uttrycka början av ett nummer, inte slutet.
Shopify-installationens kontrollvärde gick att gå förbi när ingen installation pågick.
Genomgång del 2: plockningen och utskriftskön1.98.0
2026-08-28
Rättade vikter försvann tyst. Rättade du en vikt efter att rundan var avslutad kastades den — skärmen sa «Packsedel skickad till skrivaren», och frakten bokades sedan på den gamla vikten. Nu sparas vikterna, och statusen läses om så att rätt knapp visas.
Att spara om vikterna raderade spårningsnumren på kollina. Kollina skrevs om från grunden och numren skrevs aldrig tillbaka — permanent, och just den uppgiften är hela skälet till att listan Bokat finns.
En borttagen plocklista gick inte att skapa på nytt. Raden låg kvar märkt som avbruten, och både avläsningen och knappen på ordersidan hoppade över ordern för alltid. Nu raderas raden — och gamla avbrutna rader räknas inte längre.
Handskannern går inte längre igenom i frakt- och viktvyn. En kod som sköts av vana när kartongen stod på vågen bockade av en rad på en runda som redan lämnat bordet, medan samma vara stod på restlistan.
Samma artikel på två orderrader går att skanna två gånger. Sökningen tog alltid första raden, så när den var avbockad svarade appen «är redan avbockad» och den andra raden gick aldrig att skanna.
Två personer kan inte längre avsluta samma runda samtidigt och få en dubblerad omgång två — eller ett rått databasfel som meddelande.
«Skriv ut packsedeln igen» skriver faktiskt ut igen. Knappen körde avslutet en gång till, och eftersom rundan redan var klar lades ingenting i kön — men skärmen kvitterade ändå. Man stod och väntade vid en skrivare som aldrig skulle få något.
Ett papper som inte gick att skriva ut malde i kön i evighet och blockerade allt bakom sig. Är Zebran avstängd stannade plocklistor och packsedlar helt, och felet syntes aldrig som fel. Nu går raden till fel efter fem försök och kön går vidare.
«Skriv ut igen» på ett fraktdokument som bara skulle sparas gav ett papper som aldrig kom — rollen var fel och ingen dator hämtar den. Och på en rad som just skrevs ut gav den två papper. Båda rättade.
Tulluppgifter som inte gick att kontrollera såg ut som «inga brister». Ett databashack gjorde alltså att varningen försvann tyst — precis det den finns för att förhindra.
Säkerhet: en adress i utskriftskön kunde skrivas så att den ledde ut ur appen, och agentens nyckel följde med dit. Kontrollen är omgjord. En agentnyckel kan inte längre lägga papper i kön, och vilken dator som hämtat ett papper avgörs av vem som loggat in — inte av ett namn i adressraden.
Uppladdade PDF:er har nu ett tak på tjugo sidor, i stället för att en fyrtiosidig fil kunde ge fyrtio ark ingen bett om.
Genomgång av hela appen — del 1: databasen, Fortnox och frakten1.97.0
2026-08-28
Frakten går inte längre att boka två gånger. Trycker du på Boka och täckningen hänger, och du trycker igen, skapades förut två skarpa sändningar hos fraktbolaget — båda fakturerades, och bara den sista gick att avboka. Nu tas bokningen i anspråk i samma sats som den prövas, så bara det första trycket kommer förbi.
FedEx bokade också om sig själv i onödan. Appen backar ur elektronisk tullfaktura när FedEx klagar på den — men villkoret var bara «bad vi om den?», och det gör appen alltid. En inrikessändning där FedEx svarade långsamt bokades alltså en gång till, med exakt samma innehåll. Nu backar den bara när felet faktiskt handlar om tullfakturan.
Sendify: bokningen sparas nu innan etiketten hämtas. Föll etikettutskriften sparades ingenting alls — sändningen fanns och kostade pengar, men rundan såg obokad ut och sändningsnumret som behövs för att avboka fanns ingenstans. Kommer etiketten inte fram står det nu rakt ut på kvittot, i stället för «Bokad — 0 etiketter».
En prisfråga till Sendify som misslyckas städar undan sitt utkast. Förut blev det liggande i deras lista varje gång en adress var fel.
Bokar du om en runda som varit avbokad visas den inte längre som avbokad — och går att avboka igen. PostNord-bokningar skriver dessutom över förra bolagets pris, valuta och bokningsnummer i stället för att låta dem stå kvar bredvid ett varubrev.
Fraktlistan säger vilket bolag som faktiskt kör. Allt som inte var PostNord stod som FedEx, även DHL- och UPS-sändningar bokade via Sendify, och spårningslänken pekade alltid på FedEx spårning — som svarar «hittades inte» på ett DHL-nummer.
Knappen Boka upphämtning visas bara för FedEx. Appens upphämtningssida bokar en FedEx-bil, och den erbjöds även efter en PostNord- eller DHL-bokning.
Varubrev visas inte längre som bokbart när mottagaren saknar både mobil och e-post. PostNord aviserar leveransen och nekar utan dem — förut kom nejet först när kartongen var tejpad.
FedEx-priset tar hänsyn till om mottagaren är privatperson. Uppgiften hämtades redan för tullens skull men nådde aldrig adressen, så varje offert till en konsument saknade FedEx tillägg för privatadress — de klassar adressen själva och efterfakturerar.
Priset för ovägda kollin räknades tre gånger för högt på en runda med tre kartonger: hela ordervikten sattes på varje kolli. Och viktgränsen 68 kg prövas nu per kolli, som den gäller, i stället för mot summan — tre paket à 30 kg sorterade bort varenda pakettjänst.
Avrundningen av fraktraden går att stänga av. Sätter du steget till 0 betydde det förut «använd standardvärdet», så varje bokning rundade ändå upp till närmaste femtiolapp medan inställningen visade 0.
Svarar FedEx med ett belopp men utan valuta skrivs ingen fraktrad. Förut gissades kronor, och gissningen satte hela valutakontrollen ur spel — ett belopp i dollar kunde hamna som kronor på ordern.
Långa kund-, gatu- och ortnamn klipps till FedEx 35 tecken i stället för att stoppa bokningen. En kund med ett långt namn gick helt enkelt inte att skicka till.
Leveransbeskedet på en fraktrad kunde visa «Fuel Surcharge» eller tjänstens eget namn i stället för antal dagar. Sökningen efter transittid tog vilket beskrivningsfält som helst.
Databasen: en kolumn lades till före tabellen som skulle bära den. Hela migreringen är en enda sats, så på en tom databas skapades varken plockrundor, kollin, tulluppgifter eller utskriftskön. I drift märktes ingenting — det hade slagit till först den dagen appen sattes upp på nytt.
Sex rutter körde hela migreringen vid varje anrop, bland dem inloggningen som körs innan någon loggat in. Det tar lås på alla stora tabeller och räcker för att blockera resten av appen när flera telefoner öppnas samtidigt.
Fortnox-inloggningen kunde förnyas sönder. Två samtidiga anrop löste in samma engångsbiljett och den långsammare skrev över den nyare — och saknades biljetten i svaret sparades en uppsättning helt utan den, alltså en app permanent utelåst från Fortnox. Båda vägarna är stängda.
Strypte Fortnox ett anrop tappade omförsöket sin tillåtelse och kastade «appen får bara läsa ordrar» — ett fel som pekar på något helt annat än det som hände. Fraktraden hamnade aldrig på ordern.
Adminkoden går inte längre att gissa via adressraden: spärren låg bara i den ena av två vägar in, och räknaren stod stilla i den andra.
Inloggningssidan säger nu ifrån när databasen inte svarar, i stället för att visa en tom personallista utan förklaring.
Ladda upp en PDF och skriv ut den1.96.0
2026-08-28
Under Inställningar → Skrivare och agenter finns nu Skriv ut en PDF. Välj fil, välj A4-skrivaren eller etikettskrivaren, välj antal exemplar. Den läggs i samma kö som appens egna papper och kommer ut på den dator du pekat ut.
Till A4 ritas varje sida om till en bild och läggs på ett eget ark i sin egen storlek. En fyra-gånger-sex-etikett dras alltså inte ut över hela pappret — den ligger kvar i etikettstorlek.
Till etiketten görs sidorna om till ZPL, samma väg som Sendifys etiketter går. Ett papper i kön per sida, så att kolli två går att skriva om utan att kolli ett kommer ut igen.
Rättat: fraktdokument från FedEx ligger i kön som PDF, och skrivaragenten kan inte visa en PDF — den ritade i stället plocklistans mall med fraktdokumentets titel på. Tre exemplar av fel papper. Nu ritas PDF:en om till bilder, och tullfakturan kommer ut som tullfakturan.
Rättat: papper som har en egen sida i appen — tillverkningsorder, kundorder, inventeringsrapport, streckkodsetiketter — svarade «Rundan finns inte» när agenten hämtade dem. Kön bar adressen, men vägen dit gick inte att gå.
Tulluppgifter i klump — och en varning innan kartongen tejpas1.95.0
2026-08-28
Bulkrutan på artikeluppgifter gäller nu alla fyra fälten: HS-kod, ursprungsland, engelsk benämning och nettovikt. Förut gick bara benämningen att sätta för många på en gång, och de andra tre fick skrivas rad för rad.
Urvalet är antingen en hel kategori eller precis det som listan visar — samma sökning, samma kategori, samma filter. Att ändra «ungefär det du ser» är den sortens löfte som gör att man slutar lita på knappen.
Kryssrutan «skriv över» är utbytt mot tre lägen, för det var två frågor som såg ut som en: bara de som är helt tomma, även de som ärver butikens värde, eller allt inklusive det som fyllts i för hand.
Ingenting skrivs innan du sett siffran. Knappen räknar först och svarar med hur många som ändras, hur många som lämnas i fred och vilka artikelnummer som står först i tur. Först då går det att trycka på riktigt.
Appen varnar nu när en order saknar tulluppgifter — i plocklistan, mitt i plockningen och när rundan ska avslutas. Kontrollen fanns sedan tidigare men ställdes först när frakten skulle bokas, och svaret visades faktiskt aldrig någonstans. Då står kartongen packad och varan tillbaka på hyllan.
Varningen gäller bara sändningar utanför EU. Inom unionen behövs ingen handelsfaktura, och att fråga efter uppgifter man inte behöver är det snabbaste sättet att lära folk att blunda för varningar.
Högst upp på artikeluppgifter står nu det som brådskar: artiklarna som saknar något och samtidigt ligger på en väntande order utanför EU. Registret blir aldrig komplett, men den listan går att jaga i kapp.
Knapparna i fraktraden fick rätt storlek1.94.1
2026-08-28
Vikt och mått samt Uppdatera priser är nu två knappar i bredd i stället för tre, och därmed stora nog att träffas med en tumme utan att sikta. Det är de två man använder om och om igen.
Boka senare ligger underst och är röd, lika stor som knappen som bokar. Att gå härifrån utan att boka är ett val med följder — ordern står kvar och någon måste tillbaka till den. Den ska vara lätt att hitta men inte lätt att råka trycka på.
Knappraden ligger still längst ned1.94.0
2026-08-28
Fraktlistan blev lång när tre bolag skulle rymmas, och knappen som bokar hamnade långt under sista raden — man valde en tjänst och fick sedan leta efter knappen. Nu ligger den still längst ned på skärmen.
I raden står också vad som är valt, med pris. En knapp som säger «boka» utan att säga vad är en knapp man tvekar inför, särskilt när listan är utskrollad.
Vikt och mått, Uppdatera priser och Boka senare ligger i samma rad, lika breda — ingen av dem är viktigare än de andra. Den viktiga är den stora knappen under.
Är kollina inte vägda står det på knappen i stället för att den bara är grå.
PostNord-loggan syntes inte: sökvägen var hårdkodad till den gamla filen, som bytte namn när den riktiga loggan kom. Märket hämtas nu ur bolagsregistret som de andra.
Fraktbolagens riktiga loggor1.93.0
2026-08-28
UPS, PostNord, DSV och DB Schenker har nu sina riktiga loggor, inskickade av er. Tillsammans med FedEx och DHL är alla utom Bring äkta.
Alla passas in i samma yta så att raderna ser lika ut. Höga märken som UPS-skölden skalas efter höjden, breda ordbilder efter bredden — annars blir det ena en tunn remsa och det andra spräcker rutan.
Märken med egen bakgrundsfärg behåller den och fyller hela ytan. Inte för att det är snyggt, utan för att appen har både ljust och mörkt läge: en vit logga utan fält försvinner i mörkt läge och en mörk i ljust. Ett eget fält syns i båda.
Originalfilerna ligger kvar i verktyg/loggor-original, så att det går att göra om med andra mått utan att be om dem igen.
Riktiga loggor, och fraktbolagens egna hämttider1.92.1
2026-08-28
DHL och UPS har nu sina riktiga märken — glyferna kommer ur paketet simple-icons och är bolagens egna, med deras varumärkesfärger. Mina handritade skyltar var precis så handritade som de såg ut.
DSV, PostNord, Bring och Schenker finns inte i det paketet och har kvar namnskyltarna tills vidare. Hellre en tom plats som går att fylla än en påhittad logga.
Sendify svarar med ett riktigt upphämtningsfönster per alternativ — vilken dag bilen kommer, mellan vilka klockslag, och när bokningen senast måste vara inne. Det använde appen inte. Nu står det på raden: «hämtas i dag 07:00–17:00» med «boka före 12:00» under.
Sista beställningstiden står på egen rad. Den avgör om man hinner i dag och ska inte behöva letas fram ur en mening.
Vår egen veckodagstabell är kvar som reserv, för FedEx och PostNord säger ingenting om saken. Men den som faktiskt vet får gå först.
Bolagets eget märke på raden, och upphämtningsdagen överallt1.92.0
2026-08-28
Sendifys rader bar Sendifys logga, vilket inte sa något om vem som kommer med bilen. Nu står DHL, UPS, DSV, Bring eller Schenker på sin egen rad, med sitt eget märke.
Märkena är namnskyltar i bolagens färger — gult och rött för DHL, brunt och guld för UPS, mörkblått för DSV. Inte avritningar av deras loggor: en logga ritad på fri hand blir nästan rätt, och nästan rätt är sämre än en ärlig skylt. Färgen är ändå det ögat hittar först.
Upphämtningsdagen står nu på alla fraktalternativ, inte bara Sendifys. En FedEx-rad som ser snabbast ut är inte snabbast om bilen kommer på fredag.
Fraktbolagen ligger samlade på ett ställe — namn, märke och upphämtningsdagar tillsammans. Låg de på tre ställen blev ett nytt bolag tre ändringar och en glömd, och den glömda är en rad utan logga eller ett alternativ utan hämtdag.
Avsändarens e-post och telefon skrivs in i appen1.91.0
2026-08-28
Fraktbolagen kräver e-post och telefon till avsändaren — era egna uppgifter. De skrivs nu in under Inställningar → Fraktbolag → Avsändare, i två rutor.
Där och inte i Vercel, för de är inte hemliga som nycklarna är. En miljövariabel kräver en ny driftsättning och att någon lämnar appen, för en uppgift som ändras den dagen ni byter telefon.
Ifyllt i appen går före miljövariabel, som går före Fortnox företagsuppgifter. Den som skriver in ett nummer i en ruta gör det för att det ska gälla, inte för att överröstas av något någon satte i våras.
Under rutorna står vad som faktiskt används och varifrån det kommer, så att det går att se i stället för att gissas.
Adressen ligger kvar i miljövariablerna — den står tryckt på varje etikett och byts sällan.
Fraktradens avrundning går att spara1.90.2
2026-08-28
Avrundningen på fraktraden gick inte att ändra. Två fel låg på varandra: rutorna ritades bara för valutor som redan stod i inställningen, och i en tom inställning fanns ingen ruta alls — det såg ut som att fälten var låsta när det i själva verket inte fanns några.
Och sparandet kunde ändå inte ha fungerat: inställningen har ett fält som heter steg, och rutten använder steg som namn på åtgärden. Gränssnittet skickade båda i samma svep, fältet skrev över åtgärdsnamnet, och servern hittade aldrig vilken inställning det gällde. Spara gjorde ingenting och sa inget om det.
Nu finns rader för kronor, euro, norska och danska kronor, dollar och pund. Noll betyder ingen avrundning. Efter sparandet visas det som faktiskt hamnade i inställningen, inte det appen trodde att den skickade.
Avsändarens e-post och telefon i inställningarna visar nu det värde som gäller och varifrån det kommer — miljövariabel eller Fortnox företagsuppgifter. Förut stod det saknas så fort variabeln var tom, även när Fortnox hade uppgiften, och då rättade man fel sak. Säger Fortnox nej står skälet där.
Avsändarens uppgifter slås inte längre ut1.90.1
2026-08-28
Reservuppgifterna från Fortnox skrev över miljövariablerna i stället för att fylla luckorna. Hade Fortnox inget att svara blev e-post och telefon tomma — även när de stod inlagda. Felet såg ut som att variabeln inte kommit fram, vilket är den sämsta sortens fel: det pekar på fel ställe.
Nu fylls bara tomma platser. Miljövariabeln går före, Fortnox tar vid där den är tom.
Ett tomt svar från Fortnox sparas inte längre som hämtat. Förut frågade appen aldrig igen, så den dagen någon fyllde i uppgiften i Fortnox var den ändå borta här.
Inställningar → Fraktbolag visar nu vad appen tror om avsändarens e-post och telefon. Står det saknas ser man direkt om det är miljövariabeln som inte kommit fram — och att en ny variabel i Vercel gäller först efter en ny driftsättning.
Kontaktuppgifterna hittas, och upphämtningsdagarna står på raden1.90.0
2026-08-28
Varje fraktbolag har sina upphämtningsdagar, och ingen minns dem på en tisdag eftermiddag. Nu står det på fraktraden: «hämtas tidigast torsdag», «hämtas i dag», «hämtas i morgon». Efter elva räknas inte dagens tur — då hinner ingen bil komma.
Dagarna ställs in under Inställningar → Fraktbolag, sju knappar per bolag. DSV måndag och torsdag, DHL Freight torsdag, resten varje vardag — men terminaler lägger om sina turer, och då ska det gå att ändra på en kvart i stället för att vänta på en driftsättning.
Sendify kräver namn, telefon och e-post på både avsändare och mottagare. Deras egen spec märker inget av det som obligatoriskt — det syns bara genom att bli nekad. Nu kontrollerar appen det innan anropet och säger vad som fattas och var man rättar det, i stället för att skicka och få en kod tillbaka.
Saknas mottagarens e-post eller telefon på ordern hämtas de från kundkortet i Fortnox. Fälten letas efter namn — Fortnox har Email, EmailOrder och EmailInvoice, och vilket som är ifyllt skiljer sig mellan kunder. Uppgiften sparas på ordern så att den bara behöver hämtas en gång.
Adresskortet visar telefon och e-post, och säger när de kommer från kundkortet i stället för från ordern.
Finns de ingenstans går de att skriva in i appen: e-post är ett nytt fält under Ändra adressen, bredvid telefon. Ingen ska behöva öppna Fortnox mitt i packningen.
Avsändarens e-post och telefon hämtas ur Fortnox företagsuppgifter när de inte står i miljövariablerna. En uppgift som redan finns ska inte behöva skrivas in en gång till.
Privatperson eller företag följer med till Sendify, hämtat från kundkortet. Ett ombudspaket och en företagsleverans är inte samma tjänst.
Sendify hämtar priser, och versionen kan inte gå isär1.89.4
2026-08-28
Sendify krävde requested_pickup_time trots att deras spec inte märker fältet som obligatoriskt. Nu skickas det: nästa vardag klockan tio, eller i dag om klockan inte hunnit elva — samma gräns som mot FedEx. Med svensk tidszon och rätt offset, annars läses tiden som UTC och vi ber om upphämtning två timmar för tidigt halva året.
Upphämtningsfönstret följer med, ni stänger fyra.
Inställningarna visade 1.89.1 medan Vad är nytt visade 1.89.3. Numret stod som en egen rad ovanför ändringsloggen och glömdes kvar. Nu räknas det fram ur listans första post — skriver man en ny post följer numret och datumet med av sig själva, och de kan inte gå isär igen.
Appen slutar gissa på Sendifys felsvar1.89.3
2026-08-28
Två gånger har jag gissat formen på deras felsvar och två gånger blev resultatet ”Sendify svarade 422” — ett meddelande som säger att något är fel men inte vad, vilket är sämre än inget alls.
Nu gås svaret igenom som det är: varje text som ligger någonstans i det plockas ut tillsammans med vägen dit. Då spelar det ingen roll om Sendify packar in fälten i ”errors”, i ”validation_errors” eller inte alls.
Går kroppen ändå inte att tolka visas den rå. Ful text är fortfarande information.
Meddelandet börjar med vilket anrop som nekades — POST /shipments → 422. Sendify har fem rutter i det här flödet och samma kod betyder olika saker i var och en.
Provet kör fyra sorters felsvar: fältuppslaget, ett inpackat i errors, en tom kropp och ren text. Inget av dem får sluta med enbart en siffra.
Sendify frågas automatiskt, och utkasten städas bort1.89.2
2026-08-28
422 från Sendify sa bara ”Sendify svarade 422”. Deras fältfel ligger direkt i svaret och inte inpackade som jag läst dem, så listan blev tom. Nu står varje fält med sitt eget meddelande — ”to.contact.phone: This does not look like a valid number” — tillsammans med Sendifys anropsnummer, som är det de vill ha om man frågar dem.
Telefonnumret skickas som +46… i stället för 070-123 45 67. Tomma fält utelämnas helt: en tom e-postadress är ett fält med ogiltigt värde, inte ett fält som saknas.
Priserna hämtas automatiskt nu, samtidigt som FedEx och inte efter — annars väntar man ut två fraktbolag i rad.
Utkasten städas. Varje prisfråga skapar en sändning hos Sendify eftersom deras API kräver det; nu raderas den när rundan bokats med ett annat bolag, och nästa prisfråga raderar den föregående. Bokas den via Sendify står den kvar — då är den en riktig sändning.
Saknas mått eller vikt på ett kolli frågas Sendify inte alls. Ett anrop som är dömt att nekas är bara väntetid; skälet står på skärmen i stället.
Provet täcker felsvaret också, så att ett 422 utan besked inte kan komma tillbaka tyst.
Etikettens upplösning står framme1.89.1
2026-08-28
Er Zebra 420t är en 203-punktare — i Zebras modellnumrering står 20 för 203 dpi och 30 för 300. Appen renderade redan i 203, så etiketterna blir rätt.
Siffran syns nu i Inställningar → Fraktbolag, och går att sätta med ZEBRA_DPI i stället för att ändras i koden. Byts skrivaren mot en 300-punktare hamnar etiketten annars förminskad i ett hörn och streckkoden blir för liten att skanna — och den som byter skrivare är sällan den som kan koden.
Bara 203 och 300 tas emot. Ett påhittat värde ger etiketter som ser nästan rätt ut, och det är den sortens fel ingen letar efter.
Sendify med priser, och PDF-etiketter som blir ZPL1.89.0
2026-08-28
Sendify är inkopplat. Inne på ordern finns knappen Hämta priser från Sendify, och då listas DHL, UPS, DSV och de andra med pris, leveranstid och bolag — billigast först. Det är enda stället i appen där man ser vad frakten kostar hos flera bolag bredvid varandra.
Priserna hämtas på knapp och inte automatiskt. Sendify vill ha sändningen skapad innan de prissätter den, så varje prisfråga lämnar ett utkast i ert Sendify-konto. Att öppna en order ska inte kosta ett utkast.
Sendify svarar också med vilka bolag som inte kunde erbjudas och varför — ”Company name is too long, max 27 chars” och liknande. Det står bakom en hopfälld rad. En kort lista utan skäl ser ut som ett fel i appen; med skälet är det ofta något man kan rätta.
Sendify lämnar bara PDF, och Zebran talar ZPL. Deras väg förbi det är PrintNode, ett program till som ska ligga och köra vid skrivaren — men vi har redan en skrivaragent, och två program som slåss om samma skrivare är ett fel som inträffar en fredag eftermiddag. Pappret görs i stället om till ZPL i appen: sidan ritas i skrivarens egen upplösning och packas med ZPL:s egen komprimering. Fyra kilobyte i stället för tvåhundrafyrtiotre.
Etiketten går alltså i vanliga etikettkön till FABRIKEN eller KONTORET, med samma notis om vart den gick.
Avbokning fungerar även för Sendify, på deras sändningsnummer. Etiketter som ligger och väntar tas ur kön.
Sendifys eget schema ligger i repot och varje anrop hålls mot det innan det skickas — tredje gången samma sak, efter FedEx och PostNord.
Varubrev med mått och pris1.88.0
2026-08-28
Varubrev är det vi redan bokar: PostNord bytte namn på tjänsten den 4 maj 2026, och Varubrev heter numera Home Small. Gamla namnet står kvar i parentes på raden — det är det namnet som sitter i huvudet på den som packar.
Tjänsten visas bara när kollina får plats i en brevlåda: högst 3 kg, 60 cm längsta sida, 7 cm tjockt, 90 cm sammanlagt. Passar de inte står raden inte där alls — en rad man kan trycka på och sedan få nej av PostNord är sämre än ingen rad.
Saknas måtten på kollit sägs det på raden i stället för att gissas åt något håll. Ett kolli som göms för att någon glömt måtten ser annars likadant ut som ett som inte får plats.
Avtalspriset per tjänst läggs in under Inställningar → Fraktbolag. Det visas på fraktraden och skrivs in på ordern i Fortnox efter bokningen, utan avrundning uppåt — det är ert avtalade pris och ska stå som det är.
Priset skrivs bara på en order i kronor. Ett belopp på en orderrad har ingen egen valuta, det ärver orderns, och 69 inskrivet på en eurorder blir 69 euro.
PostNord-raderna säger inte längre fel sak om priset1.87.1
2026-08-28
PostNord-raderna sa ”pris på fakturan”, vilket lät som ett besked om att något var ordnat. Det står streck där i stället, precis som en FedEx-rad utan pris.
Det som faktiskt gäller står nu på kvittot efter bokningen: PostNord lämnar inget pris i sitt bokningsapi, så ingen fraktrad skrivs på ordern i Fortnox. Ska kunden betala frakt får raden läggas in för hand. Bättre där, där någon kan göra något åt det, än upptäckt när fakturan gått utan frakt.
PostNord går att boka1.87.0
2026-08-28
PostNord Home Small och Home Small Prio går att välja i fraktlistan och boka som vanligt. Bokning och etikett hämtas i samma anrop — bokar man först och hämtar etiketten sedan finns ett läge där sändningen är bokad men ingen etikett kommit ut, och det läget syns inte för den som packar.
Etiketten kommer som ZPL rakt i kön till Zebran, en per kolli, med spårningsnumret på kollit precis som hos FedEx.
Varje anrop hålls mot PostNords eget schema innan det skickas. Två provbokningar och ett fall som ska nekas körs i verktyg/postnordprov.mjs: noll brott mot schemat.
Saknas mobilnummer och e-post till mottagaren stoppas bokningen här, med skälet på svenska. PostNord aviserar Home Small-leveranser, och utan avisering vet ingen att paketet ligger i lådan.
Flera kollin blir en sändning av sig själv — samma bokning, flera poster. Ingen egen tjänst att välja.
I testläge sätts PostNords testflagga automatiskt: bokningen kontrolleras mot deras regler men ingen EDI går vidare.
FedEx föreslog ”E” som delstat på svenska adresser — länsbokstaven för Östergötland. Delstatsförslag följer nu bara med i de tre länder som faktiskt har delstater. Ett förslag man inte förstår gör att man slutar läsa rutan.
Fraktlistan delas per bolag1.86.1
2026-08-28
Fraktalternativen står nu under sin rubrik: FedEx för sig, PostNord för sig, med bolagets märke på varje rad. Så länge allt var FedEx räckte en lista — med två bolag är bolaget det första ögat letar efter.
PostNords tjänster syns i listan även innan bokningen är inkopplad, med skälet utskrivet på raden. En tom plats svarar inte på frågan varför det inte står någon PostNord där.
Fyra namn står på avtalet, men det är två tjänster: Home Small och Home Small Prio. ”Sändning” är samma tjänst med flera kollin i samma bokning — i PostNords EDI finns ingen egen kod för det, kollina är en lista. Appen väljer alltså tjänst, och antalet kollin sköter resten.
Bara inrikes svenska paket visas. Det är vad avtalet täcker än så länge, och en tjänst som visas men inte gäller sträckan är värre än ingen alls.
PostNords schema ligger i appen — och nyckeln är skarp1.86.0
2026-08-28
PostNords Booking API-specifikation ligger nu i repot, och regeltabellen är skapad ur den. Åtta rutter, 237 definitioner, alla hänvisningar upplösta. Bokningen kan börja skrivas mot fält som går att slå upp i stället för gissas.
Den utgåvan bär hela informationsmodellen i sig, så den separata modellfilen behövs inte längre. Verktyget läser den ändå om någon lägger dit den.
Appen sa ”Testmiljö” fast nyckeln var skarp. Skarpt läge är nu det normala; testmiljön får man genom att sätta POSTNORD_ENV=test. Ett läge som gissar fel om sig självt är värre än inget läge alls.
Adressen anropen går till står också i inställningarna. Skarpt är api2.postnord.com, testet atapi2 — en skarp nyckel mot fel värdnamn svarar med ett fel som inte pekar på orsaken.
Upphämtningslistan visar bara det som är kvar att vänta på. Dagens bokning står kvar hela dagen, i morgon är den borta, och närmast i tiden ligger överst. Datumet räknas i svensk tid, inte serverns.
Grunden för PostNord-bokningen1.85.2
2026-08-27
Verktyget som gör om PostNords specifikation till en regeltabell är skrivet. Appen kommer att hålla varje anrop mot deras eget schema innan det skickas — samma sak som till slut gjorde FedEx-flödet stabilt.
Ingen rad av själva bokningen är skriven än, och det är med flit. Varje FedEx-fel den här appen haft kom av att ett fältnamn gissats i stället för slagits upp.
PostNords spec är uppdelad på två filer: API:et och en informationsmodell som API:et hänvisar till. Verktyget läser båda och löser hänvisningar mellan dem. De läggs i verktyg/specar, med en läs-mig som säger varifrån.
PostNord-nyckeln syns i inställningarna1.85.1
2026-08-27
Inställningar → Fraktbolag visar nu om PostNord-nyckeln kommit fram: fyra sista tecknen, miljön och kundnumret. Nyckeln själv visas aldrig.
Står nyckeln där men är kortare än trettiotvå tecken säger appen det. Halva nyckeln inklistrad ser annars ut som en hel, och felet dyker upp först vid första bokningen.
En miljövariabel som stavats fel ser likadan ut som en som saknas, och båda ser likadana ut som ett API som inte svarar. De tre ska gå att skilja åt här och inte gissas ur en felkod.
Bokning via PostNord är inte inkopplad än — den byggs mot deras specifikation, fält för fält.
Varje bokning bär vem som kör1.85.0
2026-08-27
Förberedelse för PostNord. Så länge det bara fanns ett fraktbolag behövde ingen fråga vem som körde — svaret var underförstått överallt. Med två måste varje bokad sändning bära det.
Sändningar som bokas skriver nu ned fraktbolaget, och listan över bokade frakter visar det. Allt som bokats hittills är FedEx, vilket också är sant.
En avbokning går till den som bokade. Skulle den gå till fel fraktbolag hade svaret blivit «känner inte igen numret» och sändningen stått kvar bokad — värre än att säga ifrån direkt.
Remsan bakom svepet säger vart man är på väg1.84.1
2026-08-27
Drar man undan en sida syns det som ligger under, och där fanns ingenting — en tom vit remsa som växte. Det såg ut som att man drog fram en tom sida.
Nu står namnet på fliken man är på väg till där, med sin ikon. Remsan blev ett besked i stället för ett hål, och man ser vart draget bär innan man släppt.
Skylten ligger stilla; det är sidan ovanpå som rör sig. Så går namnet att läsa medan draget pågår i stället för att glida undan med det man drar.
Notis om vilken skrivare, och ett svep utan tomrum1.84.0
2026-08-27
Efter «Skriv ut» kommer nu två besked: ett direkt om att pappret ligger i kön, och ett när det faktiskt skrivs ut — «FABRIKEN skriver ut» eller «Utskriven på KONTORET».
Det andra är det man bryr sig om, och det går inte att ge direkt. Kön är en hög: är ingen agent utpekad för den sortens papper tar den som frågar först, och vilken det blir avgörs några sekunder senare av vilken dator som råkar vara ledig. Att gissa i samma stund man tryckt hade skickat någon till fel hus.
Vill ni ha svaret direkt: peka ut agenten per papperssort under Inställningar → Skrivare. Då står namnet redan i det första beskedet.
Hämtar ingen skrivare pappret inom en halv minut säger appen det. En dator som inte tagit ett papper på trettio sekunder är antagligen avstängd, och det är värt att få veta.
Svepet lämnade en tom remsa efter sig. Den gamla sidan fortsatte ut åt samma håll medan nästa hämtades, och mellan dem fanns ingenting att titta på — det såg ut som att appen tappat bort sig. Nu släpps förskjutningen på en bildruta och nästa flik glider in från samma kant, så ögat läser de två rörelserna som en enda.
Grannflikarna hämtas hem i förväg, så att koden finns när man släpper i stället för att börja laddas då.
FedEx frågade om adressen två gånger1.83.1
2026-08-27
Sa man ja till FedEx adressförslag kunde rutan komma tillbaka med ett nytt förslag direkt. Man accepterade alltså något och fick det tillbaka.
Orsaken: svarade FedEx med två gaturader — gata och en våningsangivelse — sparade appen bara den första. Nästa kontroll såg skillnaden mot deras version och föreslog samma sak igen. Nu sparas alla raderna, och då kan svaret inte skilja sig från frågan.
Och som skydd mot att det upprepar sig av något annat skäl: har man en gång sagt ja till deras version är frågan besvarad för den ordern. FedEx svar är inte alltid detsamma två gånger — de kan putsa vidare på det de själva föreslog. Knappen finns kvar för den som vill se förslaget ändå.
Fliken följer med när man drar1.83.0
2026-08-27
Svepet hände tidigare först när man släppte — man drog i ingenting och plötsligt bytte skärmen. Nu följer sidan fingret medan man drar, och man ser vilken väg den är på väg.
Släpper man för tidigt glider den tillbaka. Har man dragit nog — en femtedel av skärmen, och aldrig mer än nittio bildpunkter — fortsätter den ut åt samma håll medan nästa flik hämtas. Att låta den hoppa tillbaka till noll i samma stund man släpper får ett lyckat drag att se misslyckat ut.
Finns ingen flik åt det hållet gör draget motstånd: en fjärdedel av rörelsen, precis som en lista som dras förbi sin början. Att glida lika lätt mot en vägg som mot en granne är att lova något som inte finns.
Riktningen bestäms efter tio bildpunkter och står sedan fast hela draget. Ett finger som byter åsikt halvvägs ska inte få skärmen att göra det.
Telefonen får veta att lodrät rullning är dess och vågrät är vår. Rullningen är därmed fortfarande telefonens egen och lika mjuk som överallt annars — appen behöver aldrig ta över den.
Ligger en ruta över skärmen — ett artikelkort, skannern — sveper man inte. Den rutan är ärendet, och ett svep bakom den hade bytt flik under den.
Sökrutan ligger stilla1.82.1
2026-08-27
Två försök att fälla undan sökrutan när man rullar, två fel. Det första krympte dess höjd, och eftersom den låg i samma spalt som listan flyttade sig listan dubbelt så fort som fingret. Det andra naglade fast den överst och lät den glida undan ovanpå listan — rätt hastighet, men då låg den över raderna.
En ruta som ibland täcker det man läser är värre än en ruta som tar plats. Nu ligger sökrutan, kategorierna och sidans namn stilla som första raden i listan och rullar bort med allt annat. Vill man åt dem rullar man upp till toppen.
Ett moment mer och noll saker som kan överlappa. Det är rätt byte: en lista man kan lita på är mer värd än några bildpunkter.
Svep mellan flikarna, och rullningen i takt med fingret1.82.0
2026-08-27
Nu går det att svepa i sidled mellan flikarna: Artiklar, Inventering, Plock, Tillverkning — och sveper man vidare förbi Tillverkning landar man i Inställningar. Därifrån sveper man tillbaka samma väg; en väg som bara går åt ett håll är en fälla.
Drar man fingret åt vänster kommer nästa flik in från höger, som en sida i en bok. Samma riktning som knapparna längst ned ger.
Ett drag som börjar på kategoriraden eller på remsan i plockningen hör till dem och inte till flikarna — annars gick det inte att bläddra bland kategorierna utan att hamna på en annan sida. Två fingrar är en nypning och inget svep, och ett drag från skärmkanten är telefonens egen bakåtgest.
Rullningen kändes dubbelt så snabb som fingret så länge sökrutan var på väg bort, och normal så fort den var borta. Det var inte en känsla: rutan låg ovanför listan och krympte, och två rutor i samma spalt delar på höjden. Listan flyttade sig alltså två gånger — en gång för att man rullade, en gång för att rutan blev mindre.
Nu är sökrutan första raden i själva listan, fastnaglad överst. Listan rör sig exakt lika mycket som fingret; rutan glider undan ovanpå den. Samma sak som adressfältet i telefonens webbläsare gör, och det känns rätt av samma skäl: bara en sak rör sig åt gången.
Huvudet följer fingret1.81.1
2026-08-27
Rutan fälldes ihop i sin egen hastighet så fort man rullat tio bildpunkter. Det blev två rörelser på skärmen samtidigt — listan under fingret och huvudet i sin egen takt — och de hade ingenting med varandra att göra. Det kändes som att skärmen ryckte till.
Nu ligger huvudet på fingret. Rullar du ned tio bildpunkter går det upp tio; rullar du tillbaka kommer det ned lika mycket. Ingen övergång, ingen hastighet — det är samma rörelse som listan gör, och därför syns den inte som en rörelse alls.
Rubrikerna och sorteringsknapparna klipptes av på nedersta kanten. Höjden mättes på rutans rullhöjd, och där räknas inte sista radens undermarginal med. Nu mäts yttermåttet, och innehållet håller ihop sina marginaler.
Rullningen ritas i en animationsbild i stället för genom appen. Sextio omritningar i sekunden är för mycket för en telefon, och behövs inte: det som ändras är två stiltal på två element.
Sökrutan fälls undan när man rullar1.81.0
2026-08-27
Sökrutan, kategorierna och de två menyerna tog en tredjedel av telefonskärmen — hela tiden, också när man rullade i listan. Nu fälls de undan när man rullar nedåt och kommer tillbaka så fort man rullar uppåt.
Man behöver dem när man börjar leta och aldrig medan man rullar. Rullar man uppåt är man på väg tillbaka till dem, och då ska de vara framme innan man hunnit fram.
Loggan och knapparna står kvar. Skanna, larmen och inställningarna ska inte kräva att man rullar till toppen först.
Samma rörelse på Plock och Tillverkning, där det är rubriken som fälls undan.
Höjden mäts på det som faktiskt står där, och mäts om när det ändras — kategorierna kommer efter att sidan ritats, och en ruta som fälls ut till gårdagens höjd klipper av sig själv.
Det finns en tröskel innan den rör sig. Ett finger rullar aldrig rakt, och utan tröskeln fladdrade huvudet upp och ned på varje darrning. Överst är svaret alltid «framme» — där finns ingen yta att vinna.
Blinkningen in till Artiklar och Inventering1.80.2
2026-08-27
Startsidan visade en snurra mitt på en tom skärm tills inloggningen hunnit kontrolleras — en rundtur till servern. Kom man från Plock försvann alltså hela appen i ett ögonblick och kom tillbaka. Det var blinkningen.
Plock och Tillverkning har aldrig gjort så: de ritar sitt skal direkt och lägger snurran inuti. Nu gör startsidan detsamma — raden längst upp och flikraden längst ned står kvar hela tiden.
Innehållet glider in när det finns, en gång och inte två.
Knappen heter Skriv ut1.80.1
2026-08-27
Skrivarens namn stod på knappen. Det var fel av två skäl: vart pappret går är en inställning och inte något man väljer där, och namnet stämmer bara så länge inställningen står kvar. En knapp som säger «Verkstaden» blir en lögn den dagen någon pekar om den.
Knappen heter Skriv ut. Var pappret hamnade står i kvittot efteråt — «Skickad till Verkstaden» — och där är det sant, för det är samma besked servern just fattat.
Är ingen agent utpekad för sorten säger kvittot det rakt ut: pappret skrivs ut av den A4-skrivare som är ledig först. Finns ingen alls blir det en varning i stället för ett kvitto — pappret ligger kvar i kön tills en skrivare finns.
Skriv ut går till skrivaren igen1.80.0
2026-08-27
«Skriv ut» har hittills öppnat webbläsarens utskriftsruta på telefonen. Där finns ingen skrivare — telefonen är inte kopplad till någon — så det enda man kunnat göra är att spara en PDF. Papperet har krävt att någon går till en dator, öppnar samma sida där och skriver ut den.
Samtidigt står det redan en dator vid A4-skrivaren som gör exakt det: hämtar papper ur en kö och skriver ut dem tyst. Plocklistor och packsedlar har gått den vägen hela tiden. Nu gör tillverkningsordern, kundordern, inventeringsrapporten och streckkodsetiketterna det också.
Två knappar överallt: «Skriv ut» och «Spara som PDF». Utskriftsknappen skriver ut vilken skrivare det gäller — «Skriv ut · Verkstaden». Att svara «skickat till skrivaren» är inget svar när det står två datorer i två hus.
Har ni pekat ut en agent för den sortens papper under Inställningar → Skrivare står den. Finns bara en som klarar A4 står den. Finns flera står att det går till den som är först ledig.
Pappret ritas inte om. Skrivardatorn öppnar samma sida du tittar på och skriver ut den, så det som kommer ur skrivaren är det du såg. Två versioner av samma papper hade betytt att den ena blir fel.
Streckkodsarket bär sitt urval i adressen, så skrivardatorn får samma etiketter som du valde och inte ett tomt ark.
Inventeringsrapporten har fått en egen adress. Den ritades bara inuti inventeringsfliken, och en vy utan adress kan varken länkas eller skrivas ut av någon annan än den som står framför den.
Skrivaragenten får läsa de sidor den ska skriva ut. Bara läsa — den ska kunna se pappret och ingenting mer.
Bokningsnumret för pall ligger hopfällt. Fältet är frivilligt och används sällan, men tog halva skärmen med en förklaring man läst en gång, precis där man ska trycka Boka. Har du skrivit ett nummer står det i rubriken.
Tre skavanker i det nya huvudet1.79.1
2026-08-27
Skanna-knappen var understruken på Tillverkning. Där är den en länk till startsidans skanner, och den enda av de fyra knapparna som har text — alltså den enda som visade webbläsarens understrykning.
Blinkningen mellan flikarna är borta. Riktningen lästes i en effekt, alltså efter att sidan ritats: animeringen startade åt ena hållet, klassen rättades, och den började om åt det andra. Två rörelser i följd läses som ett hack. Nu läses riktningen när sidan ritas.
Artiklar har fått sin titel. Den var den enda av de fyra flikarna som inte sa vad den var.
Samma huvud på alla fyra flikarna1.79.0
2026-08-27
Startsidan hade sin logga och sina fyra knappar. Plock och Tillverkning hade i stället ett sidhuvud med bakåtpil och rubrik, byggt för undersidor man kliver in i och ut ur. Men de är inte undersidor — de är flikar, och en flik har man inget att gå tillbaka från. Appen såg ut som två olika appar beroende på var man stod.
Nu är raden längst upp densamma överallt: logga, uppdatera, skanna, larm, inställningar. Under den ligger det som hör sidan till — sökrutan på Artiklar, sidans namn på de tre andra.
Skanna finns därmed på alla fyra. Har sidan ingen egen skanner tar knappen dig till den som finns; en knapp som ibland saknas är svårare att lita på än en som tar ett steg.
Uppdatera gör det sidan behöver. Saldon från Fortnox på Artiklar och Inventering, en omhämtning på Plock och Tillverkning — och snurrar medan den håller på.
Bakåtpilen är borta från de fyra flikarna. Den lovade en väg tillbaka som inte fanns.
Animeringen är likadan på alla fyra. Den låg tidigare på olika ställen i de olika sidorna — på ett håll gled rubriken med, på ett annat inte. Nu glider bara innehållet, medan raden längst upp och navigeringen längst ned står stilla.
Plock och Tillverkning har samma sidram som resten av appen. På en dator satt de i en bredare spalt än startsidan, vilket är precis den sortens skillnad som får något att kännas hemmabyggt.
Flikbytet glider åt rätt håll1.78.1
2026-08-27
De fyra flikarna längst ned byttes utan att skärmen sa något om det. Nu glider den nya sidan in — från höger när man går åt höger i raden, från vänster när man går åt vänster.
Raden är hela flikarnas ordning, och riktningen är den enda uppgift som säger var man hamnat. En ren toning säger bara «något annat nu».
Att veta åt vilket håll kräver att man vet var man kom ifrån, och Plock och Tillverkning är egna sidor som inte vet det. Riktningen skrivs därför ned i samma stund man trycker och läses av sidan som öppnas.
Aderton bildpunkter, en fjärdedels sekund. Med flit lite: den som packar byter flik hundra gånger om dagen, och rörelsen ska räcka för att ögat ska följa med — inte för att synas.
Navigeringen längst ned står stilla medan innehållet glider. En fastnaglad rad som följer med i en rörelse ser ut som ett fel.
Avstängd rörelse i telefonens inställningar stänger av även den här.
Saldona i listan stämmer, och skärmen rör sig1.78.0
2026-08-27
Siffran i artikellistan kom ur appens egen kopia, och kopian skrevs bara vid en full synk — som körs för hand. Öppnade man artikeln frågades Fortnox direkt, och då stod det ett annat tal. Listan sa en sak och kortet en annan, och den som ville se om något höll på att ta slut kunde inte lita på översikten.
Nu läses saldona om varje minut, i samma avläsning som redan hämtar ordrar. Varje minut frågas bara efter det som ändrats sedan sist — oftast noll eller en sida. Var femtonde minut går hela sortimentet igenom, för Fortnox uppdaterar inte alltid en artikels ändringstidpunkt när bara lagersaldot rört sig.
Det är billigt: Fortnox listendpunkt bär saldot, femhundra artiklar per anrop. En hel genomgång är en handfull anrop, inte ett per artikel.
Under listan står hur färska siffrorna är — «Saldon uppdaterade 2 minuter sedan». Är de äldre än en halvtimme blir raden varnande, för då är det inte längre en upplysning utan ett tecken på att avläsningen slutat fungera.
Uppdatera-knappen uppe i hörnet hämtar saldon från Fortnox. Förut läste den bara om appens kopia — alltså samma tal en gång till.
Stänger man ett artikelkort läses listan om tyst. Kortet har just hämtat det rätta talet; att få tillbaka det gamla när man stängde var svårt att förstå.
Samma sak gällde inventeringen: listan visade ett tal och kortet ett annat. Det var samma orsak, och den är borta.
RÖRELSE. Rutor som glider upp underifrån i stället för att bara finnas där i nästa bildruta. Rörelsen säger två saker utan ord: den kom nedifrån, och sidan bakom finns kvar — så vet man också var krysset tar en. Bakgrunden mörknar samtidigt.
Innehållet tonar in när man byter flik, med några bildpunkters rörelse. Utan det byts hela skärmen i en bildruta och blicken måste leta upp var den var.
Knappar sjunker in en aning när man trycker. En knapp som inte rör sig känns som att den inte registrerat något, och då trycker man en gång till.
Allt är kort med flit — under en femtedels sekund. Längre än så börjar det kännas som att vänta i stället för som ett svar.
Den som stängt av rörelse i telefonens inställningar får ingen alls. Snurrorna är kvar: de säger att något pågår, och utan dem ser appen låst ut.
Genomgång av hela appen1.77.0
2026-08-27
NIO SAKER SOM VAR TRASIGA. Larmklockan uppe i hörnet visade alltid noll på varje sida utom startsidan — den läste ett fält som servern aldrig svarat med. Man såg alltså aldrig ett larm så länge man stod någon annanstans i appen.
Plocklistorna sa «Avläsningen mot Fortnox har inte kört än» varje gång sidan öppnades, medan svaret var på väg. En larmtext om att integrationen är död, som mest betydde att man var snabb.
Inloggningen sa «Inga användare upplagda än» innan den hunnit fråga. Nu står det Hämtar tills svaret kommit.
EAN-sidan kunde snurra för alltid. Gick anropet fel fanns ingen fångst, så spinnern låg kvar utan ett ord om varför. Nu står felet där, med en knapp att försöka igen.
Larmsidan kvitterade allt som lyckat. Svaret kastades bort, så ett larm som inte gick att ignorera såg ignorerat ut tills listan laddades om. Nu läses svaret.
Två snabba avbockningar kunde sudda den första. Handskannern skjuter två koder utan att släppa emellan, och den andra skrev tillbaka den första radens obockade version. Servern hade båda; skärmen visade fel, och någon plockade om.
Spara-knappen på tullsidan låg delvis bakom navigeringen på en iPhone. Alla andra fastnaglade rader räknar med hemindikatorn; den här glömdes.
Fel flik lyste i navigeringen på fyra sidor — Artiklar var markerad medan man stod i Inställningar.
Fem bakåtpilar gick fel: förpackningar, provetiketter och tullsidan pekade tillbaka till platser man inte kommit ifrån, taggar till startsidan, och kundordern alltid till tillverkningen fast man kom från fraktlistan.
SIDOR SOM INTE GICK ATT HITTA. Fyra färdiga sidor låg utan en enda länk in: veckosammanfattningen, skillnaderna mot Shopify, bokade frakter och streckkodsetiketterna. De gick bara att nå genom att skriva adressen för hand. Nu ligger de under Inställningar → Översikter, tillsammans med Historik och dess Ångra — som inte heller gick att nå.
Inställningar → Personal och → Kategorier landade på toppen av en sida med sju avsnitt. Nu hoppar de till rätt rubrik. Att de tre raderna kräver adminlösenord står nu i menyn i stället för att komma som en överraskning.
«Taggar» hette Etiketter när man kom fram — samma namn som de fysiska streckkodsetiketterna. Två olika saker, en rubrik. Nu heter de Taggar respektive Streckkodsetiketter.
Tre sidor saknade navigeringen längst ned: EAN-koder, flera platser och streckkodsetiketterna. Enda vägen vidare var bakåtpilen.
Siffran på Tillverkning syns nu på alla sidor. Den räknades bara på startsidan, så stod man i Plock såg man aldrig att nya förslag kommit in.
FÄRG PÅ KNAPPARNA. Färgerna fanns men användes på ett enda ställe. Nu har huvudåtgärder grönt, omhämtningar blått, upphämtning orange och det som inte går att ångra rött — i tillverkningen, larmen, taggarna, platserna och fraktlistan.
Det som inte går att ångra är rött på tolv ställen som var grå: ta bort användare, ta bort förpackning, ta bort bild, rensa larm, rensa notiser, ta bort taggar, ta bort ur listan, avboka hos FedEx, och de fyllda bekräftelseknapparna.
Papperskorgen är röd innan man trycker. Färgen låg bara i :active — alltså först efter att den använts, vilket är precis för sent för att hjälpa någon. Samma sak med avbryt-länken i inventeringen.
Upphämtningsknappen i fraktlistan har samma färg som den på plocksidan. Samma knapp i två toner läses som två olika saker.
Ikoner på «Hämta ordrar» och «Kontrollera nu» — samma cirkel som betyder omhämtning på andra ställen.
SMAL SKÄRM. Ett långt artikelnamn utan mellanslag sköt ut ur kortet och försvann i stället för att brytas. Nu klipps det med tre punkter, precis som underraden alltid gjort.
En klippregel som var tänkt för en enda lista slog mot varje dämpad textbit i appen och gjorde dem obrytbara. Nu gäller den bara där den skrevs.
Fyra knapprader kunde spränga sin ruta på en 320 pixlar bred skärm — knapparna lydde sin egen radbrytningsregel före den bredd de fått.
Ett långt förpackningsnamn tryckte bort krysset som tar bort det.
STÄDNING. Fyra döda CSS-regler bort — klasser som inte finns någonstans i appen, inklusive en snurra som pekade på ingenting och en felstavad selektor. Åtta dubbeldefinitioner sammanslagna, där den första alltid var död kod som såg levande ut.
Röda inline-stilar på sex ställen är nu en klass. Färgen ska stå ett ställe.
SNABBARE. Plocklistornas sida ställde tio frågor till databasen i kö, en efter en, fast ingen berodde på någon annan. Nu går de samtidigt. Samma sak för orderns fraktvy och för de två siffrorna på startsidan.
En plocklista skapades med en skrivning per rad — fyrtio rader blev fyrtio rundresor till databasen bakom ett tryck. Nu en enda. Samma sak för kollina när man är klar och trycker Skriv ut packsedel.
Inventeringen hämtade hem hela artikellistan igen efter varje saldouppdatering — upp till femtusen rader till en telefon, utan att något ändrats.
«Granska och skicka» kunde dubbeltryckas och starta två granskningar mot samma inventering. Samma sak med «Avbryt tillverkningsorder».
Skanningen på startsidan sa inte ifrån när nätet strök. Ingenting hände alls, och man skannade om i onödan.
Ett papper, inte tre1.76.1
2026-08-27
Den som rättar en order i Fortnox ändrar den flera gånger på en minut: en rad, ett antal, ett pris. Appen läser om ordern vid varje ändring, och skulle ha skrivit ett nytt plockpapper varje gång — tre papper på skrivaren där bara det sista var rätt.
Nu får ordern stå stilla nittio sekunder först. Kommer en ny ändring in börjar väntan om. Papperet kommer när någon slutat skriva, inte medan de gör det.
Den första plocklistan fungerar som förut: den kommer när ordern skrivs ut eller mejlas i Fortnox. Uppdateringar väntar däremot inte på en ny utskrift — ordern är redan släppt och någon står och plockar efter den. En lista som är fel i handen är sämre än en som kommer lite tidigt.
Ändrad order hämtas in av sig själv1.76.0
2026-08-27
Fortnox säger redan vilka ordrar som ändrats — appen frågar efter dem varje minut. Men den läste bara om raderna när leveransdatum, makulering, utskriftsläge eller fakturanummer ändrats. En order där någon lagt till en rad eller ändrat ett antal såg oförändrad ut.
Summan står med i samma svar, och den avslöjar just den sortens ändring. Nu räknas den med. Ändrar du ordern i Fortnox kommer den in i appen inom en minut, utan att någon behöver trycka på något.
Har ordern en påbörjad plocklista rättas den efter ordern och ett nytt papper går i kön — men bara om något faktiskt ändrats. Det som redan är plockat rörs aldrig.
En ändring som inte rör summan — en artikel utbytt mot en lika dyr, en text omskriven — syns fortfarande inte av sig själv. Den kommer in med knappen «Ordern har ändrats i Fortnox» längst ned i plockvyn.
Att bara skriva ut ordern igen i Fortnox räcker inte som signal. Utskriftsläget står redan som utskrivet och ändras inte av en andra utskrift — det är själva ändringen som märks, inte utskriften.
Läs om ordern när den ändrats i Fortnox1.75.0
2026-08-27
Ordern lästes en enda gång, när plocklistan skapades, och rördes sedan aldrig mer. Ändrade någon ordern i Fortnox efteråt — en rad till, ett annat antal, en rad bort — visste appen ingenting om det. Plocklistan på bordet var rätt; den i telefonen var det inte.
Längst ned i plockvyn finns nu «Ordern har ändrats i Fortnox — läs om den». Ordern hämtas hem på nytt och rundan rättas efter den.
Det som är plockat rörs aldrig. En vara i kartongen ligger där oavsett vad ordern säger nu. Antalet skrivs om, nya rader läggs sist — där man inte redan letat — och en rad som tagits bort försvinner bara om ingen hunnit röra den.
Har någon plockat en rad som nu är borta ur ordern står den kvar med noll i beställt antal, och appen säger rakt ut att varan ska tillbaka till hyllan. Att tyst låta den försvinna vore att lämna en vara i kartongen som ingen beställt.
En ny plocklista skrivs ut, men bara när något faktiskt ändrats. Ett papper till som säger samma sak som det förra är bara förvirrande.
Artikelnumret avgör vad som är samma rad, inte radnumret. Radnummer flyttar sig så fort någon lägger till en rad mitt i ordern.
Tom leveransadress erbjuder fakturaadressen1.74.0
2026-08-27
Blir leveransadressen aldrig ifylld på ordern står appen med tomma rutor. Hittills svarade den med att säga åt någon att gå till Fortnox och fylla i det som redan står där — mitt i packningen, i ett annat program, på en annan skärm.
Nu letar appen rätt på fakturaadressen i stället: först på ordern, sedan på kundkortet. Finns en fullständig adress kommer en ruta upp av sig själv med adressen i klartext och frågan om den ska användas som leveransadress. Ett tryck och den är ifylld.
Adressen sparas i appen som en rättelse, precis som när man skriver den för hand. Ordern i Fortnox rörs inte — det är kundens orderdata och inte vår.
Halva adresser erbjuds aldrig. Saknas gata, postnummer eller ort är det ingen adress utan en gissning, och den som packar ska inte behöva avgöra om hälften räcker.
Ett nej gäller den ordern, inte nästa.
Boka upphämtning ligger framme1.73.0
2026-08-27
Tredje knappen högst upp på plocksidan, bredvid Skanna plocklista och Leta efter nya ordrar. Bilen bokas i samma andetag som kartongerna blir klara, och den som står där har oftast just packat något — att gå via en orderrad för att komma åt den var en omväg.
De tre knapparna har fått varsin ton: grön, blå, orange. Tre knappar i samma grå läses som en rad text, och man måste stanna och läsa varje för att hitta den man ville trycka på. Dämpade färger — de ska hjälpa ögat, inte skrika.
Upphämtningen stod kvar på i dag efter elva1.72.1
2026-08-27
När gissningen togs bort i 1.70.1 blev det tyst åt andra hållet: en torsdag klockan halv två stod dagen kvar på torsdag, trots att sista tiden är elva.
Orsaken var vad som räknades som besked. Svarade FedEx med en lista dagar och vår dag inte stod i den lästes det som tystnad, och tystnad flyttar ingenting. Men en lista där dagen saknas är inget svar om dagen — det är ett svar om att den inte finns bland dem som går.
Nu flyttas dagen på tre besked: FedEx säger att den inte går, FedEx räknar inte upp den bland dem som går, eller FedEx svarar inte alls och klockan har passerat elva. Det sista är er egen sista tid och används bara när det inte finns något annat att gå på.
Rutan skriver ut vilket av de tre det var, med den siffra som gällde när dagen flyttades — inte den nya dagens.
Vem skriver ut vad1.72.0
2026-08-27
Kön har hittills varit en hög, inte en adress. Varje papper tas av den agent som frågar först och klarar sorten — aldrig av två, så ingenting har någonsin skrivits ut dubbelt, men vilken av två likvärdiga agenter som hinner har varit slumpen.
Det duger när båda står i samma rum. Det duger inte när den ena står i fabriken och den andra på kontoret, och tullfakturan ska ligga hos den som packar.
Under Inställningar → Skrivare går det nu att peka ut en agent per papperssort: plocklista, följesedel, restlista, tullfaktura, fraktetikett, fraktsedel. Menyn visas först när det finns mer än en agent — med bara en finns ingen fråga att svara på.
Ett val är en reservation, inte ett lås. Den utpekade agenten har fyra minuter på sig; sedan tar vem som helst som kan sorten. En dator som står avstängd ska inte kunna hålla en fraktetikett gisslan, och ett papper på fel skrivare är ett problem man löser på tio sekunder — ett papper som aldrig kommer ut syns inte alls.
I kön står det vem ett papper väntar på så länge det väntar.
Avbokningsknappen1.71.1
2026-08-27
Avbokningsknappen i ett bokat upphämtningskort stack ut trettio bildpunkter utanför rutan. Marginalen låg på knappen medan bredden räknades på kortet.
Den är röd nu. Avbokning är det enda på sidan som inte går att ångra — röd text och röd kant, men ingen röd platta: den ska hittas av den som söker den, inte dra till sig den som bara läser.
Tullfakturan skrivs ut av sig själv när ETD inte går1.71.0
2026-08-27
Går handelsfakturan inte elektroniskt skickas den nu direkt till A4-skrivaren i tre exemplar — ett till avgångstullen, ett till mottagarlandets, ett till kunden. Det är vad FedEx plastficka är gjord för.
Förut låg fakturan som en länk packaren skulle hitta, klicka på och skriva ut, mitt i det moment där man som mest vill bli klar. En sändning över en tullgräns utan handelsfaktura blir stående, och det upptäcks en vecka senare av någon annan.
En ruta lägger sig över skärmen när det händer. Den säger tre saker: att den elektroniska vägen stängdes, att pappret måste med i fickan, och att det redan ligger i kön. Allt annat från fraktbokningen går att läsa efteråt — det här gör det inte.
Länken «Papper att skriva ut» fungerar igen. Rutten släppte bara igenom etikettext, så en PDF svarade med ett fel — en faktura man inte kommer åt är samma sak som ingen faktura.
Skrivarfönstret kan skriva ut PDF. Ramen pekas rakt på dokumentet och Chrome egen visare gör jobbet, så det är FedEx faktura som hamnar hos tullen och inte vår avritning av den.
Zebran kan inte hjälpa till här: den talar ZPL och skriver 10 × 15 cm etiketter. En handelsfaktura är ett A4 med tabell och namnteckning.
Står upphämtningen på en annan dag än i dag föreslås redo 08:00 och stängning 16:00. «Om en halvtimme» är rätt svar när kartongen står här och ska tejpas klart, och fel svar om bilen ska komma i morgon. Skriver ni in en egen tid rör appen den inte mer.
Upphämtningen föreslog lördag1.70.1
2026-08-27
En torsdagseftermiddag föreslog sidan lördag — en dag FedEx inte ens hämtar. Två gissningar låg ovanpå varandra: sidan gissade «har klockan passerat elva, ta i morgon», och när FedEx sedan svarade flyttade deras besked dagen en gång till.
Gissningen är borta. Det står i dag tills FedEx säger något annat, och behöver dagen flyttas går den till nästa dag de själva säger att de hämtar — aldrig till en helg. Står det en annan dag skriver appen ut varför.
Knappraderna med FedEx redo- och senasttider är borttagna. De tog plats utan att svara på frågan.
Handelsfakturan finns alltid, inte bara när ETD lyckas1.70.0
2026-08-27
Här stod att en misslyckad ETD betyder «fakturan skrivs ut på papper som förut». Det var inte sant. Utan ETD bad appen inte om något dokument alls, så FedEx skapade ingen faktura — och en sändning över en tullgräns gick i väg utan handelsfaktura. Att det inte ställt till det ännu är tur, inte konstruktion.
Nu begärs dokumentet alltid när sändningen passerar en tull. Fungerar ETD går fakturan elektroniskt och pappret behövs inte. Fungerar den inte ligger samma faktura som PDF i svaret och packaren får en länk att skriva ut. Skillnaden mellan bra och nödlösning ska aldrig vara skillnaden mellan ett dokument och inget.
Brevhuvud och namnteckning läggs på pappersfakturan också, inte bara den elektroniska. En utskriven faktura utan dem ser ut som ett utkast.
Ordernumret står på fakturan. När tullen eller kunden ringer och undrar vilken sändning det gäller är det den uppgiften alla tre har.
Varje varurad märks företag eller konsument efter kundens typ i Fortnox. Tullen behandlar de två olika — tröskelvärden, moms och vem som är importör — och gissar de fel är det mottagaren som får reda ut det.
Inom EU ändras ingenting: ingen tull, ingen handelsfaktura. Varuuppgifterna följer med ändå, för FedEx räknar varje sändning över en gräns som internationell.
Appen läser FedEx eget schema innan den frågar dem1.69.0
2026-08-27
Varje anrop till FedEx kontrolleras nu mot FedEx egen specifikation innan det skickas. Deras scheman ligger publicerade; det som saknats är att vi läser dem. Ett värde utanför deras lista, en text längre än fältet rymmer eller ett tal skickat som text stoppas här, med ett svenskt besked som säger vilket fält det gäller — i stället för en kod på skärmen när någon står med kartongen.
Första gången kontrollen kördes hittade den felet vi jagat i veckor: i prisförfrågan tar FedEx emot ett enda värde för vem som betalar tullen — SENDER. Vi skickade RECIPIENT, för det är så ni säljer. Därför avvisades varje fullständig prisförfrågan över en gräns, medan bokningen gick igenom. Fältet har ingenting med fraktpriset att göra och är borttaget ur prisfrågan. Notisen om «förenklad förfrågan» bör vara borta.
Handelsfakturan skickas nu med i bokningen. FedEx schema kräver den tillsammans med tulluppgifterna, och vi har inte skickat den alls — de har skrivit den åt oss ur varuraderna. Nu står det uttryckligen att varorna är sålda och att villkoret är DAP när mottagaren betalar tullen, DDP när ni gör det.
Totalvikten följer med varje sändning, inte bara pall. FedEx räknade ihop den åt oss för paket. Det är en tjänst de gör, inte en regel de lovat följa.
Ett prov, verktyg/fraktprov.mjs, kör hela flödet — pris, bokning, adresskontroll, upphämtning — för sex sträckor utan att röra FedEx, och håller varje anrop mot schemat. Tjugo anrop, noll avvikelser.
Upphämtningen: tiderna, namnet och listan1.69.0
2026-08-27
«Package is not accessible for the requested pickup time» handlar aldrig om paketet. Det betyder att tiderna inte går ihop, och FedEx säger inte vilken av dem. Nu jämför appen mot deras egna svar innan bokningen: stängning före redo, redo som inte ligger före deras sista tid, och ett fönster kortare än det de behöver. Går det inte ihop står det varför, med en knapp som rättar tiden.
Sista tiden ska passeras med marginal, inte träffas på minuten. 11:00 mot en sista tid 11:00 nekas. Appen varnade bara när tiden var senare än deras — nu även när den är lika.
FedEx egna tider ligger som knappar under klockslagen. De har räknat ut vilka tider som går; att skriva in en av dem för hand är ett moment för mycket, och den handskrivna blir fel.
«Chauffören frågar efter» — samma sak som Shipmondo kallar attn. Förifyllt med förnamnet på den som är inloggad, för det är den som står på kajen när bilen kommer.
Nekas bokningen ändå frågar appen FedEx en gång till om dagens tider och skriver ut dem i felet, i stället för att lämna kvar en engelsk mening att gissa på.
Bokade upphämtningar ligger hopfällda: dag, fönster och bekräftelsekod på en rad, resten bakom ett tryck. Med luft ned till formuläret, så att de två inte längre ser ut att höra ihop.
Prisförfrågan saknade varuuppgifterna1.68.0
2026-08-27
RATE.CUSTOMSCLEARANCEDETAIL.INVALID var mitt fel, och det gällde varje sändning över en gräns — pall eller inte. FedEx skriver i sin egen beskrivning av fältet, ordagrant: «Customs commodity data is required for international and intra-country rating.» Jag läste det som något som hörde till bokningen och lämnade det ute ur prisförfrågan. Nu följer varuuppgifterna med även när vi bara frågar om priset.
Det förklarar också varför priserna ändå kom fram: trappan skalade bort annat tills något gick igenom, så felet såg ut att handla om det som skalats bort. Med varuuppgifterna på plats bör den fullständiga förfrågan gå igenom på första försöket.
Adressförslaget kommer upp av sig själv. Ett förslag bakom en knapp är ett förslag ingen läser. Säger du «Behåll vår adress» kommer det inte tillbaka — men ändras adressen, eller ändrar FedEx sig, är det ett nytt förslag och då frågar appen igen.
«Använd FedEx adress» sparar direkt. Att fylla i rutorna och sedan kräva ett andra tryck var att fråga två gånger om samma sak.
Notisen om en förenklad förfrågan ligger längst ned, hopfälld och nedtonad. Den öppnar sig och blir röd bara om priserna uteblev — så länge det fungerar behöver ingen se den.
Adressförslaget som en riktig fråga1.67.0
2026-08-27
FedEx förslag på adressen visas nu i en egen ruta med båda versionerna bredvid varandra — er stavning överstruken, deras i klartext, ett fält i taget. Två vägar ut: «Använd FedEx adress» eller «Behåll vår adress», ingen förvald. De har oftast rätt, och det är ett beslut som förtjänar mer än en länk i kanten av ett kort.
Väljer du deras öppnas adressrutan ifylld. Inget sparas förrän du trycker Spara adressen, så det går att ändra sig hela vägen.
Notisen om att FedEx behövde en förenklad prisförfrågan är ihopfälld. Priserna kom fram — det är en anteckning för den som en dag undrar varför en förfrågan tar en sekund extra, inte något som ska stå i vägen för den som bara ska boka.
«Delivery» var aldrig en delstat1.66.0
2026-08-27
Orsaken till allt strul: jag läste Fortnox fält DeliveryState som om det vore en delstat. Det är det inte — det är orderns leveransstatus. Varje order fick därför ordet «Delivery» i delstatsfältet, och FedEx svarade MAXCHAREXCEEDED på adresser som var alldeles riktiga. Det förklarar både USA och Nederländerna, och varför felet följde med överallt.
Fältet läses inte längre. Fortnox orderadress har ingen delstat — den uppgiften finns bara om någon skriver in den, och det är precis vad appen frågar efter när landet kräver den.
Gammal skräpdata städas bort automatiskt vid uppstart. Allt som inte ser ut som en delstatskod nollas; har någon hunnit skriva in CA för hand står det kvar.
Adresskontrollen fick samma delstat och nekade av samma skäl — därför «kontrollen gick inte» på båda ordrarna. Nu skickas ingen delstat som inte går att skicka, och kontrollen får en riktig adress att svara på.
Rutan för delstat står kvar när landet kräver den, även när den är tom. Förut försvann den i samma stund man rensade den, och gick då inte att fylla i igen. Hjälptexten säger nu om fältet krävs för landet eller kan lämnas tomt.
Meddelandet om upphämtningssätt visas bara när det verkligen var det som ändrades. Förut föreslog det ett byte till det värde som redan stod där.
Delstaten skickas bara när den går att skicka1.65.0
2026-08-27
MAXCHAREXCEEDED berodde på att appen skickade delstaten som text. Fältet hos FedEx tar två eller tre bokstäver, så «Noord-Holland» sprängde det — och felet handlar om längd men låter som något helt annat. Nu översätts värdet till en kod, och går det inte utelämnas fältet helt. Det förklarar varför även Nederländerna gav samma fel: adressen var rätt, det var appen som stoppade in en provins där FedEx ville ha en kod.
Svenska namn fungerar. «Kalifornien» blir CA, «Québec» blir QC, med eller utan accent.
Rutan för delstat finns nu där den behövs — inte bara för tre länder. Står det redan något i den går den att rätta oavsett land, för det är just det värdet FedEx klagar på.
Koderna går att välja i stället för att kunnas utantill. Börja skriva i rutan så föreslås landets koder med namn.
Bokningen stoppas med besked om delstaten inte går att använda, i stället för att FedEx säger MAXCHAREXCEEDED efteråt.
Adresskontrollen ber nu FedEx om detaljerna kring vad de ändrat — utan det svarar de med en rättad adress men säger inte vad de rättade, och det var just det appen skulle visa. Ett transaktions-id följer med varje anrop, som FedEx dokumentation föreskriver. Går kontrollen ändå inte står deras felkod utskriven.
Felet kom från mitt eget sista trappsteg1.64.0
2026-08-27
PICKUPTYPE.REQUIRED var självförvållat. Sista steget i trappan som letar efter ett prissvar tog bort upphämtningssättet helt — ett fält FedEx kräver. Steget kunde alltså aldrig lyckas, och eftersom det låg sist blev dess fel också det som rapporterades. Det dolde varför de tidigare stegen nekats.
Nu provas andra upphämtningssätt i stället för inget. Har kontot ingen stående upphämtning är det fältets innehåll som är fel, inte att det finns.
Felet som visas är det första, inte det sista. De senare stegen har redan skalat bort saker, så deras fel handlar om en förfrågan ingen bad om. Alla koder trappan såg står med, så inget försvinner ur felsökningen.
Behövde trappan gå en omväg för att få svar står det i vyn, tillsammans med miljövariabeln som gör omvägen onödig. En omväg kostar väntetid vid varje bokning.
FedEx-loggan syntes inte. Filen hade inga mått i sig, och en SVG utan width och height får ingen egen storlek i en bild — med height:auto räknar flera webbläsare ut noll. Den laddades, ritades, och var osynlig.
Adresskontrollen säger inte längre att den är avstängd när den inte är det. «Inte påslagen» sparas för när FedEx faktiskt svarar så; annars står det vad de sa. Att skickas iväg för att slå på något som redan är på är sämre än att få veta orsaken.
Hoppar du över frakten står allt kvar när du kommer tillbaka1.63.0
2026-08-26
En avslutad runda öppnas i fraktsteget, inte i avslutet. Förut fick man skriva in vikt och mått en gång till och trycka «Klart — skriv ut packsedel» igen bara för att komma dit, vilket gav en andra packsedel i skrivaren för en kartong som redan var packad. Nu fylls kollina i från det som står i databasen och priserna hämtas direkt.
«Ändra vikt och mått» tar dig tillbaka till kollina utan att röra papperen. Kartongen kan ha packats om — en vara till, en annan låda — och att rätta en vikt ska inte kosta ett papper. Knappen där heter «Spara vikterna och gå till frakten».
Behöver du ändå en ny packsedel finns «Skriv ut packsedeln igen» bredvid, som ett eget val.
«Uppdatera priser» på fraktsidan. Priser hämtas när sidan öppnas, och står kartongen kvar en stund — eller svarade FedEx inte första gången — vill man kunna fråga igen utan att gå ur och in.
«Prislistan svarar inte» var delvis mitt fel1.62.0
2026-08-26
Anropen till FedEx hade ingen tidsgräns. Hängde de sig väntade appen tills Vercel stängde av funktionen efter en minut — och då dog hela svaret, inte bara priserna. Det såg ut som ett nej från FedEx fast ingen hunnit säga någonting. Nu har varje anrop tolv sekunder.
Trappan som provar sig fram till ett svar hade blivit för lång. Sex steg med ett omförsök vardera blir tolv anrop, och tolv anrop mot en trög dag hos FedEx tar längre tid än en funktion får leva. Nu har hela trappan en budget på 25 sekunder, och inga omförsök inne i den — nästa steg är omförsöket.
Leveransdagen frågas bara om det finns tid kvar. Priserna är redan i hus då, och en dag är inte värd att riskera hela svaret för.
Felet säger vad som hände. «Svarade inte i tid» och «FedEx sa nej» är olika saker och kräver olika åtgärder — det första löser sig oftast på ett andra försök. FedEx felkod står med, så den går att söka på tillsammans med dem.
Adresskontrollen syns även när den inte går att göra. Är den inte påslagen på FedEx-kontot stod det förut ingenting alls, och då gick det inte att skilja «adressen är bra» från «ingen har tittat».
Delstat, adresshjälp och en handelsfaktura som inte låtsas1.61.0
2026-08-26
En adress i USA, Kanada eller Australien kan nu ha delstat. Fältet fanns inte — Sverige har inget motsvarande — och FedEx svarade att stateOrProvinceCode var fel eller för långt, vilket lät som något var fel i stället för att något saknades. Nu finns rutan, den syns bara för de länder som kräver den, och skriver du California blir det CA.
Ny adresshjälp. Efter varje bokningsförberedelse slår FedEx upp adressen mot postens register och appen visar vad de läser: rättad stavning, saknad delstat, postbox, och deras egna besked om att lägenhetsnummer eller husnummer fattas. Ett förslag, aldrig ett hinder — en ny gata finns inte i registret, och den som packar vet oftare än registret. Knappen «Använd FedEx stavning» fyller i deras version.
Handelsfakturan säger inte längre «elektroniskt till tullen» om en sändning inom EU. EU är en tullunion: Borås–Amsterdam passerar ingen tull, och då finns ingen att skicka fakturan till. Nu står det «behövs inte — inom EU», och de elektroniska dokumenten begärs bara där de betyder något.
Bokningsnumret för pall är valfritt. Appen krävde det, men det var fältet FedEx saknade, inte ett riktigt nummer — er pall till Amsterdam gick igenom med fem nollor. Att tvinga fram ett påhittat nummer är sämre än att lämna det tomt. Blocket följer med som förut, numret bara när det finns.
Fraktraden i Fortnox syns efter bokningen — vad som skrevs, eller varför det inte gick. Förut hände det tyst, och en order som faktureras utan frakt är svår att rätta i efterhand. Saknar ordern valuta hämtas den nu från Fortnox på plats i stället för att raden hoppas över.
Fraktalternativen har fått en egen form: bolagets märke till vänster, tjänsten och leveransdagen i mitten, priset till höger med listpriset överstruket när avtalet ger rabatt. Märket ligger först för den dag listan innehåller mer än ett bolag.
Upphämtningen väljer nästa dag när dagens sista tid passerat. FedEx egen sista tid går före klockslaget appen annars antar, och att dagen flyttats fram står utskrivet.
Efter en bokning med elektronisk faktura visas FedEx kvittens. Att bokningen inte nekades är inte samma sak som att fakturan ligger hos tullen — nu står mapp-id:t de svarar med, eller att det saknas.
Uppladdningen enligt FedEx egen ritning1.60.0
2026-08-26
Jag hade lagt arbetsflödets namn på fel ställe. Det ligger i ett eget rules-objekt vid sidan av dokumentet, inte inne i det — och FedEx svarade samma sak oavsett vilket, «invalid input : WorkFlow Name», utan att peka ut vad som var fel. Nu skickas anropet ordagrant som FedEx eget exempel i deras specifikation för dokumenttjänsten.
Bildtypen heter LETTERHEAD i uppladdningen och LETTER_HEAD i bokningen. Samma sak, två stavningar, två gränssnitt som inte är överens — inget man gissar sig till. Nu används rätt stavning på rätt ställe.
Ett svar med FAILURE i räknas inte längre som lyckat. FedEx kan svara 200 och ändå säga nej i texten, och en bild som inte kom fram ska inte sparas som om den gjorde det.
Kommer det fortfarande ett fel efter det här är det inte formen på anropet — då är det kontot, och det slår FedEx kontaktperson på.
VOEC bara till privatpersoner, och uppladdningen fungerar1.59.0
2026-08-26
Uppladdningen av brevhuvud och namnteckning saknade arbetsflödets namn. FedEx svarade «invalid input : WorkFlow Name», vilket är deras sätt att fråga vad uppladdningen är till för. Nu står det med. Bildtypen stavas dessutom olika i FedEx två gränssnitt — med och utan understreck — så appen provar båda i stället för att gissa.
VOEC följer bara med till privatpersoner. Skatteetaten skriver rakt ut att ordningen bara gäller försäljning till konsument: man kan inte sälja till företag inom VOEC. Appen läser kundens form ur Fortnox och utelämnar numret på en företagssändning. Vet appen inte vilket det är skickas det inte heller — hellre en avi till kunden än moms två gånger.
VOEC-numret måste vara sju siffror och inget annat. Ett nummer med prefix eller bindestreck skickas inte, för ett oläsbart nummer ger samma dubbelmoms som inget nummer alls.
Mottagarens momsnummer går med på företagssändningar. Tullen vill veta vem som importerar, och utan det kan sändningen bli stående medan mäklaren ringer och frågar.
Navigeringen längst ned svävade innanför ramen på datorn. Ramen räknade in en marginal som sidan redan hade, blev tjugo bildpunkter för hög och stack ut under fönsterkanten — medan menyn satt där ramen borde ha slutat. Nu slutar de på samma rad.
Valutan fanns inte, och det märktes inte1.58.0
2026-08-26
Appen kände inte till orderns valuta. Den fanns inte i databasen, så allt räknades som kronor: en order i euro fick ett tullvärde nio gånger för lågt på handelsfakturan, och fraktkostnaden hämtades i kronor. Nu läses valutan från Fortnox och följer med genom hela kedjan.
Fraktpriset hämtas i orderns valuta. FedEx räknar om åt oss — det är enda sättet att få ett belopp som går att skriva på en order i euro utan att någon gissar en kurs.
Avrundningen har ett eget steg per valuta. Femtio kronor är en rimlig knuff uppåt på en frakt; femtio euro vore ett påslag på ett par hundra procent. Grundstegen är 50 för SEK, NOK och DKK, 5 för EUR, GBP, USD och CHF, och de går att ändra per valuta i inställningarna.
Svarar FedEx i en annan valuta än ordern skrivs ingen fraktrad alls. Ett belopp på en orderrad har ingen egen valuta — det ärver orderns, och 650 kronor inskrivet på en eurorder blir 650 euro. Det syns inte, det bara blir fel.
Uppladdningen av brevhuvud och namnteckning kraschade med «map is not a function». Felavläsningen antog att FedEx alltid svarar med en lista av fel, och när de svarade med ett enda fel eller med en HTML-sida dog avläsningen — så FedEx riktiga besked kom aldrig fram. Nu tas svaret som det kommer, och står det något begripligt i det visas det.
Frakten hamnar på ordern, och numren följer landet1.57.0
2026-08-26
Frakten läggs som en artikelrad på kundordern i Fortnox när sändningen bokats. Artikel 100, benämning enligt tjänsten ni valde, priset avrundat uppåt till närmaste femtiolapp. Bokas frakten om ändras raden i stället för att en andra läggas till.
Det är den enda skrivning appen gör i en kundorder, och spärren mot allt annat står kvar. Fortnox byter ut hela radlistan vid en uppdatering, så alla rader måste skickas tillbaka — därför granskas kroppen fält för fält innan den går iväg: bara OrderRows får röras, varje gammal rad måste ha kvar sitt radnummer, och exakt en rad får vara ny. Stämmer inte det skickas ingenting.
Ett fel från Fortnox stoppar inte bokningen. Kartongen är etiketterad och på väg — en makulerad eller redan fakturerad order sägs som en anmärkning efteråt.
Numren som säger vem exportören är har blivit en lista. Ett företag som skickar åt flera håll har flera nummer, och de gäller inte överallt: ett brittiskt EORI är oanvändbart på en sändning till Norge. Varje nummer bär med sig vilket land det gäller för, och finns ett landsspecifikt används det i stället för det allmänna av samma sort.
VOEC går att lägga in. Men VOEC har ingen egen kod i FedEx API — appen skickar det som ett nationellt företagsnummer med texten VOEC, och det bör bekräftas med FedEx innan någon litar på att norsk moms hanteras rätt. Det står också i appen.
Vem som betalar tull och moms syns och går att ändra. Ni skickar DAP — mottagaren betalar — och har alltid gjort det; det stod bara ingenstans. Fraktkostnaden är en annan sak och betalas alltid av er, och det är den hopblandningen som gör att någon tror sig skicka DAP men skickar DDP.
Filväljaren för brevhuvud och namnteckning gick inte att trycka på. Den låg gömd med display:none, och en ruta som inte ritas alls går inte att träffa i Safari på iPhone — knappen såg ut att fungera men öppnade ingenting. Nu ligger filrutan genomskinlig ovanpå knappen, och det är den man träffar.
Moms och EORI, och besked om avläsningen1.56.0
2026-08-26
Momsnummer och EORI går med i sändningen. De ligger under Inställningar → FedEx och skickas som egna fält — tullen läser fälten, inte brevhuvudet, och ett nummer som bara står som text i toppen av en PDF är för dem osynligt. EORI krävs vid export ut ur EU, alltså varje sändning till Norge.
Plocksidan visar när avläsningen mot Fortnox senast kördes. Appen frågar inte Fortnox själv — en schemaläggare utanför appen anropar avläsningen varje minut. Slutar den fungera kommer det inga plocklistor, och ingenting går sönder på ett sätt någon märker. Har det gått mer än tio minuter står det i varningsfärg.
Går den elektroniska fakturan inte igenom säger appen nu vilken av de två orsakerna det är: saknas brevhuvud eller namnteckning står det var man laddar upp dem, och handlar felet om något annat står det att kontot troligen saknar elektroniska handelsdokument för API:et — det kan bara FedEx slå på.
Bilderna skickas med providedImageType, som FedEx egna exempel gör. Ett fält de väntar sig är billigare att skicka än att felsöka.
En packad order står inte kvar när frakten är bokad1.55.0
2026-08-26
En order med bokad frakt försvinner ur Packat och står bara under Bokat. Att stå på två ställen gjorde att samma order räknades två gånger när man tittade på vad som återstod.
Packat har fått en siffra, som Pågår. Bokat får ingen — det är en historik, inte en hög att beta av.
Rutorna för dag och tid är inte längre lika breda som ett textfält. Ett textfält är brett för att man inte vet hur mycket som ska skrivas i det; i en datumruta får aldrig mer än ett datum plats. Full bredd gjorde dem stora utan att göra dem användbarare.
Boka upphämtning såg avstängd ut. Den grå knappen är den man kan strunta i — den här är nästa steg, och har fått husets färg.
Texten om brevhuvud och namnteckning säger vad de är. Brevhuvud är den smala remsan högst upp på ett brevpapper: logga, företagsnamn och adress. Namnteckning är underskriften längst ned. Tullen godtar den elektroniska fakturan bara om den ser ut som en riktig faktura från er, och FedEx har varken det ena eller det andra.
Skannerknappen, papperskorgen och den elektroniska fakturan1.54.0
2026-08-26
Knappen Skanna plocklista gjorde ingenting. Skannerrutan föll bort när sidan gjordes om i 1.49 — knappen satte sitt läge, men det fanns ingenting kvar som lyssnade på läget. Mitt fel, och precis den sortens fel ett bygge inte fångar: koden är giltig, den gör bara inget. Den fungerar igen, och har fått en streckkod på sig. Leta efter nya ordrar har fått en cirkel.
Ordrar går att ta bort ur Packat och Bokat. Avbryts en order efter att den packats eller frakten bokats ska raden gå att få bort ur vägen. Den raderas inte — plockningen är gjord, saldot är skrivet till Fortnox och spårningsnumret kan behöva slås upp långt efteråt. Den syns bara inte längre.
Tar du bort en bokad frakt som inte är avbokad hos FedEx sägs det rakt ut. En etikett som är borta ur appen är inte borta hos FedEx: kartongen åker om någon lämnar in den, och fakturan kommer.
Elektronisk handelsfaktura: nu vet vi varför den nekades. FedEx svarade «This COMMERCIAL_INVOICE requires electronic image», och det saknades varken ett fält eller ett tillstånd — det saknades två bilder. De flesta länder som tar emot elektroniska handelsdokument kräver att fakturan är undertecknad och står på företagets brevpapper, och en faktura FedEx skapar åt oss kan inte uppfylla det av sig själv. Under Inställningar → FedEx laddar du upp brevhuvud och namnteckning en gång, så följer de med varje sändning.
Måtten är FedEx krav, inte mina: brevhuvud 700 × 50 bildpunkter, namnteckning 240 × 25, PNG eller GIF. En större bild blir inte finare, den blir avvisad. Fungerar det ändå inte är nästa fråga om kontot har elektroniska handelsdokument påslaget för API:et — det slår er kontaktperson på hos FedEx.
Leveransdagen letas fram i stället för att pekas ut. Jag har försökt räkna upp ställena FedEx lägger datumet på och fått fel varje gång; listan blir aldrig komplett, bara längre. Nu gås hela svaret igenom och varje fält vars namn handlar om leverans eller dagar plockas upp, var i trädet det än ligger. TWO_DAYS blir «2 arbetsdagar».
Rutorna för dag och tid ser ut som alla andra fält. De stod inte med bland fälten appen formger och fick därför webbläsarens egen utstyrsel — annan ram, annan höjd, annan storlek än fältet ovanför.
Appen flyttar hem till databasen1.53.0
2026-08-26
Appen kördes i Washington medan databasen står i Frankfurt. Varje enskild fråga gick över Atlanten och tillbaka — 93 millisekunder, mätt — och ett sidanrop ställer sällan bara en fråga. Nu körs den i Frankfurt, samma stad som databasen. Resan blir någon millisekund i stället för hundra, och det kostar ingenting.
Frankfurt och inte Stockholm, trots att ni står i Borås: en förfrågan från telefonen är en resa till servern, men servern gör flera resor till databasen för att svara. Den korta sträckan ska ligga där det är flest resor.
Listan över bokade upphämtningar står först på telefonen, med Avboka direkt på kortet. Kommer du från en bokad frakt står formuläret först i stället — då är det formuläret du kom för.
Rutorna för dag och tid sprängde kortet på en telefon. En datum- eller klockruta har en egen minsta bredd som webbläsaren räknar fram, och den lyder den före sin egen bredd. Nu får de krympa.
Upphämtningsknapparna har fått en lastbil. Bilden säger vad det handlar om fortare än ordet gör.
FedEx besked om upphämtningen står på svenska.
Plocket svarar direkt1.52.0
2026-08-26
Plockad-knappen väntar inte längre på servern. Förut gjorde ett tryck två resor — spara raden, hämta hela rundan igen — och under tiden stod knappen kvar och såg otryckt ut. Nu bockas raden av på skärmen i samma stund du trycker, och sparandet sker under tiden. Mätt med en trög uppkoppling: från 1,3 sekunder till en tiondel.
Säger servern nej rullas raden tillbaka och det syns. Ingen rad kan bli avbockad på skärmen men oplockad i verkligheten.
Spärr mot dubbeltryck. Nu när nästa artikel kommer upp direkt sitter en ny knapp där fingret nyss var, och ett andra tryck hade bockat av en vara ingen tagit ur hyllan. Knappen är död en halv sekund efter varje tryck. Skannern är oberörd — där är varje kod en vara någon hållit i handen.
Klart väntar in avbockningar som ännu är på väg. Annars kunde en runda avslutas med sista raden i luften, och då hade det skrivits en restlista på varor som redan låg i kartongen.
Upphämtning går att boka direkt från en bokad frakt. Öppna sändningen i listan — står det ingen upphämtning finns knappen där, med antal kollin och vikt hämtade ur rundan. Finns det redan en står dagen och koden i stället.
Redo-tiden börjar en halvtimme fram från nu, och stängningstiden är 16:00. Ingen är redo just i stunden man trycker, och en tid som passerat nekas av FedEx.
Rutorna för dag och tid är större. Webbläsarens datumrutor krymper till innehållet och blev frimärken bredvid ett vanligt textfält.
De tre rutorna med FedEx tider är borta. Att en tid är möjlig behöver ingen läsa — att den inte är det står kvar, och bara då.
Ny rad under Inställningar: Serverns svarstid. Tryck så mäts avståndet till databasen, och det står var appen körs och var databasen står. Frågan om servern är långsam ska gå att besvara med en siffra.
Någon måste komma och hämta kartongen1.51.0
2026-08-26
Ny sida: Upphämtning. En fraktetikett säger var kartongen ska. Den säger ingenting om att någon ska komma och hämta den — utan en bokad upphämtning står den kvar på kajen tills någon ringer. Nu bokas bilen i appen: dag, tid, antal kollin, vikt, var godset står och en rad till chauffören.
Sidan frågar FedEx vad de klarar innan du bokar. Senaste tid att vara redo, minsta fönster mellan redo och stängning, och vilken tid de annars antar. En bokning med för kort fönster nekas — ibland genom att bilen bara inte kommer — och det ska synas innan, inte efter.
Efter varje bokad frakt kommer frågan om upphämtning, med antal kollin och vikt redan ifyllda. Kommer bilen ändå behöver du inte göra något; annars är det ett tryck.
Upphämtningar går att avboka, precis som sändningar. Platskoden FedEx svarar med sparas — utan den går bokningen inte att ångra.
Leveransdagen syns igen på fraktalternativen. Priset hämtas i en trappa där tjänster skalas bort tills FedEx svarar, och i den trappan föll leveransdagen bort på steg två. Nu frågas dagen separat, på den förfrågan som faktiskt gick igenom — och priset står kvar även om dagen uteblir.
Kugghjulet under Artiklar och Inventering gjorde ingenting. Inställningarna flyttade till en egen sida i 1.49, men knappen på startsidan anropade fortfarande luckan som togs bort. Den är en länk nu. Kuggen syns inte längre när du redan står på inställningssidan.
Formulär blir inte bättre av att bli bredare. På datorn ligger formuläret i en spalt och listan i den andra, i stället för att ett textfält sträcker sig över hela skärmen.
Vågen har rätt, och priserna kommer fram1.50.0
2026-08-26
Bokningen stoppades av att varorna vägde mer än paketet. Det var artikelregistrets vikter som var fel, inte er våg — och FedEx nekar hela sändningen när summan av varuvikterna överstiger kollits. Nu vet bokningen om den vägda vikten och skalar ned varuvikterna proportionellt tills de får plats under den. Väger paketet 4,2 kg så väger innehållet 4,2 kg, oavsett vad registret tror.
Prisförfrågan ger sig inte längre vid första nej. FedEx svarar ofta "We are unable to process this request" utan att säga vilket fält de inte tyckte om, och då stod det "pris okänt" på varje rad. Nu skalas förfrågan av steg för steg — leveransdag, deklarerat värde, önskad valuta, listpris, upphämtningstyp — och det första steg som går igenom får svara.
Priset läses från fler ställen i svaret. FedEx lägger summan olika beroende på tjänst och konto, och läste vi bara ett ställe blev raden prislös fast svaret var fullgott.
Tillbaka-knappen går tillbaka dit du kom ifrån, överallt. Förut hoppade den till en fast sida, vilket ibland var någon helt annanstans än där du var.
"Lägg till förpackning" ligger överst på förpackningssidan. Att scrolla förbi hela listan för att komma åt knappen var onödigt varje gång.
Inställningarna samlade, och en bredd för hela appen1.49.0
2026-08-26
Ny sida: Inställningar. Allt som ställs in en gång ligger där, grupperat efter vad det rör — kopplingar, utskrift, frakt, artiklar, lager. En rad per sak, med en förklaring under så att man ser vad det är utan att öppna det.
Förpackningar och mått låg under Skrivare, för att det var där skrivaren fanns när de byggdes. Nu ligger de under Utskrift, tillsammans med agenterna och programmet.
Skrivaragenterna, nedladdningslänken och provetiketterna för FedEx-certifieringen har flyttat dit också. Fliken Skrivare under Plock visar bara kön och läget — det är driftinformation, inte inställningar, och blandat gick ingetdera att hitta.
Startsidans länklista är kortad från elva rader till sex. Kvar är det som används i veckan.
En bredd för hela appen. Startsidan var 520 pixlar och undersidorna 760, så samma app såg ut som en smal remsa på ett ställe och tog hela skärmen på ett annat. Nu 1120 på en dator, med två kolumner där listorna annars blivit mest tomrum. Telefonen är oförändrad — den är hemmaplan.
Produktbilderna kommer med på papperen igen. Bilderna kräver inloggning, och skrivaragenten är inte inloggad som någon människa — den fick 401 och papperen kom ut med tomma rutor. Nu bär bildernas adresser agentens nyckel.
Packsedeln är alltid på engelska. Den ligger i kartongen och läses lika ofta i Amsterdam som i Borås. Plocklistan och restlistan stannar i huset och är svenska.
Varningen om att vikterna skiljer sig är borttagen.
Papperen ritas från en enda mall1.48.0
2026-08-26
Jag byggde en egen design i stället för att återge er, och det blev fel. Nu finns bara en uppsättning stilar — samma fil, samma klassnamn, samma ordning på elementen. Sidan agenten hämtar och sidan appen visar är samma dokument, och kan inte längre glida isär.
Streckkoden är tillbaka på plocklistan och restlistan. Den saknades helt i den nya varianten, och det är den man skannar för att öppna rundan i telefonen.
Produktbilderna, kryssrutorna, kategorirubrikerna med radantal, restnotiserna, vem som plockade vilken rad och när — allt är tillbaka.
Raderna som förut var flexrader ritas nu som tabeller, både i appen och på pappret. Utskriftsmotorn i Windows kan inte flexbox men ritar tabeller exakt, och samma markering i båda är det enda som håller dem lika.
Provutskriften i agenten skickar nu en av varje sort datorn sköter. Är A4 påslaget kommer en provsida på papper också, som kontrollerar hela kedjan: att agenten når appen, att motorn ritar, att rätt skrivare fick papperet och att inga webbadresser står i hörnen.
Papperen ser ut som förut igen1.47.1
2026-08-26
Den nya utskriftssidan var funktionell men trist. Nu följer den samma uppställning som förut: loggan i hörnet med linjen under, uppgifterna två och två, siffror högerställda med tunna linjer mellan raderna, kategorirubriker i grått mellan hyllorna.
Packsedeln har tillbaka rutan överst med antal kollin, totalvikt och vem som plockade — det man kontrollerar först när kartongen står på vågen.
Restlistan har tillbaka sin orange ruta som säger hur många rader som inte blev fullt plockade.
Signaturraden är tillbaka: namn och datum tryckta med linje under, eller tomma linjer att fylla i för hand på plocklistan.
Allt ritat i tabeller i stället för rutnät. Utskriftsmotorn i Windows ritar tabeller exakt och rutnät ungefär, och ett papper som går till kund ska inte vara ungefär.
Skrivaragentens inställningar rullar nu. På en skärm med förstoring växte fälten ur fönstret utan att gå att nå.
Programikonen är hela ordmärket i alla storlekar, inte bara X:et i de små.
Skrivaragenten skriver ut A4 själv — ingen webbläsare kvar1.47.0
2026-08-26
Programmet ritar nu papperen själv, med utskriftsmotorn som följer med Windows. Ingen webbläsare öppnas, ingenting syns på skärmen. En ruta per dator, och den rutan är programmet.
Motorn är gammal och kan inte flexbox eller React, så appen har en egen enkel utskriftssida i tabellform med exakt samma innehåll. Den läser samma data som den vanliga utskriftssidan och säger samma sak.
Sidhuvud och sidfot nollställs innan utskrift. Utan det trycker motorn webbadressen och sidnumret i hörnen, och en packsedel som går till kund ska inte ha en adressrad på sig.
A4-skrivaren väljs i programmet. Lämnas den tom går papperet till datorns standardskrivare, vilket är det vanliga fallet. Är den ifylld byts standardskrivaren tillfälligt och byts tillbaka efteråt.
Programmet frågar bara efter den sorts papper det kan skriva ut, så kontoret och fabriken kan dela kö utan att ta varandras jobb.
Nytt utseende: appens färger, Texsolv-loggan i huvudet, en lägesrad som är grön när det väntar, gul när det skriver ut och röd när något gick fel. Egen ikon i aktivitetsfältet.
Ert ordernummer står nu på papperen. Det saknades, och det är det numret kunden själv känner igen.
Leveransadressen går att rätta, och varnar innan plockningen börjar1.46.0
2026-08-26
Saknas adressen syns det redan i plocklistan, som en röd markering på raden. Förut upptäcktes det när kartongen stod packad och någon väntade på en etikett.
Adressen visas överst i fraktsteget och går att ändra där. Rättelsen gäller framför Fortnox och följer med ordern, så en delleverans i andra omgången får samma adress. Fortnox rörs inte — ska den stå rätt även där får någon skriva in den där också.
En rättad adress är märkt som rättad. En uppgift någon tagit ställning till ska inte se ut som en som råkade komma med.
Leveransdagen står nu på fraktalternativen. FedEx skickar den bara om man ber om den, och det gjorde appen inte — därför stod det leveransdag okänd på varenda rad. Ett paket framme i övermorgon för hundralappen eller i morgon för femhundra är en fråga man kan ta ställning till; två priser utan datum är det inte.
Skrivaragenten är ett riktigt program nu: ett litet fönster, ikon nere vid klockan, ingen svart konsolruta. Den byggs på plats av Windows egen C#-kompilator och blir tjugo kilobyte i stället för femtiofem megabyte — och slipper därmed både bytecode-felet och Defenders uppmärksamhet.
Agenten och dess A4-fönster delar nyckel men frågar efter var sitt slags papper. Utan den uppdelningen kunde webbläsarfönstret rycka åt sig en etikett det inte kan skriva ut.
Bokade sändningar går att avboka1.45.0
2026-08-26
Knappen Avboka hos FedEx på en bokad frakt. Etiketten blir ogiltig, spårningsnumret dör och ingenting faktureras — så länge paketet inte hunnit lämnas in.
Finns för två skäl. Det ena är att kunna köra hela flödet skarpt utan att skicka något, nu när nyckeln är godkänd för produktion. Det andra är vardagen: en order som packades fel, en kund som ringer och stoppar.
Hela sändningen avbokas, aldrig ett enstaka kolli. En flerkolliförsändelse där ett kolli avbokas lämnar etiketter som säger 1 av 3 om något som numera är två, och det reder ingen ut i tullen.
Etiketter som ligger kvar i skrivarkön tas bort samtidigt. Ett papper som redan kommit ut får någon riva.
Avbokningen syns i listan: spårningsnumret stryks över, och när och av vem står i detaljerna. Raden står kvar — att en sändning bokades och sedan ångrades är också något man vill kunna se i efterhand.
Skrivaragenten byggd på nytt. Den förra exe-filen dog direkt med ett fel om avvisad bytecode: programmet byggs på Linux för Windows, och den formen av förkompilering överlever inte det. Nu bakas koden in som källkod i stället.
Shopify-synken var trasig, och skrivaragenten blev ett program1.44.0
2026-08-25
En kommentar av fel sort fällde hela Shopify-frågan. GraphQL kommenterar med brädgård, inte med snedstreck-stjärna — och den kommentaren jag skrev när HS-koder och vikter lades till gjorde att varje variantsynk svarade PARSE_ERROR. Sedan dess har ingenting kommit från butiken: inte tullfälten, men inte heller streckkoder, saldon eller bilder. Rättat, och ett skydd inlagt som vägrar starta appen om samma sorts kommentar smyger sig in i en fråga igen.
En knapp i stället för två på artikelsidan: Hämta från butiken läser om katalogen och för in uppgifterna i ett svep.
Skrivaragenten finns nu som ett program, Texsolv-skrivaragent.exe. Ingen Node, ingen kommandorad — dubbelklicka, klistra in kopplingskoden från appen, välj etikettskrivare, klart. Den lägger sig i autostart om man vill.
Samma program sköter både etiketter och A4. ZPL går rakt till Zebran, och A4 sköts av ett kioskfönster som agenten startar och vakar över — dör det startas det om. Datorn behöver inte längre vara inloggad i appen: agenten öppnar fönstret med sin egen nyckel.
Kopplingskoden är adress och nyckel hopvikta till en sträng. Ingen ska behöva skriva av trettiotvå tecken vid en dammig packstation.
Fyra flikar under Plock: Pågår, Packat, Bokat, Skrivare. Bokat är listan över bokade frakter, med papperen från varje sändning — plocklista, packsedel och restlista går att öppna igen, fraktetiketten att ladda ner.
Rutan Kom inte ordern hit? är hopfälld som standard, liksom skrivarinställningarna och papperhistoriken. Det som sällan behövs ska gå att hitta utan att ta plats varje dag.
Tull och vikt syns nu när man klickar in på en artikel, med källa per fält och möjlighet att fylla i direkt.
Etiketternas ZPL sparas hela halvåret så att de går att hämta igen. Bara de tunga PDF-erna töms efter en månad.
Bokade frakter har fått en egen lista1.43.0
2026-08-25
Ny sida under Plock: alla bokade sändningar, nyast först. Sök på kund, ordernummer eller spårningsnummer — frågan är oftast var en kartong är, och då ska man slippa minnas vilket ordernummer det var.
Tryck på en rad för detaljerna: tjänst, totalvikt, om handelsfakturan gick elektroniskt, bokningsnummer, och ett spårningsnummer per kolli. Vid tre kartonger är det just den uppdelningen kunden undrar över.
Knapp för att kopiera spårningsnumret och en länk rakt in i FedEx spårning.
Sändningarna sparas i sex månader tillsammans med plockrundan, precis som förut. Nytt är att etiketternas innehåll töms redan efter en månad — en etikett skrivs aldrig ut igen när kartongen är framme, och det är innehållet, inte raden, som tar plats. En handelsfaktura kan vara hundratals kilobyte.
Knappen Synka butiken och hämta på artikelsidan. Appen började läsa HS-koder och vikter från Shopify först nyligen, så en katalog hämtad före dess står tom hur välfyllt det än är i butiken. En körning löser det, men ingen kommer på att den behövs.
Hela kategorin får sin benämning på en knapptryckning1.42.1
2026-08-25
Engelsk benämning går nu att sätta för en hel kategori. Tullen vill veta vad slags vara det är, inte vilken längd — hela solvraden är samma sak för dem, och då ska texten skrivas en gång och inte tusen.
De tre texterna ligger som snabbval: heddles, cord och loop rope. Ett tryck fyller rutan.
Runlockartiklar som slutar på -CA hoppas över, som överallt annars.
Kryssrutan avgör om de som redan har en benämning ska skrivas över. Utan kryss fylls bara de tomma, och appen säger efteråt hur många som ändrades och hur många som hoppades över.
Ny ruta högst upp: vad butiken faktiskt har. Antal artiklar som matchar en variant, hur många av dem som har HS-kod, ursprung, vikt och engelsk titel, samt när Shopify senast synkades. Står det noll hämtade går det nu att se om det beror på att kopplingen inte träffar, att butiken saknar uppgifterna, eller att ingen synk körts sedan appen började läsa fälten.
Artikeluppgifterna fylls i på en sida i stället för en i taget1.42.0
2026-08-25
Tullsidan är nu en tabell med rutor i. HS-kod, ursprung, engelsk benämning och vikt går att fylla i för trettio artiklar och sparas med en knapptryckning, i stället för trettio dialoger.
Filtrera på vad som saknas, vad butiken redan vet, eller allt. Sök på artikelnummer eller namn, och begränsa till en kategori.
Varje ruta visar var värdet kommer ifrån. Grå text är ärvd från butiken eller Fortnox, svart är ifylld här, kursiv ljus text är bara ett exempel. En siffra utan ursprung går inte att felsöka.
Knappen Hämta butikens uppgifter flyttar in Shopifys HS-koder, ursprungsländer, vikter och engelska produkttitlar som appens egna. De användes redan, men så länge de bara låg i butiken skrevs de över vid varje synk — en rättelse här hade försvunnit. Nu står den kvar. Ingenting som redan är ifyllt rörs.
Vikterna står i gram, precis som i Shopify. Paketvikten vid packningen är kilo, för det är vad FedEx frågar efter och vad vågen visar.
HS-koden städas när den sparas: 8448 4200 blir 84484200. Ursprunget översätts, så Sverige blir SE.
Frakten går att boka även när FedEx prislista är nere1.41.2
2026-08-25
Pris och bokning är två skilda tjänster hos FedEx, och prislistan har legat nere i perioder hela dagen. Förut stannade fraktsteget då helt, trots att bokningen fungerade.
Nu visas kontots tjänster utan pris i stället, och etiketten går att skriva ut som vanligt. Priset kommer på fakturan ändå.
Fraktgods sorteras bort under 68 kg och pakettjänsterna bort över, så att ingen råkar välja en palltjänst till en kartong.
Knappen Hämta adressen från Fortnox igen visas bara när det faktiskt är adressen som fattas. En knapp som inte kan hjälpa ska man inte lockas att trycka på.
Leveransadressen hämtas om av sig själv1.41.1
2026-08-25
FedEx svarade att postnumret saknades trots att det står rätt i Fortnox. Förklaringen: adressen skrivs en enda gång, när orderraderna hämtas, och rörs aldrig mer. En order som hann synkas innan adressfälten fanns i appen blev därför stående med tomma rutor för alltid.
Nu hämtas ordern om från Fortnox automatiskt så fort något fattas i adressen — innan någon ens får se ett felmeddelande. Är den ifylld där löser det sig utan att ni märker något.
Fattas den även i Fortnox säger appen det rakt ut, i stället för FedEx kod. Då är det ordern i Fortnox som ska rättas.
Adressen appen faktiskt har visas i rutan. Att jämföra den med Fortnox var det enda sättet att se skillnaden, och det gick inte förut.
Knappen Hämta adressen från Fortnox igen finns kvar för det fall Fortnox var nere just då.
Frakten bokas där packningen slutar1.41.0
2026-08-25
När packsedeln gått till skrivaren fortsätter appen till frakten i stället för att lämna rundan. Vikt och mått är redan ifyllda, adressen kommer från ordern, varuuppgifterna från artikelregistret — det enda som ska väljas är tjänsten.
Alternativen kommer från FedEx, billigast överst, med pris och leveransdag. Ett tryck väljer, nästa bokar. Etiketterna går till etikettskrivaren, en per kolli.
Handelsfakturan går elektroniskt till tullen. Ingen plastficka, ingen utskrift. Är ETD inte påslaget hos FedEx bokas sändningen ändå, med papper i stället — en frakt ska aldrig stanna på att en finess saknas.
Vägt jämförs med beräknat. Skiljer de sig mer än dubbelt säger appen till: ett kolli som skrivits in som 1,2 i stället för 12 kg ger ett pris som ser rimligt ut ända tills FedEx väger om på terminalen.
Spårningsnumret sparas per kolli, och tjänsten och priset på rundan. När kunden ringer och undrar var kartongen är finns svaret i appen.
HS-koder kontrolleras innan bokning när sändningen går utanför EU. Saknas de stoppas bokningen här i stället för att sändningen fastnar i tullen en vecka senare.
Går det inte att hämta priser är ordern ändå klar och papperen utskrivna. Frakten kan bokas senare — den får aldrig hålla kvar en färdigpackad order.
Bokningsnumret krävs — nu prövat i stället för gissat1.40.2
2026-08-25
Trappan avgjorde det. Utan expressFreightDetail alls: nekad. Med blocket men utan nummer: nekad. Med nummer: godkänd. Min gårdagsteori om att blocket var problemet var fel, och nu vet vi det i stället för att tro det.
Numret är en platsreservation på ett flygplan, inte en bilbokning. Därför hjälper det inte att chauffören har bakgavellyft, och därför går det inte att hitta på. Det går heller inte att hämta via något FedEx API — jag har gått igenom Pickup-, Ship-, Freight- och Open Ship-gränssnitten. I Pickup-API:et är bokningsnumret något man skickar in, aldrig något man får ut.
Skarpt läge vägrar dokumentationens exempelnummer 123456789812. Testmiljön sväljer det, men en riktig etikett med en påhittad bokning ser korrekt ut ända tills pallen blir stående på terminalen. Det är det sämsta sättet att misslyckas på.
Värt att ta med FedEx: deras egen dokumentation säger att bokningsnumret är valfritt för Express Freight inom EU och från EU till land utanför — alltså precis era sträckor, både Amsterdam och Oslo. Att kravet ändå slår till är en kontoinställning hos dem, inte något appen kan lösa.
Bokningsnumret var kanske aldrig kravet1.40.1
2026-08-25
BOOKING.CONFIRMATION.NUMBER.INVALID kom när appen skickade expressFreightDetail utan att fylla i numret. Det betyder inte att numret alltid krävs, utan att har man med blocket ska numret sitta i det. Appen utelämnar nu hela blocket när inget nummer finns, i stället för att skicka det halvtomt.
Spärren som hindrade bokning utan nummer är borta. Den byggde på min tolkning, och tolkningen var inte prövad.
Felsökningens trappa går nu från minst till mest och stannar vid första träffen. Svaret blir därmed det minsta anrop FedEx accepterar — och därmed också om numret behövs på riktigt.
FedEx europeiska servicehandbok säger att förbokning krävs för fraktgods mellan 68 och 1 000 kg. Det är ett operativt krav på hämtningen; om API:et hävdar det får trappan avgöra.
Pallen föll på ett objekt där FedEx ville ha ett tal1.40.0
2026-08-25
totalWeight skickades som {units, value}. Överallt annars i FedEx API är en vikt just så — men requestedShipment.totalWeight är enligt schemat ett vanligt tal, och enheten läses av från kollits vikt. Ett objekt där räckte för att hela anropet skulle nekas med Invalid field value in the input, utan att fältet pekades ut. Alla andra varianter i felsökningen föll på samma sak eftersom de bar med sig det.
Felsökningen avslöjade det själv: varianten utan totalWeight var den enda som kom förbi och i stället klagade på bokningsnumret. Ett annat felmeddelande betyder att valideringen kommit längre.
Bokningsnumret krävs alltså på riktigt. Det är inte min gissning — FedEx svarar BOOKING.CONFIRMATION.NUMBER.INVALID när det saknas. Det finns nu ett fält för det på provetikettsidan, och appen säger ifrån innan anropet i stället för att låta FedEx göra det.
68 kg är taket per kolli för egen förpackning. Det står nu svart på vitt i felsökningen: YOUR_PACKAGING cannot exceed the limit of 68.00 KG. Därför går det inte att smyga förbi fraktgodset genom att bara ange mått och vikt.
Nytt korsprov delar pallen på fyra paket under taket och bokar dem som vanlig pakettjänst. Går det finns en väg runt, om än med fyra etiketter i stället för en.
Felsökningen slutar låta ett tyst pris tysta bokningen1.39.1
2026-08-25
Pris och bokning är två skilda tjänster hos FedEx. Den ena kan ligga nere medan den andra svarar — och det är precis vad som händer nu: paketetiketterna kommer ut, men ingen prisförfrågan går fram. Min felsökning hoppade över alla bokningsförsök så fort priset var tyst, och gömde därmed undan det enda svar som betydde något.
Bokningsförsöken körs nu alltid. Prislistan är sammanhang, inte en spärr.
Två korsprov är nya och avgör saken: samma pall bokad som pakettjänst, och fraktgodstjänsten bokad med ett litet paket. Går pallen som paket men inte som fraktgods är det tjänsten kontot saknar. Går tjänsten med paket men inte med pall är det vikten eller måtten. Går ingendera är det sträckan eller miljön.
Slutsatsen står utskriven överst i felsökningen i stället för att behöva läsas ut ur raderna.
Pallarna nekades av ett fält som inte finns1.39.0
2026-08-25
physicalPackaging är borttaget. Fältet finns inte i FedEx Ship-API över huvud taget — jag lade in det på gissning i går, och ett okänt fält är i sig nog för att hela anropet ska nekas med Invalid field value in the input. Det förklarar varför alla åtta varianter i felsökningen gav exakt samma svar.
expressFreightDetail följer nu alltid med fraktgods. Att det saknades är troligen varför den allra första pallen till Oslo nekades — den tjänsten fanns, till skillnad från Economy Freight.
Regional Economy Freight är rätt tjänst inom Europa. FedEx tjänstelista bekräftar 22 länder med Sverige, Norge och Nederländerna bland dem. International Economy Freight, som appen provade först, går inte på era sträckor.
Bokningsnumret putsas till siffror och kapas vid tolv. Schemat kräver 5–12 siffror; ett längre eller smutsigt värde hade nekats.
Anrop som nekas med ett tillfälligt fel görs om en gång. FedEx testmiljö låg nere under gårdagens försök och gav olika koder på samma fråga — ett omförsök skiljer den sortens strul från ett riktigt fel.
Vikttrappan i felsökningen börjar med ett vanligt litet paket. Går inte ens det att prissätta är det miljön som ligger nere, och då säger resten ingenting.
Felsökningen skiljer nu på fel fält och stängd tjänst1.38.1
2026-08-25
Alla åtta bokningsvarianter för pall gav samma svar. När varje variant nekas lika är det inte fälten det sitter i, och då är felsökningen ställd fel fråga.
Felsökningen börjar därför med en vikttrappa: 30, 60, 68, 70, 100 och 250 kg, plus 250 kg fördelat på fyra kollin. Prisförfrågan bär inga fraktfält alls, så vänder svaret precis vid 68 kg är det fraktgodset kontot inte har, inte något appen skickar.
Går inte priset att hämta hoppas bokningsförsöken över med en förklaring, i stället för att åtta identiska nekanden ska rulla förbi.
FedEx felkoder står nu utskrivna vid varje rad. Det är dem supporten frågar efter.
Rätt fraktgodstjänster, och en knapp som säger varför en pall nekas1.38.0
2026-08-25
International Economy Freight är borta. Er egen prislista på fedex.com visar Priority Freight och Regional Economy Freight på både Nederländerna och Norge — Economy Freight erbjuds inte på era sträckor alls, och en tjänst som inte erbjuds går inte att boka.
Regional Economy Freight finns i stället. Det är den billiga pallfrakten inom Europa: 746 kr mot 3 934 kr till Amsterdam i er egen prislista.
Fraktgodsanropen bär nu physicalPackaging och expressFreightDetail. FedEx kräver att sändningen talar om att godset står på pall, och de säger inte vilket fält de saknar när det uteblir.
Nekas en pall finns knappen Felsök varför. Den frågar först FedEx vad som går att boka på sträckan, provar sedan bokningen med ett fält i taget ändrat och rapporterar vad varje variant gav — i stället för att någon ska gissa sig igenom en runda per försök.
Ett avvisat anrop går att läsa. Vilka fält FedEx pekade ut visas i klartext, och kontonumret döljs.
Pall går att boka1.37.0
2026-08-25
Över 68 kg räknas sändningen som fraktgods hos FedEx och byter tjänst. International Priority Freight och International Economy Freight finns nu med — samma API som paketen, men med totalvikten för hela sändningen i anropet.
Provetiketter finns för båda, så att de kan tas med i etikettcertifieringen. Görs de inte nu krävs en ny runda med tre nya arbetsdagars väntan innan pall kan bokas skarpt.
Testknappen under Inställningar frågar också efter en pall på 250 kg. Svaret säger om ert konto över huvud taget har fraktgods påslaget — det går inte att läsa ut någon annanstans.
Bokningsnummer från FedEx kan skickas med när en sträcka kräver det. Fältet utelämnas när det saknas; ett tomt fält avvisas.
Varuuppgifter krävs vid varje landsgräns, inte bara utanför EU1.36.1
2026-08-25
Sändningarna till Amsterdam nekades med att tulluppgifter saknades. Min missuppfattning: EU är en tullunion, så ingen tull tas ut och ingen handelsfaktura behövs — men FedEx räknar varje sändning över en landsgräns som internationell och vill ha varuuppgifterna ändå.
Nu följer de med så fort avsändarens och mottagarens land skiljer sig. Inrikes sändningar behöver dem fortfarande inte.
EU-regeln lever kvar där den hör hemma: den avgör om packaren ska hindras av att en HS-kod saknas, inte om uppgifterna ska skickas. HS-koden utelämnas hellre än skickas tom.
Saknas varuuppgifterna helt vid en gränsöverskridande sändning säger appen det innan anropet görs, i stället för att låta FedEx svara med en kod.
Fraktsedlar från FedEx, och provetiketter för certifieringen1.36.0
2026-08-25
Appen kan boka en sändning hos FedEx och få tillbaka etiketten. Den kommer som ZPL och går rakt till Zebran utan att någon behöver tolka den — vilket är precis vad FedEx granskar vid etikettcertifieringen.
Flera kollin ger en etikett per paket, och för sändningar utanför EU följer fraktsedeln med som eget dokument.
Tulldeklarationen byggs av varorna på ordern: beskrivning, ursprungsland, HS-kod, antal, värde och vikt. Går sändningen inom EU utelämnas den helt.
Ny sida under Plock → Skrivare: Provetiketter. Den bokar en testsändning per tjänst ni ansöker om och lägger etiketterna i skrivarkön — de sex papper FedEx vill ha inför certifieringen, inklusive flerkolliexemplet och fraktsedeln.
Ingenting av det kostar pengar. Testmiljön bokar inga riktiga sändningar, och sidan vägrar köra i skarpt läge.
Skrivaragenten — flera skrivare blir möjligt1.35.0
2026-08-25
Varje papper i kön har nu ett format och en roll: A4 ritas av webbläsaren som förut, fraktetiketter går som rå ZPL till en etikettskrivare. Ingen kan råka hämta den andres papper — utan det hade kiosken skrivit ut ZPL-kod som text på ett A4.
Skrivaragenter: små program som står vid en skrivare och lyssnar. De loggar in med egen nyckel i stället för någons användarkonto, eftersom en dator vid ett packbord inte ska bära en människas session.
Nyckeln skapas under Plock → Skrivare → Lägg till skrivaragent och visas en enda gång. Den lagras hashad; tappas den skapar man en ny.
Listan visar när varje agent senast hördes av, så att en tyst dator går att upptäcka innan någon står och väntar på ett papper.
Kioskfönstret fungerar precis som förut och tar hand om A4. Agenten tar etiketterna.
Rättade en tabellordning som gjorde att en helt ny databas inte kunde skapas.
Avsändarlandet översätts, och syns1.34.2
2026-08-25
FedEx vill ha SE, inte Sverige. Skrev man landets namn i miljövariabeln svarade de ORIGIN.COUNTRY.INVALID och inget mer. Nu översätts landsnamn till landskod automatiskt, både för avsändare och mottagare.
Postnumret får innehålla mellanslag och gatuadressen får vara tom utan att anropet blir konstigt.
Inställningarna visar avsändaradressen appen faktiskt skickar. Ett fel i en miljövariabel ska gå att se, inte gissas fram ur en felkod.
Testmiljön har ett eget FedEx-konto1.34.1
2026-08-25
FedEx delar ut ett särskilt försändelsekonto för tester tillsammans med testnycklarna. Produktionskontot fungerar inte mot sandbox — och svaret man får är svepande, inte förklarande.
Lägg testkontot som FEDEX_ACCOUNT_NUMBER_test, så används det i testläge och produktionskontot i skarpt läge.
Felen från FedEx visas nu med kod och vilket fält de gäller, och står på engelska. Den svenska översättningen sa ingenting man kunde felsöka på.
Går det ändå fel i testläge med produktionskontot inlagt säger rutan det rakt ut i stället för att låta någon börja leta i adresserna.
Kopplingen till FedEx1.34.0
2026-08-25
Appen kan logga in mot FedEx och hämta fraktpriser. Under Inställningar för appen finns nu Frakt via FedEx med en knapp som gör ett riktigt anrop och visar vad de svarar — så att man ser att nycklarna sitter innan någon står vid packbordet.
Test och skarpt läge samsas. FEDEX_ENV avgör vilken miljö som gäller, och när etikettcertifieringen är godkänd byts den enda variabeln — ingenting annat i koden.
Priserna sorteras billigast först och visar både ert avtalade pris och listpriset. Vi frågar aldrig efter en bestämd tjänst, utan låter FedEx svara med allt som går på sträckan — en hårdkodad lista hade tystat en tjänst ni faktiskt betalar för.
Fel från FedEx blir läsbara. Är postnumret ogiltigt står det så, tillsammans med vilket fält som klagades på — det är den uppgiften gränssnittet behöver för att kunna peka på rätt ruta.
Leveransadressen sparas nu på ordern vid inläsningen, så att en bokning inte behöver fråga Fortnox medan packaren väntar.
Vikt och tulluppgifter — grunden för fraktbokningen1.33.0
2026-08-25
Appen räknar ut vad ett kolli väger: artiklarnas egenvikt gånger antal, plus kartongens egenvikt. Förslaget står på avslutssidan med en knapp för att använda det — vågen och packaren har fortfarande sista ordet.
Artiklar utan känd vikt räknas aldrig som noll i det tysta. De listas vid namn, så att man vet att totalen är ofullständig.
HS-koder, ursprungsland och vikter hämtas nu automatiskt från Shopify vid varje synk. Artikelvikten från Fortnox används som reserv.
Ny sida under Inställningar → Packning: Tulluppgifter. Den visar hur stor andel av de lagerförda artiklarna som har HS-kod, ursprungsland och vikt, och listar dem som saknar något så att luckorna går att fylla i lugn och ro i stället för mitt i en packning.
Det som fylls i där vinner alltid över det som synkas in, och står kvar. Varken Shopify eller Fortnox ändras — Fortnox artikelregister har inga tullfält alls.
Förpackningarna har fått egenvikt vid sidan av maxvikt. Egenvikten räknas med i fraktvikten; maxvikten är bara ett stöd när man väljer. Alla nio står på 50 gram.
Ta bort plocklistor, engelsk packsedel och en tillbakaknapp som fungerar1.32.0
2026-08-24
Papperskorg på varje pågående plocklista, med en fråga innan den försvinner. Papper som ligger och väntar på utskrift tas bort samtidigt — annars kom plocklistan ur skrivaren en stund efter att man tagit bort den.
Knapp för att ta bort alla plocklistor som ingen börjat plocka, för dagen då avläsningen lagt upp femtio på en gång. Rundor där någon bockat av något lämnas i fred.
Packsedeln skrivs på engelska när ordern går utomlands. Landet läses ur kundordern i Fortnox — leveranslandet först, fakturalandet som reserv. Tomt land räknas som Sverige. Plocklistan och restlistan är alltid på svenska; de stannar i huset.
Datum, siffror och enheter följer papperets språk. En engelsk packsedel får 24/08/2026 och pcs i stället för 24 aug. 2026 och st.
Tillbakaknappen på sidan Allt plockat gjorde ingenting. Nu leder den ut ur rundan, och det finns en väg tillbaka in till artiklarna.
Ångra en avbockning: står du på en rad som redan är avbockad byts knappen ut mot Ångra avbockningen.
Ofakturerade ordrar räknades som fakturerade1.31.2
2026-08-24
Fortnox skickar strängen "0" i fakturafältet på en order som inte är fakturerad. Appen sparade den rakt av och läste den som ett fakturanummer — så varenda ofakturerad order stämplades som expedierad, och därmed fick ingen order någon plocklista alls.
Nu betyder noll ingen faktura. Redan sparade nollor städas bort automatiskt vid nästa start.
Samma sak påverkade tillverkningsförslagen: en order med fakturanummer räknas som helt avdragen ur lagret, och med noll som fakturanummer blev saldot före ordrarna för stort och behovet för litet.
Fråga appen varför en order inte fick plocklista1.31.1
2026-08-24
Skriv ordernumret i rutan Kom inte ordern hit? och tryck Fråga. Appen går igenom hela kedjan och säger var ordern stannade: finns den i appen, är den inom tidsfönstret, har den rader att plocka, räknas den som lagd för hand, är den fakturerad, är den utskriven i Fortnox, och finns det redan en plocklista.
Ordern läses live från Fortnox och jämförs med appens kopia. Skiljer de sig står det utskrivet — det är nästan alltid svaret.
Knapp för att lägga upp plocklistan ändå, direkt i svaret.
Skanningen fungerar igen, och inställningarna har fått rubriker1.31.0
2026-08-24
Skanning under plockning fungerar. Appen jämförde den skannade koden rakt av mot artikelnumren på ordern, men det som sitter på varan är en EAN-kod — så varje skanning svarade att varan inte stod på ordern. Nu bär varje rad med sig alla koder som kan sitta på den: artikelnummer, EAN och Shopifys streckkod.
Skannar du något som finns i lagret men inte på ordern står det numera vilken vara det var, i stället för en rad siffror.
Knappen Skanna vid förpackningen öppnar kameran. Skannerrutan ritades bara i plockläget, så på avslutssidan hände ingenting alls när man tryckte.
Inställningarna är uppdelade under rubriker: Överblick, Lager, Streckkoder, Packning och Appen. Elva rader i rad hade blivit en vägg att läsa igenom varje gång.
Etiketter heter numera Taggar på artiklar, så att det går att skilja från streckkodsetiketterna. Plocklistor är borta ur listan — de har egen plats i menyraden.
Plock i menyraden, och plocklistan väntar tills ordern är klar1.30.0
2026-08-24
Plock ligger nu i menyraden längst ner, mellan Inventering och Tillverkning. Fyra platser i stället för tre.
Tillverkning har fått en ny ikon. Skiftnyckeln såg mest ut som ett suddigt streck i den storleken — nu är det en fabrik.
Plocklistan väntar tills ordern är utskriven eller mejlad i Fortnox. Då hinner du skriva färdigt utan att pappret kommer i förtid. Går att stänga av på Plocklistor → Kom inte ordern hit?, och då kommer listan så fort ordern har rader.
Står ordern och väntar syns det: Leta efter nya ordrar nu svarar Inte utskriven i Fortnox än.
Rätt kod på rätt kartong1.29.1
2026-08-24
Liten Rulle Pack o plock är borttagen ur förpackningslistan — den kartongen används inte.
Därmed flyttades de två sista koderna ett steg: Stor Rulle CAD05N0 och Varubrev har nu sina egna EAN-koder, och alla nio förpackningar går att skanna.
Förpackningar, flera kollin och färre papper i onödan1.29.0
2026-08-24
Fakturerade ordrar får ingen plocklista. En fakturerad order är expedierad, och pappret hörde till en kartong som redan stod hos kunden. Appen frågar Fortnox om fakturanumret precis innan pappret läggs i kön, så det spelar ingen roll om uppgiften hunnit bli gammal i appens kopia.
Artikel 100, frakten, står inte längre på plocklistan. Den gick inte att plocka från någon hylla, och glömde man bocka av den räknades den som rest och gav ett extra papper. En order som bara innehåller frakt får ingen plocklista alls.
Förpackningar: välj kartong i en lista — eller skanna kartongens EAN-kod — så fylls måtten i av sig själva. Listan med era tio förpackningar ligger inne och redigeras på Plocklistor → Skrivare → Förpackningar och mått.
Flera kollin per order, vart och ett med egen förpackning, egna mått och egen vikt. Packsedeln listar dem rad för rad med totalvikt underst.
Bilderna: en artikel som hade en rad utan bilddata gav en trasig länk och såg bildlös ut fast butiken hade en bild. Och en färgvariant utan egen bild lånar nu produktens — vita solvar hade ingen bild medan de röda hade det, fast det är samma vara.
Packsedeln är ifylld när den kommer ur skrivaren: Kontrollerat av står med namnet på den som packade, och datumet är dagens. Raden Utlämnat till är borta, och likaså raden längst ner om papper och ordernummer.
Töm kön-knapp på skrivarfliken, för dagen då något oväntat lagt femtio papper i kö.
Vår referens lästes aldrig in — därför kom inga plocklistor1.28.2
2026-08-24
Listan över ordrar som Fortnox skickar innehåller bara ett urval av fälten, och Vår referens är inte ett av dem. Fältet stod därför tomt på varje order i appens kopia, och eftersom tomt fält betyder webbshopsorder fick ingen order någon plocklista.
Nu läses Vår referens ur den fullständiga ordern, som ändå hämtas för radernas skull. Ordrar som redan hunnit läsas in utan referens frågas efter en gång och lagas i efterhand.
Avläsningen kan inte längre råka nolla fältet. Saknas det i svaret behålls det som redan står — förut skrevs det över med tomt vid varje körning.
Ny knapp på plocklistesidan: Leta efter nya ordrar nu. Samma avläsning som schemaläggaren gör varje minut, men på begäran — och den visar vad som hittades och vad som valdes bort, med anledningen utskriven.
Ny ruta: Kom inte ordern hit? Den listar vilka värden som faktiskt står i Vår referens på era senaste ordrar och vilka av dem som ger plocklista. Rutan syns alltid, även när listan är tom — det är just då man undrar.
Appen har fått en egen ikon1.28.1
2026-08-24
Det röda X:et ur loggan står nu i webbläsarens flik, och i Windows aktivitetsfält när skrivarfönstret körs som eget fönster. Förut stod det en tom sida där.
X:et och inte hela ordmärket, eftersom ikonen oftast ritas i 16 eller 32 bildpunkter — sju bokstäver blir en grå fläck i den storleken.
Plocklistor: papper ur skrivaren, plockning i telefonen1.28.0
2026-08-24
Ordrar som läggs för hand i Fortnox får en plocklista utskriven av sig själv, på A4. Ordrar från webbshoppen får ingen — de går som förut via Shipmondo. Skillnaden appen går på är Vår referens: tomt fält betyder webbshoppen, står det ett namn är ordern lagd för hand. Vilket namn spelar ingen roll.
Pappret har en streckkod. Skanna den med appen så öppnas plockningen för just den ordern, en artikel i taget: stor bild, artikelnummer, benämning och antal. Handskannern fungerar direkt utan att man trycker på något.
Artiklarna kommer i kategoriordning — SOLV först, sedan CORD och så vidare, samma ordning som kategorilistan i inställningarna. Bilder står både på pappret och i telefonen.
Går inte hela antalet att plocka trycker man Färre. Det som blir över hamnar på en restlista som skrivs ut automatiskt när rundan avslutas, tillsammans med packsedeln — två papper.
Man kan gå ur mitt i och komma tillbaka. Rundan står kvar där den var, och nästa skanning av samma papper landar på rätt artikel.
Innan man avslutar går det att fylla i vikt, mått och antal kollin. Inget måste — fylls det i står det på packsedeln.
Packsedeln visar vem som packat, när, vad som kom med och vad som blev rest. Den går i paketet.
Utskriften sköts av ett fönster som står öppet på datorn vid skrivaren: /skrivare. Det frågar efter nya papper var tionde sekund och skriver ut dem tyst. Är datorn avstängd ligger kön kvar tills den vaknar — ingenting går förlorat.
Packade ordrar sparas i sex månader och städas sedan bort av sig själva. Fliken Packat visar vad som packats, av vem och när.
Adressraden längst ner på utskrifterna är borta. Den ska inte stå på ett papper som ligger i kundens paket.
Appen skriver fortfarande ingenting i kundordern i Fortnox. Plocklistan är ett arbetspapper.
Kundordern går att öppna, och loggan står på utskrifterna1.27.0
2026-08-24
Tryck på en order i listan över överhoppade ordrar så öppnas den. Där står kunden med adress, leveransadress, referenser, telefon, leveranssätt och kommentarer — hämtat direkt ur Fortnox — och allt kunden beställt, med lagersaldo per rad.
Knapp för att lägga upp tillverkningsordern ändå, även när uträkningen inte ser något behov. Då tas hela den beställda mängden med, och antalen går att ändra på tillverkningsordern efteråt.
Ordern går att skriva ut eller spara som PDF, med rutor för plockat av, kontrollerat av och datum.
Texsolv-loggan står nu överst på alla utskrifter: kundorder, tillverkningsorder och inventeringsunderlag. Streckkodsetiketterna är orörda — säg till om loggan ska in där också.
Appen ändrar fortfarande aldrig något i en kundorder. Sidan läser bara.
En ruta i stället för två för frågan om varför en order inte syns1.26.2
2026-08-24
Sökrutan och listan över överhoppade ordrar låg i var sin ruta bredvid varandra — två ställen att leta på för samma sak. Nu är de en: ordernumret överst, listan under.
Antalet stämmer med det som visas. Förut stod totalen i rubriken medan listan bara innehöll de senaste, utan att det sades. Nu står det rakt ut: hur många det är totalt, hur många som listas och hur många äldre som inte gör det.
Listan över överhoppade ordrar: nyast först, och kapad1.26.1
2026-08-24
Ordrarna kom i den ordning uträkningen råkade gå igenom dem — äldst först. Nu ligger de nyaste överst, med orderdatum på raden.
De femtio senaste listas. Är de fler står det hur många äldre som inte visas.
En bestämd order söker du fortfarande upp med Varför syns inte min order? ovanför, oavsett hur gammal den är.
Behovet räknas ur lagersaldot, inte ur orderns kryssrutor1.26.0
2026-08-24
Ni bockar raderna som levererade när ni lägger ordern i Fortnox, för att lagret ska dras av direkt. Appen läste det som att varorna gått ut och tystade ordern. Samma sak gällde fakturan på butiksordrar och fältet Sent — alla tre sätts när ordern skapas, ingen av dem säger något om att varan lämnat huset.
Nu används inget av dem som bevis. Behovet är exakt minusdelen av lagersaldot: eftersom Fortnox drar av saldot direkt — även förbi noll — är ett minussaldo summan av det som är sålt men inte tillverkat.
Artiklar med täckning i lager ger inga förslag. Artiklar som gått under noll föreslås med precis den mängd som fattas.
Bristen läggs på de nyaste ordrarna, eftersom de äldre får sin täckning först i uträkningen. En order som verkligen är skickad har alltså redan fått sitt.
Gamla ordrar hålls fortfarande borta av åldersgränsen i inställningarna, och ett förslag man tackat nej till kommer inte tillbaka.
Genomgången syns även när det inte finns några förslag1.25.1
2026-08-24
"Varför syns inte min order?" låg inne i förslagslistan och ritades bara när det FANNS förslag — alltså dold i precis det läge man behöver den. Samma sak med listan över överhoppade ordrar. Båda ligger nu överst på fliken Nya, alltid.
Ordrar lagda för hand i Fortnox föreslås igen1.25.0
2026-08-24
En order du la upp för hand i Fortnox dök aldrig upp som förslag. Orsaken: appen läste Fortnox fält Sent som "varorna har gått ut". Det betyder i själva verket "dokumentet är utskrivet eller mejlat" — vilket sker direkt när du skickar orderbekräftelsen till kunden. Ordern tystades alltså samma sekund den skapades.
För ordrar lagda för hand är det nu det levererade antalet som avgör, precis som det ska. Utskrift betyder ingenting.
För ordrar från webbshopen är allt som förut: där sätts både faktura och levererat antal direkt, så utskriften är det enda som finns att gå på.
Samma fel drog åt andra hållet också: en utskriven order räknades som redan avdragen ur lagret, vilket gjorde behovet för litet. Rättat.
Nytt under Nya: "Varför syns inte min order?". Skriv ordernumret så går appen igenom hela kedjan steg för steg — finns den i Fortnox, är den hämtad, är raderna inlästa, har den redan en tillverkningsorder, vad säger lagret — och svarar rad för rad. Finns ordern inte i appens kopia frågas Fortnox direkt.
Obs: ordrar från de senaste veckorna som skickats utan att bokas som levererade i Fortnox kan nu dyka upp som förslag. Tryck Behövs inte på dem.
Butikens bilder går också att lägga på artiklarna i Fortnox1.24.0
2026-08-21
Har artikeln en produktbild i webbshopen går den nu att skicka till Fortnox utan att någon fotograferar om den. Bilden hämtas från butiken och läggs på artikeln.
Under Inställningar står nu tre tal: hur många bilder som ligger på artiklar i Fortnox, hur många som fotats i appen men inte kommit vidare, och hur många artiklar som har en bild i butiken men inte i Fortnox. Talen visas även när de är noll — förut försvann hela rutan då, och det gick inte att skilja tomt från trasigt.
En knapp per källa: appens egna bilder, och butikens. Tio åt gången.
Butikens bilder lagras inte i appen, bara i Fortnox — appen visar ändå butikens bild direkt från butiken.
Artikelbilderna når fram till Fortnox1.23.0
2026-08-21
En bild du tar i appen läggs nu också på artikeln i Fortnox. Fortnox har ingen bildruta på artikeln — bilden hamnar i filarkivet, i mappen Artikelbilder, och kopplas till artikelnumret. Det är så en artikelbild ser ut därborta.
Varför det inte gick förut: nyckeln till Fortnox saknade behörigheterna archive och connectfile, och uppladdningen skickades som JSON i stället för som en fil. Båda är rättade.
Behörigheter sitter i nyckeln, inte i appen. Därför måste Fortnox kopplas om en gång under Inställningar innan bilderna går fram — statusraden säger till om det behövs.
Byter du bild ersätts den gamla i Fortnox, och tar du bort bilden här försvinner den där också.
Bilder som redan ligger i appen kan skickas i efterhand: knappen finns under Inställningar, tio åt gången.
Går något fel står det vid bilden vad Fortnox svarade, i stället för att bilden tyst blir kvar bara i appen.
Notiser går att radera, och veckan visar vem som gjort vad1.22.0
2026-08-21
Notiser under klockan går att ta bort, en i taget eller hela listan. Det städar bara listan — inget larm och ingen order påverkas.
Veckans sammanfattning börjar nu med Vem gjorde vad: hur mycket var och en tillverkat, räknat och rättat.
Under Tillverkning står varje order som blev klar — kund, när, av vem, hur många rader och vilken inleverans den blev — plus vad som tillverkades summerat per artikel.
Under Inventering står varje inventering som skickats in, vem som skickade den, vilka som räknat och hur många artiklar som avvek.
Under Saldon står varje rättat saldo: artikel, från vilket tal till vilket, vem som gjorde det och när. Inbokad tillverkning är märkt så att den inte blandas ihop med en rättelse.
Notisen nämner vilka som var med under veckan.
Långa listor visar de första raderna med en knapp för att fälla ut resten.
Hjälptexter och avsnittsrubriker låg för tätt inpå listorna ovanför. Rättat.
Bara knappen man trycker på snurrar, och veckan sammanfattas på måndagen1.21.0
2026-08-21
Tryckte man på en knapp började alla knappar på sidan snurra. Nu snurrar bara den knapp som faktiskt arbetar — resten är avstängda men står stilla.
Snurran ligger ovanpå knappen i stället för framför texten. Knappen behåller sin storlek, så raden hoppar inte till i samma stund man trycker.
Kort bekräftelse längst ner efter det man gjort: "Order 12345 föreslås inte igen", "Namnen sparade". Förut försvann raden bara, och det gick inte att skilja från att appen missat trycket.
Tomma listor har fått en ikon och en mening om vad som händer härnäst, i stället för att bara se ut som att sidan är trasig.
Ny sida: Veckans sammanfattning. Tillverkat, inventerat, rättade saldon och läget just nu — med veckan innan att jämföra med. Nås under kugghjulet.
Notis varje måndag klockan nio med veckan som gick. Går till samma telefoner som larmen och leder till sammanfattningen.
Sista raden på en sida hamnade delvis bakom navigeringen längst ned. Rättat.
Ändringsloggen fylldes på i efterhand — 1.15 till 1.20 saknades här fast de var utlagda.
Tillverka direkt ur en Shopify-order, och besked från butiken1.20.0
2026-08-20
En order i webbshopen syns nu innan den hunnit bli en order i Fortnox, och går att lägga upp som tillverkningsorder därifrån.
Shopify ringer upp appen när något händer i butiken, så en ny order syns med en gång i stället för vid nästa avläsning.
Ordrar som ännu inte fått sina rader hämtade syns i listan i stället för att tyst utebli, med en knapp för att fortsätta hämta.
Rättat: antalet registrerade telefoner visades som noll i avläsningen fast fyra var anslutna.
Rättat: förvarningar låg kvar för ordrar som redan skickats.
Förvarning direkt från Shopify1.19.0
2026-08-20
Ordrar läses nu från butiken först och Fortnox sedan — en webborder kan ligga ett dygn innan den kommer in i Fortnox, och den luckan täcks nu.
Hämtningen berättar vad den hittade: hur många ordrar som lästes, hur många som redan var skickade och vad som visas.
Rättat: felmeddelandet pekade ut Fortnox när det i själva verket var Shopify som nekade.
Bara skickad order stoppar ett förslag, och appen säger varför1.18.0
2026-08-20
En faktura är inte ett bevis på att varorna lämnat huset — Shopify-ordrar faktureras direkt. Nu är det Fortnox egen skickadmarkering som avgör.
Listan "varför föreslås inte min order" visar skälet för varje order som hoppats över.
Ordernumret från webbshopen sparas, så samma order inte kan bli två tillverkningsordrar.
Räkna en artikel på två ställen1.17.0
2026-08-19
Artiklar som ligger både i bulklagret och i plocklagret kan räknas var för sig, med en flik per plats. Artikeln är bockad först när båda är ifyllda.
Gäller bara artiklar som märkts för det, och bara inventeringar som startas efter att det slagits på. Pågående inventeringar rör det inte.
Går att stänga av igen utan att något behöver återställas.
Skickade ordrar kan inte bli tillverkningsförslag1.16.0
2026-08-19
En gammal order som redan skickats dök upp som förslag så fort ett saldo gick till noll. Nu räknas bara det som verkligen är kvar att leverera.
Ordrar äldre än ett antal dagar föreslås inte alls. Gränsen ställs in på sidan, och de går fortfarande att lägga upp för hand.
Förloppsvisning när hela registret läses om1.15.0
2026-08-19
Omläsningen körs i steg och visar hur långt den kommit, i stället för en snurra i en minut.
Varje steg är kort nog att aldrig slå i serverns tidsgräns.
Två kan räkna samma hylla, och registret städas mot Fortnox1.14.0
2026-08-19
Räknar två personer samma artikel samtidigt skrivs ingen räkning över tyst. Appen visar båda talen och den som räknar får välja.
Artiklar som inte är aktiva eller inte är lagervaror i Fortnox tas bort ur appen.
Städningen gör inte längre om hela registret artikel för artikel. Hämtningen frågar Fortnox efter aktiva artiklar, och det som inte kommer tillbaka tas bort — utan ett enda extra anrop. Bara artiklar som står på noll är tvetydiga och kollas var för sig.
Sökningen, EAN-registret och skannern visar inte längre sådana artiklar.
Genomgång av gränssnittet, och artiklar utan lagerhantering göms1.13.0
2026-08-19
Artiklar som inte är markerade som lagervara i Fortnox syns inte längre någonstans: inte i EAN-registret, inte i kategorisiffrorna, och de går inte att lägga på en tillverkningsorder. Skillnadssidan räknar dem för sig i stället för att kalla dem föräldralösa.
Klickar man på en notis utan att vara inloggad kommer man till inloggningen och sedan vidare dit notisen pekade.
Markeringsrutan ligger i kortet, och fältet med åtgärder lägger sig ovanför navigeringen i stället för ovanpå raderna.
Länkar i listor ser inte längre ut som blå webblänkar, och knapplänkar ser ut som knappar.
Ental och flertal: 1 artikel, inte 1 artiklar. Tider på i dag visas som klockslag, datum blev läsbara.
Slå ihop upplagda ordrar, och notiserna syns under klockan1.12.0
2026-08-19
Tillverkningsordrar går att markera och slå ihop i efterhand, inte bara som förslag. Raderna summeras och fördelningen per kundorder följer med.
De gamla ordrarna avbryts och pekar på den nya, så det går att se vart de tog vägen. Har någon redan bockat av en rad går det inte att slå ihop.
Klockan har två flikar: Larm och Notiser. Notiser visar allt som skickats ut, även när ingen telefon var registrerad — och varför det inte gick fram.
En egen tillverkningsorder meddelas med knappen Klar att tillverka, när artiklarna är inlagda. Den skapas ju tom.
Egna tillverkningsordrar, och besked när appen uppdaterats1.11.0
2026-08-19
Plusknapp under Öppna tillverkningsordrar: lägg upp en order utan kundorder bakom sig, för påfyllning av hyllan.
Den får ett eget nummer med E framför, så det aldrig krockar med ett Fortnox-ordernummer.
Artiklarna läggs till på ordersidan, och den slutförs och bokas in i Fortnox precis som de andra.
Har en nyare version lagts ut medan appen är öppen syns en rad längst ned. Den laddar aldrig om av sig själv — man trycker när man är klar.
Går en kodbit inte att hämta efter en uppdatering laddas sidan om automatiskt en gång, i stället för att appen står still.
Flera förslag i ett svep, och sammanslagna tillverkningsordrar1.10.0
2026-08-19
Förslagen går att markera. Markerade kan slås ihop till en order, skapas var för sig, eller tas bort på en gång.
En sammanslagen order summerar artiklarna men behåller fördelningen per kundorder på raden, så packningen blir rätt.
Utskriften visar vilka kundordrar ordern täcker och vem som ska ha vad.
En kundorder som ligger i en sammanslagen order dyker inte upp som förslag igen och räknas inte två gånger.
Frågan om notiser kommer tillbaka tills den är besvarad1.9.1
2026-08-19
Telefoner som inte sagt ja till notiser får frågan varje gång appen öppnas. Krysset gäller bara den gången.
Frågan ställer sig själv vid första trycket i appen — iOS tillåter inte att den ställs utan ett tryck, så närmare automatiskt går inte att komma.
Har någon en gång sagt nej visar appen vägen via Inställningar → Notiser i stället, för då frågar iPhone aldrig igen.
Notis först när ordern finns, och synligt när appen arbetar1.9.0
2026-08-18
Notisen om tillverkning går ut när tillverkningsordern skapas, inte när förslaget dyker upp. Ett förslag är bara appen som räknat.
Notisen innehåller ordernummer, kund, antal artiklar och leveransdatum, och leder rakt in i ordern.
En tunn stapel högst upp visar att appen hämtar något, på alla sidor. Knappar som startar något långsamt snurrar.
Larmen räknas om i klump i stället för en fråga per artikel — att spara en regel tog flera sekunder och såg trasigt ut. Nu tar det bråkdelen.
Etiketter, och larm som går att trycka bort1.8.0
2026-08-18
Etiketter: en artikel kan bära flera märken vid sidan av sin kategori, utan att flyttas från den. Sätts på artikeln eller på många i taget under Inställningar → Etiketter.
Två etiketter sköter sig själva: Shopify, och Shopify spårat saldo. De räknas om vid varje synk mot butiken.
Larm kan sättas på en hel etikett. Smalast vinner: artikel före etikett före kategori.
Larm och notiser delades i två: klockan visar larmen, kugghjulet inställningarna.
Larm går att trycka bort, ett i taget eller alla. De kommer tillbaka först när saldot återhämtat sig och faller på nytt.
Rättat: avläsningen av nya ordrar kraschade på en variabel som lästes innan den fanns, och därför kom det aldrig någon notis om nya tillverkningsordrar.
Rutan Senaste kontrollen visar när avläsningen kördes och varför en notis eventuellt uteblev.
Larm på låga saldon1.7.0
2026-08-17
Gränser per kategori eller enskild artikel, med av- och påslag.
Klocka uppe till höger med antal olästa larm.
Notiser till telefonerna. Appen frågar om lov när den öppnas.
Tillverkningsordrar1.6.0
2026-08-16
En tillverkningsorder per kundorder, med kunduppgifter, leveransdatum och egen sida.
Rader bockas av allteftersom, mängder går att ändra, och Slutför skriver in i Fortnox lager.
Behovet räknas ut från saldot innan ordern drog av — annars såg allt tomt ut.
Utskrivbar som underlag, och en flik med totalen per artikel.
Snabbare synk och läsning av ordrar1.5.0
2026-08-15
Synken hämtar bara det som ändrats sedan sist, med en full hämtning varje dygn.
Kundordrar läses från Fortnox. Appen kan bara läsa dem, aldrig skriva.
Artiklar utan lagersaldo i Fortnox göms i stället för att visa noll.
Skillnader mellan Fortnox och Shopify1.4.0
2026-08-12
Egen sida som ställer saldona bredvid varandra, med sortering och filter.
Inventering1.3.0
2026-08-08
Inventeringsomgångar med räkning, granskning och utskick till Fortnox.
Underlaget går att skriva ut som PDF när omgången är klar.
EAN och etiketter1.2.0
2026-08-01
GS1-registret i appen, med tilldelning och kontroll av kontrollsiffran.
Etikettutskrift på B.N.T 271900. Varje ark ritas som en enda figur, så alla ark hamnar lika.
Shopify1.1.0
2026-07-20
Bilder, produktnamn och kategorier hämtade från butiken.
Första versionen1.0.0
2026-07-10
Inloggning, artikellista, räkning och justering mot lagerstället LAGER i Fortnox.
Punkterna före 1.8 är sammanfattade i efterhand. Härifrån får varje push ett eget nummer.