diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+## 2.1.1 (2025-10-09)
+- F43 i3 moved to Kiwi
+- add COSMIC-Atomic
+
 ## 2.1 (2025-08-30)
 - unbreak bash-completion by reading rawhide and current release versions later
 - add --qemu option to specify how to run iso (overrides $DLFEDORA_QEMU)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -73,19 +73,19 @@
 `$ dl-fedora --version`
 
 ```
-2.1
+2.1.1
 ```
 `$ dl-fedora --help`
 
 ```
 Fedora iso downloader
 
-Usage: dl-fedora [--version] [-g|--gpg-keys] [--no-checksum | --checksum]
-                 [--debug] [-T|--no-http-timeout]
-                 [(-c|--check) | (-l|--local) | --list | (-R|--replace)]
+Usage: dl-fedora [--version] [-g|--gpg-keys] [--no-checksum | --checksum] 
+                 [--debug] [-T|--no-http-timeout] 
+                 [(-c|--check) | (-l|--local) | --list | (-R|--replace)] 
                  [-d|--dir DIRECTORY] [-n|--dry-run] [-r|--run] [-q|--qemu QEMU]
-                 [(-L|--latest) | --dl | (-k|--koji) | (-m|--mirror URL)]
-                 [--dvd] [--cs-devel | --cs-test | --cs-production]
+                 [(-L|--latest) | --dl | (-k|--koji) | (-m|--mirror URL)] 
+                 [--dvd] [--cs-devel | --cs-test | --cs-production] 
                  [--alt-cs-extra-edition ('MAX'|'MIN')] [-a|--arch ARCH] RELEASE
                  [--all-desktops | --all-spins | --all-editions | [-x|--exclude]
                    [EDITION...]]
@@ -93,7 +93,8 @@
   Tool for downloading Fedora iso file images.
   EDITION = {cloud,container,everything,kde,server,workstation,budgie,cinnamon,
              cosmic,i3,kdemobile,lxde,lxqt,mate,miracle,soas,sway,xfce,
-             silverblue,kinoite,onyx,sericea,iot} [default: workstation]
+             silverblue,kinoite,cosmic-atomic,onyx,sericea,
+             iot} [default: workstation]
   RELEASE = release number, respin, rawhide, test (Beta), stage (RC), eln, c9s, c10s, c9s-live
   See <https://github.com/juhp/dl-fedora/#readme>
 
diff --git a/dl-fedora.cabal b/dl-fedora.cabal
--- a/dl-fedora.cabal
+++ b/dl-fedora.cabal
@@ -1,6 +1,6 @@
 cabal-version:       1.18
 name:                dl-fedora
-version:             2.1
+version:             2.1.1
 synopsis:            Fedora image download tool
 description:
             Tool to download Fedora and Centos Stream iso and image files.
@@ -9,8 +9,8 @@
 license-file:        LICENSE
 homepage:            https://github.com/juhp/dl-fedora
 bug-reports:         https://github.com/juhp/dl-fedora/issues
-author:              Jens Petersen <juhpetersen@gmail.com>
-maintainer:          Jens Petersen <juhpetersen@gmail.com>
+author:              Jens Petersen <petersen@redhat.com>
+maintainer:          Jens Petersen <petersen@redhat.com>
 copyright:           2019-2025  Jens Petersen
 category:            Utility
 build-type:          Simple
@@ -18,7 +18,7 @@
                      CHANGELOG.md
 tested-with:         GHC == 8.2.2, GHC == 8.4.4, GHC == 8.6.5, GHC == 8.8.4,
                      GHC == 8.10.7, GHC == 9.0.2, GHC == 9.2.8, GHC == 9.4.8,
-                     GHC == 9.6.6, GHC == 9.8.4, GHC == 9.10.1
+                     GHC == 9.6.7, GHC == 9.8.4, GHC == 9.10.3, GHC == 9.12.2
 
 source-repository head
   type:     git
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -62,6 +62,7 @@
 import DownloadDir
 import Paths_dl_fedora (version)
 
+{- HLINT ignore FedoraEdition "Use camelCase" -}
 data FedoraEdition = Cloud
                    | Container
                    | Everything
@@ -82,6 +83,7 @@
                    | Xfce  -- last spin: used below
                    | Silverblue
                    | Kinoite
+                   | COSMIC_Atomic
                    | Onyx
                    | Sericea
                    | IoT
@@ -92,6 +94,7 @@
   if fedoraVerOrLater 42 rel
   then "KDE-Desktop"
   else "KDE"
+showEdition _ COSMIC_Atomic = "COSMIC-Atomic"
 showEdition _ KDEMobile = "KDE-Mobile"
 showEdition _ MATE = "MATE_Compiz"
 showEdition _ Miracle = "MiracleWM"
@@ -103,7 +106,7 @@
   if edition == KDE then "KDE" else showEdition rel edition
 
 lowerEdition :: FedoraEdition -> String
-lowerEdition = lower . show
+lowerEdition = replace "_" "-" . lower . show
 
 instance Read FedoraEdition where
   readPrec = do
@@ -137,7 +140,7 @@
   case rel of
     Rawhide -> allSpins rawhide current $ Fedora rawhide
     Fedora r -> fedoraSpins rel \\ missingEditions r
-    FedoraRespin -> allSpins rawhide current (Fedora current) \\ [KDEMobile, Miracle]
+    FedoraRespin -> allSpins rawhide current (Fedora current) \\ [Cinnamon, KDEMobile, Miracle, Sway]
     FedoraTest -> allSpins rawhide current $ Fedora current -- FIXME use fedora-releases
     FedoraStage -> allSpins rawhide current $ Fedora (current + 1) -- FIXME use fedora-releases
     CS 9 True -> [Cinnamon, KDE, MATE, Xfce] -- FIXME missing MAX, MIN
@@ -160,10 +163,14 @@
 
 missingEditions :: Natural -> [FedoraEdition]
 missingEditions r =
-  case compare r 41 of
-    GT -> IoT : [MATE | r >= 43]
-    EQ -> [COSMIC]
-    LT -> [COSMIC, KDEMobile, Miracle]
+  case compare r 42 of
+    GT -> IoT : [Onyx | r == 43 ] ++
+          -- FIXME missing in rawhide
+          -- https://dl.fedoraproject.org/pub/fedora/linux/development/43/Spins/x86_64/iso/
+          -- https://dl.fedoraproject.org/pub/fedora/linux/development/rawhide/Spins/x86_64/iso/
+          if r > 43 then [I3, SoaS, Xfce] else []
+    EQ -> [IoT, COSMIC_Atomic]
+    LT -> [COSMIC, COSMIC_Atomic]
 
 data RequestEditions = Editions Bool [FedoraEdition]
                      | AllDesktops
@@ -716,6 +723,7 @@
     -- https://pagure.io/pungi-fedora/blob/main/f/fedora.conf#_251 kiwibuild
     kiwiSpins :: [FedoraEdition]
     kiwiSpins =
+      [I3 | fedoraVerOrLater 43 tgtrel] ++
       -- https://fedoraproject.org/wiki/Changes/EROFSforLiveMedia
       (if fedoraVerOrLater 42 tgtrel
        then [Budgie, COSMIC, KDE, LXQt, SoaS, Workstation, Xfce]
@@ -726,6 +734,7 @@
 
     editionType :: FedoraEdition -> String
     editionType Server = if dvdnet then "dvd" else "netinst"
+    editionType COSMIC_Atomic = "ostree"
     editionType IoT = "ostree"
     editionType Kinoite = "ostree"
     editionType Onyx = "ostree"
@@ -908,7 +917,9 @@
 liveRespin Budgie = "Budgie"
 liveRespin COSMIC = "COSMIC"
 liveRespin I3 = "i3"
+liveRespin LXQt = "LXQt"
 liveRespin Miracle = "MiracleWM"
+liveRespin Sway = "Sway"
 liveRespin e = take 4 . upper . showEdition FedoraRespin $ e
 
 bootImage :: Bool -> FilePath -> String -> Maybe String -> IO ()
diff --git a/test/tests.hs b/test/tests.hs
--- a/test/tests.hs
+++ b/test/tests.hs
@@ -8,7 +8,7 @@
 
 dlFedora :: Bool -> [String] -> IO ()
 dlFedora ghAction args =
-  putStrLn "" >> cmdLog "dl-fedora"
+  putChar '\n' >> cmdLog_ "dl-fedora"
   ((if ghAction then ("--dl" :) . ("-T" :) else id) args)
 
 tests :: Bool -> Natural -> Natural -> [[String]]
@@ -62,8 +62,7 @@
 allEditions :: Natural -> [String]
 allEditions 9 = allEditions 10 ++ ["cinnamon", "mate", "xfce"]
 allEditions 10 = ["workstation", "kde", "max", "min"]
-allEditions rel = ["cloud","container","everything","server","workstation","budgie","cinnamon","i3","kde","lxde","lxqt","soas","sway","xfce","silverblue","kinoite","onyx","sericea"] ++
-  ["cosmic" | rel >= 42] ++ ["kdemobile" | rel >= 41] ++ ["miracle" | rel >= 41] ++ ["iot" | rel < 42] ++ ["mate" | rel < 43]
+allEditions rel = ["cloud","container","everything","server","workstation","budgie","cinnamon","kde","lxde","lxqt","mate","sway","silverblue","kinoite","sericea"] ++ ["cosmic" | rel >= 42] ++ ["kdemobile" | rel >= 41] ++ ["miracle" | rel >= 41] ++ ["iot" | rel < 42] ++ ["onyx" | rel /= 43] ++ ["cosmic-atomic" | rel >= 43] ++ ["i3" | rel < 44] ++ ["soas" | rel < 44] ++ ["xfce" | rel < 44]
 
 listEditions :: Natural -> IO ()
 listEditions n = do
@@ -72,7 +71,7 @@
   es <- sort . words <$> cmd "dl-fedora" args
   let aes = sort $ allEditions n
   unless (es == aes) $
-    error' $ show n +-+ "editions unmatched:\n" ++ show es ++ "\n" ++ show aes
+    error' $ 'F' : show n +-+ "editions unmatched:\n" ++ show es ++ "\n" ++ show aes
 
 main :: IO ()
 main = do
