Compare commits

...

4 Commits

Author SHA1 Message Date
willmiao
c97c802956 docs: auto-update supporters list in README 2026-05-26 13:27:45 +00:00
Will Miao
24e2909627 chore(release): bump version to v1.0.8 2026-05-26 21:27:29 +08:00
Will Miao
b768f1368f fix(i18n): update aria2 annotation from experimental to recommended across all locales 2026-05-26 20:22:25 +08:00
Will Miao
37ccd29fc0 feat(modal): make version name editable in model modal (#931) 2026-05-26 20:16:35 +08:00
17 changed files with 389 additions and 210 deletions

File diff suppressed because one or more lines are too long

View File

@@ -15,41 +15,60 @@
"Phil",
"Carl G.",
"Arlecchino Shion",
"$MetaSamsara",
"Charles Blakemore",
"Rob Williams",
"$MetaSamsara",
"stone9k",
"Rosenthal",
"Francisco Tatis",
"runte3221",
"Fraser Cross",
"Polymorphic Indeterminate",
"Marc Whiffen",
"Skalabananen",
"Birdy",
"Kiba",
"Mozzel",
"itismyelement",
"Gingko Biloba",
"Reno Lam",
"onesecondinosaur",
"sig",
"Christian Byrne",
"DM",
"Sen314",
"Estragon",
"J\\B/ 8r0wns0n",
"Takkan",
"Charles Blakemore",
"Rosenthal",
"ClockDaemon",
"Francisco Tatis",
"KD",
"Omnidex",
"Release Cabrakan",
"Tobi_Swagg",
"SG",
"James Dooley",
"zenbound",
"jmack",
"Andrew Wilson",
"Greybush",
"Mark Corneglio",
"SarcasticHashtag",
"iamresist",
"Wolffen",
"Ricky Carter",
"James Todd",
"JongWon Han",
"VantAI",
"Tim",
"Lisster",
"Michael Wong",
"Illrigger",
"Tom Corrigan",
"JackieWang",
"FreelancerZ",
"fnkylove",
"Yushio",
"Vik71it",
"Echo",
"Lilleman",
"Robert Stacey",
@@ -58,59 +77,54 @@
"Jorge Hussni",
"Liam MacDougal",
"Sterilized",
"Fraser Cross",
"Polymorphic Indeterminate",
"Marc Whiffen",
"Birdy",
"Skalabananen",
"BadassArabianMofo",
"quarz",
"Reno Lam",
"Greg",
"JSST",
"sig",
"J\\B/ 8r0wns0n",
"Snaggwort",
"lmsupporter",
"wfpearl",
"Baekdoosixt",
"Jonathan Ross",
"KD",
"Omnidex",
"Jack B Nimble",
"Nazono_hito",
"Melville Parrish",
"daniel dove",
"Lustre",
"Tyler Trebuchon",
"Release Cabrakan",
"JW Sin",
"contrite831",
"Alex",
"bh",
"carozzz",
"Marlon Daniels",
"James Dooley",
"zenbound",
"Starkselle",
"Buzzard",
"Aaron Bleuer",
"LacesOut!",
"greebles",
"Adam Shaw",
"Mark Corneglio",
"SarcasticHashtag",
"Anthony Rizzo",
"Gooohokrbe",
"RedrockVP",
"James Todd",
"ASLPro3D",
"OldBones",
"Jacob Hoehler",
"FinalyFree",
"Weasyl",
"Steven Pfeiffer",
"Timmy",
"Johnny",
"Cory Paza",
"Tak",
"Lisster",
"Zach Gonser",
"Big Red",
"whudunit",
"Luc Job",
"dl0901dm",
"Philip Hempel",
"corde",
"Nick Walker",
"Yushio",
"Vik71it",
"Bishoujoker",
"Todd Keck",
"Briton Heilbrun",
@@ -119,47 +133,50 @@
"jean jahren",
"Aleksander Wujczyk",
"AM Kuro",
"BadassArabianMofo",
"Pascal Dahle",
"Penfore",
"Greg",
"Sangheili460",
"MagnaInsomnia",
"Karl P.",
"Akira_HentAI",
"Gordon Cole",
"AbstractAss",
"lmsupporter",
"andrew.tappan",
"N/A",
"The Spawn",
"graysock",
"Greenmoustache",
"zounic",
"wfpearl",
"fancypants",
"Eldithor",
"Jack B Nimble",
"Digital",
"JaxMax",
"bh",
"takyamtom",
"Jwk0205",
"Starkselle",
"batblue",
"carey6409",
"Olive",
"Aaron Bleuer",
"LacesOut!",
"greebles",
"Some Guy Named Barry",
"Cosmosis",
"M Postkasse",
"AELOX",
"Nicfit23",
"FloPro4Sho",
"wamekukyouzin",
"Jacob Hoehler",
"drum matthieu",
"Dogmaster",
"Matt Wenzel",
"Weasyl",
"Lex Song",
"Cory Paza",
"Christopher Michel",
"Gonzalo Andre Allendes Lopez",
"Serge Bekenkamp",
"Jimmy Ledbetter",
"Philip Hempel",
"LeoZero",
"ApathyJones",
"Julian V",
"Steven Owens",
"nahinahi9",
"Dustin Chen",
"dan",
"aai",
"Mouthlessman",
@@ -167,32 +184,29 @@
"ViperC",
"Ran C",
"MiraiKuriyamaSy",
"Sangheili460",
"Karl P.",
"yuxz69",
"Adam Taylor",
"Weird_With_A_Beard",
"esthe",
"The Spawn",
"graysock",
"Pozadine1",
"Qarob",
"AIGooner",
"Luc",
"ProtonPrince",
"DiffDuck",
"fancypants",
"elu3199",
"Hasturkun",
"Jon Sandman",
"Ubivis",
"CloudValley",
"IamAyam",
"Joboshy",
"Digital",
"takyamtom",
"Bohemian Corporal",
"Dan",
"confiscated Zyra",
"Bro Xie",
"yer fey",
"batblue",
"carey6409",
"Error_Rule34_Not_found",
"太郎 ゲーム",
"Roslynd",
"Tee Gee",
@@ -200,42 +214,31 @@
"tarek helmi",
"Neco28",
"Max Marklund",
"AELOX",
"David Ortega",
"Dankin",
"Nicfit23",
"Cristian Vazquez",
"drum matthieu",
"Dogmaster",
"Frank Nitty",
"Magic Noob",
"Pronredn",
"Christopher Michel",
"DougPeterson",
"LeoZero",
"Antonio Pontes",
"Bruce",
"nahinahi9",
"lh qwe",
"Kevin John Duck",
"conner",
"Dustin Chen",
"Kevin Christopher",
"Blackfish95",
"dd",
"Princess Bright Eyes",
"Paul Kroll",
"Felipe dos Santos",
"Bas Imagineer",
"Markus",
"John Statham",
"Douglas Gaspar",
"AlexDuKaNa",
"George",
"dw",
"decoy",
"elu3199",
"Hasturkun",
"Jon Sandman",
"Ubivis",
"CloudValley",
"thesoftwaredruid",
"wundershark",
"mr_dinosaur",
@@ -243,57 +246,62 @@
"Ray Wing",
"Ranzitho",
"Gus",
"地獄の禄",
"MJG",
"David LaVallee",
"linnfrey",
"ae",
"Tr4shP4nda",
"WRL_SPR",
"capn",
"Joseph",
"Mirko Katzula",
"奚明 刘",
"Brian M",
"Josef Lanzl",
"Nerezza",
"sanborondon",
"Griffin Dahlberg",
"준희 김",
"Error_Rule34_Not_found",
"Taylor Funk",
"aezin",
"Thought2Form",
"jcay015",
"Gerald Welly",
"Kevin Picco",
"Erik Lopez",
"Mateo Curić",
"Geolog",
"Eris3D",
"Tomohiro Baba",
"David Ortega",
"m",
"Noora",
"Pierce McBride",
"Mattssn",
"Jamie Ogletree",
"a _",
"Jeff",
"James Coleman",
"Kevin Christopher",
"Emil Andersson",
"Ouro Boros",
"Chad Idk",
"dd",
"Steam Steam",
"CryptoTraderJK",
"Yuji Kaneko",
"Davaitamin",
"Dušan Ryban",
"Rops Alot",
"tedcor",
"Sam",
"Fotek Design",
"sjon kreutz",
"Ace Ventura",
"MadSpin",
"Metryman55",
"inbijiburu",
"Nick “Loadstone” D",
"地獄の禄",
"ae",
"Tr4shP4nda",
"Gamalonia",
"WRL_SPR",
"capn",
"Joseph",
"momokai",
"Mirko Katzula",
"dan",
"Piccio08",
"kumakichi",
@@ -306,59 +314,13 @@
"kudari",
"Naomi Hale Danchi",
"dc7431",
"ken",
"epicgamer0020690",
"Joshua Porrata",
"keemun",
"SuBu",
"RedPIXel",
"Vir",
"Richard",
"Andrew",
"Brian M",
"Robert Wegemund",
"Littlehuggy",
"Draven T",
"mrjuan",
"Brian Buie",
"Thought2Form",
"Kevin Picco",
"Sadlip",
"Aquatic Coffee",
"m",
"ethanfel",
"Pierce McBride",
"Joshua Gray",
"Focuschannel",
"Mikko Hemilä",
"Jacob McDaniel",
"Jamie Ogletree",
"Temikus",
"Artokun",
"Michael Taylor",
"Derek Baker",
"Martial",
"Anthony Faxlandez",
"battu",
"Michael Anthony Scott",
"Atilla Berke Pekduyar",
"Decx _",
"Yuji Kaneko",
"Pat Hen",
"Jordan Shaw",
"Rops Alot",
"Thesharingbrother",
"Ace Ventura",
"ResidentDeviant",
"四糸凜音",
"Nihongasuki",
"JC",
"Prompt Pirate",
"uwutismxd",
"zenobeus",
"ken",
"Crocket",
"keemun",
"Wind",
"Jackthemind",
"Nexus",
"Ramneek“Guy”Ashok",
"squid_actually",
@@ -369,6 +331,53 @@
"JohnDoe42054",
"BillyHill",
"emyth",
"Vir",
"gzmzmvp",
"Richard",
"Andrew",
"Robert Wegemund",
"Littlehuggy",
"Draven T",
"mrjuan",
"Brian Buie",
"Sadlip",
"Eric Whitney",
"Joey Callahan",
"Aquatic Coffee",
"Ivan Tadic",
"Mike Simone",
"ethanfel",
"Joshua Gray",
"Morgandel",
"Focuschannel",
"Mikko Hemilä",
"Noah",
"Jacob McDaniel",
"X",
"Sloan Steddy",
"Temikus",
"Artokun",
"Michael Taylor",
"Derek Baker",
"Martial",
"Anthony Faxlandez",
"battu",
"Michael Anthony Scott",
"Atilla Berke Pekduyar",
"Decx _",
"Pat Hen",
"Jordan Shaw",
"Thesharingbrother",
"ResidentDeviant",
"四糸凜音",
"Nihongasuki",
"JC",
"Prompt Pirate",
"uwutismxd",
"FrxzenSnxw",
"zenobeus",
"Crocket",
"Jackthemind",
"chriphost",
"KitKatM",
"ryoma",
@@ -388,33 +397,42 @@
"Menard",
"Skyfire83",
"Adam Rinehart",
"gzmzmvp",
"Pitpe11",
"TheD1rtyD03",
"moonpetal",
"SomeDude",
"g9p0o",
"TheHolySheep",
"raf8osz",
"Monte Won",
"SpringBootisTrash",
"carsten",
"ikok",
"ElitaSSJ4",
"Wolfe7D1",
"blikkies",
"Chris",
"Gregory Kozhemiak",
"elleshar666",
"Shock Shockor",
"ACTUALLY_the_Real_Willem_Dafoe",
"Goldwaters",
"Eric Whitney",
"Joey Callahan",
"Zude",
"Ivan Tadic",
"Mike Simone",
"John J Linehan",
"Kyler",
"Elliot E",
"Morgandel",
"Theerat Jiramate",
"Edward Kennedy",
"Justin Blaylock",
"aRtFuL_DodGeR",
"Noah",
"X",
"Sloan Steddy",
"Vane Holzer",
"hexxish",
"notedfakes",
"DarkSunset",
"Nathan",
"Billy Gladky",
"NICHOLAS BAXLEY",
"Michael Scott",
"Probis",
"Ed Wang",
"ItsGeneralButtNaked",
@@ -424,7 +442,6 @@
"Youguang",
"Saya",
"andrewzpong",
"FrxzenSnxw",
"BossGame",
"lrdchs",
"Tree Tagger",
@@ -437,17 +454,12 @@
"Ginnie",
"Raku",
"emadsultan",
"Pitpe11",
"TheD1rtyD03",
"moonpetal",
"SomeDude",
"g9p0o",
"Pkrsky",
"TheHolySheep",
"Monte Won",
"SpringBootisTrash",
"carsten",
"ikok",
"nanana",
"Pavlaki",
"Doug+Rintoul",
"Noor",
"Yorunai",
"quantenmecha",
"Jason+Nash",
"BillyBoy84",
@@ -465,31 +477,27 @@
"Welkor",
"David Schenck",
"John Martin",
"Wolfe7D1",
"Ink Temptation",
"moranqianlong",
"Kalli Core",
"Time Valentine",
"elleshar666",
"ACTUALLY_the_Real_Willem_Dafoe",
"Михал Михалыч",
"Matt",
"Kauffy",
"Frogmilk",
"SPJ",
"Kyron Mahan",
"Edward Kennedy",
"Justin Blaylock",
"Bryan Rutkowski",
"Nick Kage",
"TBitz33",
"Anonym dkjglfleeoeldldldlkf",
"Vane Holzer",
"psytrax",
"Cyrus Fett",
"Ezokewn",
"SendingRavens",
"Xenon Xue",
"notedfakes",
"Edward Ten Eyck",
"Michael Docherty",
"Michael Scott",
"Paul Hartsuyker",
"Henrique Faiolli",
"elitassj",
@@ -497,10 +505,13 @@
"Jacob Winter",
"Ryan Presley Ng",
"Wes Sims",
"jinksta187",
"Donor4115",
"Manu Thetug",
"Lyavph",
"David",
"Meilo",
"operationancut",
"Filippo Ferrari",
"shinonomeiro",
"Snille",
@@ -509,6 +520,7 @@
"xybrightsummer",
"jreedatchison",
"PhilW",
"Marcus thronico",
"Janik",
"Cruel",
"MRBlack",
@@ -519,7 +531,13 @@
"Scott",
"Muratoraccio",
"D",
"nanana",
"MatteKey",
"Flob",
"ShiroSenpai",
"Inkognito",
"G",
"Tan+Huynh",
"D",
"Dark_Pest",
"Alex",
"Jacky+Ho",
@@ -535,11 +553,7 @@
"sfasdfasfdsa",
"Alan+Cano",
"FeralOpticsAI",
"Pavlaki",
"generic404",
"Doug+Rintoul",
"Noor",
"Yorunai",
"abattoirblues",
"zounik",
"4IXplr0r3r",
@@ -553,18 +567,21 @@
"ja s",
"Doug Mason",
"Jeremy Townsend",
"Dave Abraham",
"Joaquin Hierrezuelo",
"Locrospiel",
"Frogmilk",
"Sean voets",
"Owen Gwosdz",
"SPJ",
"Jarrid Lee",
"Kor",
"Joseph Hanson",
"Bryan Rutkowski",
"John Rednoulf",
"Boba Smith",
"Devil Lude",
"David Murcko",
"Jack Dole",
"max blo",
"Sauv",
"Steven",
"CptNeo",
"JackJohnnyJim",
@@ -572,7 +589,6 @@
"Dmitry Ryzhov",
"Khánh Đặng",
"Maso",
"Edward Ten Eyck",
"Eric Ketchum",
"Kevin Wallace",
"Jimmy Borup",
@@ -580,14 +596,11 @@
"mercur",
"Pete Pain",
"RHopkirk",
"jinksta187",
"Andrew Wilkinson",
"Yavizu3d",
"Maxim",
"Manu Thetug",
"Karlanx",
"Yves Poezevara",
"operationancut",
"Teriak47",
"Just me",
"Raf Stahelin",
@@ -611,7 +624,6 @@
"pixl",
"Robin",
"chahknoir",
"Marcus thronico",
"nd",
"keno94d",
"James Melzer",
@@ -635,6 +647,19 @@
"SelfishMedic",
"adderleighn",
"EnragedAntelope",
"Kachac",
"tyrant2811",
"Kevin",
"Rune+Osnes",
"jcx29",
"cloudghost",
"Yongkwan+Lee",
"PoorStudent",
"lucites",
"Alex+Zaw",
"Mobius2020",
"ExLightSaber",
"YaboiRay",
"Drizzly",
"Sildoren",
"Darvidous",
@@ -658,17 +683,10 @@
"you+halo9",
"YassineKhaled",
"YK12",
"MatteKey",
"Flob",
"ShiroSenpai",
"Somebody",
"Inkognito",
"Somebody",
"Gramer+Gumbyte",
"Crescent~San",
"Tan+Huynh",
"AiGirlTS",
"D",
"datasl4ve",
"Somebody",
"koopa990",
@@ -677,20 +695,25 @@
"Bula",
"KUJYAKU",
"Coeur+de+cochon",
"Obsidian.Studios",
"han b",
"Nico",
"Maximilian Krischan",
"Banana Joe",
"_ G3n",
"Donovan Jenkins",
"Hans Meier",
"Tú Nguyễn Lý Hoàng",
"shira1011",
"Michael Eid",
"beersandbacon",
"Neko Desco",
"Bob barker",
"Ben D",
"G",
"Ronan Delevacq",
"karim ben brik",
"Vinarus",
"james",
"Michael Zhu",
"Nemisu",
@@ -701,30 +724,30 @@
"jumpd",
"John C",
"Rim",
"Dave Abraham",
"Joaquin Hierrezuelo",
"Jairus Knudsen",
"Jarrid Lee",
"Poophead27 Blyat",
"Xan Dionysus",
"Nathan lee",
"Lyle Liston",
"Middo",
"Forbidden Atelier",
"John Rednoulf",
"Thomas Sankowski",
"Spire",
"DrB",
"AZ Party Oasis",
"Adictedtohumping",
"Boba Smith",
"Towelie",
"Ryan Smith",
"MR.Bear",
"matt",
"dsffsdfsdfsdfsdfsdf",
"somethingtosay8",
"Jean-françois SEMA",
"Terminuz",
"Kurt",
"ivistorm",
"Sauv",
"Faburizu",
"Jack Lawfield",
"jimyjomson",
"Borte",
"Chase Kwon",
@@ -744,6 +767,7 @@
"hannibal",
"Jo+Example",
"BrentBertram",
"inusanorthcape",
"Tigon",
"eumelzocker",
"dxjaymz",
@@ -752,5 +776,5 @@
"Somebody",
"CK"
],
"totalCount": 749
"totalCount": 773
}

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "Download-Backend",
"help": "Wähle aus, wie Modelldateien heruntergeladen werden. Python verwendet den eingebauten Downloader. aria2 verwendet den experimentellen externen Downloader-Prozess.",
"help": "Wähle aus, wie Modelldateien heruntergeladen werden. Python verwendet den eingebauten Downloader. aria2 verwendet den empfohlenen externen Downloader-Prozess.",
"options": {
"python": "Python (integriert)",
"aria2": "aria2 (experimentell)"
"aria2": "aria2 (empfohlen)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "Modellname bearbeiten",
"editFileName": "Dateiname bearbeiten",
"editBaseModel": "Basis-Modell bearbeiten",
"editVersionName": "Versionsname bearbeiten",
"viewOnCivitai": "Auf Civitai anzeigen",
"viewOnCivitaiText": "Auf Civitai anzeigen",
"viewCreatorProfile": "Ersteller-Profil anzeigen",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "Download backend",
"help": "Choose how model files are downloaded. Python uses the built-in downloader. aria2 uses the experimental external downloader process.",
"help": "Choose how model files are downloaded. Python uses the built-in downloader. aria2 uses the recommended external downloader process.",
"options": {
"python": "Python (built-in)",
"aria2": "aria2 (experimental)"
"aria2": "aria2 (recommended)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "Edit model name",
"editFileName": "Edit file name",
"editBaseModel": "Edit base model",
"editVersionName": "Edit version name",
"viewOnCivitai": "View on Civitai",
"viewOnCivitaiText": "View on Civitai",
"viewCreatorProfile": "View Creator Profile",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "Backend de descarga",
"help": "Elige cómo se descargan los archivos del modelo. Python usa el descargador integrado. aria2 usa el proceso externo experimental de descarga.",
"help": "Elige cómo se descargan los archivos del modelo. Python usa el descargador integrado. aria2 usa el proceso externo recomendado de descarga.",
"options": {
"python": "Python (integrado)",
"aria2": "aria2 (experimental)"
"aria2": "aria2 (recomendado)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "Editar nombre del modelo",
"editFileName": "Editar nombre de archivo",
"editBaseModel": "Editar modelo base",
"editVersionName": "Editar nombre de versión",
"viewOnCivitai": "Ver en Civitai",
"viewOnCivitaiText": "Ver en Civitai",
"viewCreatorProfile": "Ver perfil del creador",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "Moteur de téléchargement",
"help": "Choisissez comment les fichiers de modèles sont téléchargés. Python utilise le téléchargeur intégré. aria2 utilise le processus externe expérimental de téléchargement.",
"help": "Choisissez comment les fichiers de modèles sont téléchargés. Python utilise le téléchargeur intégré. aria2 utilise le processus externe recommandé de téléchargement.",
"options": {
"python": "Python (intégré)",
"aria2": "aria2 (expérimental)"
"aria2": "aria2 (recommandé)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "Modifier le nom du modèle",
"editFileName": "Modifier le nom de fichier",
"editBaseModel": "Modifier le modèle de base",
"editVersionName": "Modifier le nom de la version",
"viewOnCivitai": "Voir sur Civitai",
"viewOnCivitaiText": "Voir sur Civitai",
"viewCreatorProfile": "Voir le profil du créateur",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "מנגנון הורדה",
"help": "בחר כיצד יורדים קבצי המודל. Python משתמש במוריד המובנה. aria2 משתמש בתהליך הורדה חיצוני ניסיוני.",
"help": "בחר כיצד יורדים קבצי המודל. Python משתמש במוריד המובנה. aria2 משתמש בתהליך הורדה חיצוני מומלץ.",
"options": {
"python": "Python (מובנה)",
"aria2": "aria2 (ניסיוני)"
"aria2": "aria2 (מומלץ)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "ערוך שם מודל",
"editFileName": "ערוך שם קובץ",
"editBaseModel": "ערוך מודל בסיס",
"editVersionName": "ערוך שם גרסה",
"viewOnCivitai": "הצג ב-Civitai",
"viewOnCivitaiText": "הצג ב-Civitai",
"viewCreatorProfile": "הצג פרופיל יוצר",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "ダウンロードバックエンド",
"help": "モデルファイルのダウンロード方法を選択します。Python は内蔵ダウンローダーを使用し、aria2 は実験的な外部ダウンローダープロセスを使用します。",
"help": "モデルファイルのダウンロード方法を選択します。Python は内蔵ダウンローダーを使用し、aria2 は推奨の外部ダウンローダープロセスを使用します。",
"options": {
"python": "Python内蔵",
"aria2": "aria2実験的"
"aria2": "aria2推奨"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "モデル名を編集",
"editFileName": "ファイル名を編集",
"editBaseModel": "ベースモデルを編集",
"editVersionName": "バージョン名を編集",
"viewOnCivitai": "Civitaiで表示",
"viewOnCivitaiText": "Civitaiで表示",
"viewCreatorProfile": "作成者プロフィールを表示",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "다운로드 백엔드",
"help": "모델 파일을 다운로드하는 방식을 선택합니다. Python은 내장 다운로더를 사용하고, aria2는 실험적인 외부 다운로더 프로세스를 사용합니다.",
"help": "모델 파일을 다운로드하는 방식을 선택합니다. Python은 내장 다운로더를 사용하고, aria2는 권장되는 외부 다운로더 프로세스를 사용합니다.",
"options": {
"python": "Python(내장)",
"aria2": "aria2(실험적)"
"aria2": "aria2(권장)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "모델명 편집",
"editFileName": "파일명 편집",
"editBaseModel": "베이스 모델 편집",
"editVersionName": "버전명 편집",
"viewOnCivitai": "Civitai에서 보기",
"viewOnCivitaiText": "Civitai에서 보기",
"viewCreatorProfile": "제작자 프로필 보기",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "Бэкенд загрузки",
"help": "Выберите способ загрузки файлов моделей. Python использует встроенный загрузчик. aria2 использует экспериментальный внешний процесс загрузки.",
"help": "Выберите способ загрузки файлов моделей. Python использует встроенный загрузчик. aria2 использует рекомендуемый внешний процесс загрузки.",
"options": {
"python": "Python (встроенный)",
"aria2": "aria2 (экспериментальный)"
"aria2": "aria2 (рекомендуемый)"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "Редактировать название модели",
"editFileName": "Редактировать имя файла",
"editBaseModel": "Редактировать базовую модель",
"editVersionName": "Редактировать название версии",
"viewOnCivitai": "Посмотреть на Civitai",
"viewOnCivitaiText": "Посмотреть на Civitai",
"viewCreatorProfile": "Посмотреть профиль создателя",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "下载后端",
"help": "选择模型文件的下载方式。Python 使用内置下载器。aria2 使用实验性的外部下载进程。",
"help": "选择模型文件的下载方式。Python 使用内置下载器。aria2 使用推荐的外部下载进程。",
"options": {
"python": "Python内置",
"aria2": "aria2实验性"
"aria2": "aria2推荐"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "编辑模型名称",
"editFileName": "编辑文件名",
"editBaseModel": "编辑基础模型",
"editVersionName": "编辑版本名称",
"viewOnCivitai": "在 Civitai 查看",
"viewOnCivitaiText": "在 Civitai 查看",
"viewCreatorProfile": "查看创作者主页",

View File

@@ -269,10 +269,10 @@
},
"downloadBackend": {
"label": "下載後端",
"help": "選擇模型檔案的下載方式。Python 使用內建下載器。aria2 使用實驗性的外部下載程序。",
"help": "選擇模型檔案的下載方式。Python 使用內建下載器。aria2 使用推薦的外部下載程序。",
"options": {
"python": "Python內建",
"aria2": "aria2實驗性"
"aria2": "aria2推薦"
}
},
"aria2cPath": {
@@ -1180,6 +1180,7 @@
"editModelName": "編輯模型名稱",
"editFileName": "編輯檔案名稱",
"editBaseModel": "編輯基礎模型",
"editVersionName": "編輯版本名稱",
"viewOnCivitai": "在 Civitai 查看",
"viewOnCivitaiText": "在 Civitai 查看",
"viewCreatorProfile": "查看創作者個人檔案",

View File

@@ -39,7 +39,7 @@ class Aria2Transfer:
class Aria2Downloader:
"""Manage an aria2 RPC daemon for experimental model downloads."""
"""Manage an aria2 RPC daemon for recommended model downloads."""
_instance = None
_lock = asyncio.Lock()

View File

@@ -1,7 +1,7 @@
[project]
name = "comfyui-lora-manager"
description = "Revolutionize your workflow with the ultimate LoRA companion for ComfyUI!"
version = "1.0.7"
version = "1.0.8"
license = {file = "LICENSE"}
dependencies = [
"aiohttp",

View File

@@ -255,25 +255,28 @@
transform: translateY(-2px);
}
/* File name copy styles */
.file-name-wrapper {
/* Editable inline field styles (file name, version name, etc.) */
.file-name-wrapper,
.version-name-wrapper {
display: flex;
align-items: center;
gap: 8px;
padding: 4px;
padding: 4px 0;
border-radius: var(--border-radius-xs);
transition: background-color 0.2s;
position: relative;
}
.file-name-content {
padding: 2px 4px;
.file-name-content,
.version-name-content {
padding: 2px 4px 2px 0;
border-radius: var(--border-radius-xs);
border: 1px solid transparent;
flex: 1;
}
.file-name-wrapper.editing .file-name-content {
.file-name-wrapper.editing .file-name-content,
.version-name-wrapper.editing .version-name-content {
border: 1px solid var(--lora-accent);
background: var(--bg-color);
outline: none;
@@ -283,7 +286,8 @@
.edit-model-name-btn,
.edit-file-name-btn,
.edit-base-model-btn,
.edit-model-description-btn {
.edit-model-description-btn,
.edit-version-name-btn {
background: transparent;
border: none;
color: var(--text-color);
@@ -299,9 +303,11 @@
.edit-file-name-btn.visible,
.edit-base-model-btn.visible,
.edit-model-description-btn.visible,
.edit-version-name-btn.visible,
.model-name-header:hover .edit-model-name-btn,
.file-name-wrapper:hover .edit-file-name-btn,
.base-model-display:hover .edit-base-model-btn,
.version-name-wrapper:hover .edit-version-name-btn,
.model-name-header:hover .edit-model-description-btn {
opacity: 0.5;
}
@@ -309,14 +315,16 @@
.edit-model-name-btn:hover,
.edit-file-name-btn:hover,
.edit-base-model-btn:hover,
.edit-model-description-btn:hover {
.edit-model-description-btn:hover,
.edit-version-name-btn:hover {
opacity: 0.8 !important;
background: rgba(0, 0, 0, 0.05);
}
[data-theme="dark"] .edit-model-name-btn:hover,
[data-theme="dark"] .edit-file-name-btn:hover,
[data-theme="dark"] .edit-base-model-btn:hover {
[data-theme="dark"] .edit-base-model-btn:hover,
[data-theme="dark"] .edit-version-name-btn:hover {
background: rgba(255, 255, 255, 0.05);
}
@@ -338,7 +346,7 @@
}
.base-model-content {
padding: 2px 4px;
padding: 2px 4px 2px 0;
border-radius: var(--border-radius-xs);
border: 1px solid transparent;
color: var(--text-color);

View File

@@ -66,6 +66,12 @@ function updateModalFilePathReferences(newFilePath) {
fileNameContent.setAttribute('data-file-path', newFilePath);
}
const versionNameContent = scopedQuery('.version-name-content');
if (versionNameContent && versionNameContent.dataset) {
versionNameContent.dataset.filePath = newFilePath;
versionNameContent.setAttribute('data-file-path', newFilePath);
}
const editTagsBtn = scopedQuery('.edit-tags-btn');
if (editTagsBtn) {
editTagsBtn.dataset.filePath = newFilePath;
@@ -516,3 +522,127 @@ export function setupFileNameEditing(filePath) {
editBtn.classList.remove('visible');
}
}
/**
* Set up version name editing functionality
* @param {string} filePath - File path
*/
export function setupVersionNameEditing(filePath) {
const versionNameContent = document.querySelector('.version-name-content');
const editBtn = document.querySelector('.edit-version-name-btn');
if (!versionNameContent || !editBtn) return;
// Store the file path in a data attribute for later use
versionNameContent.dataset.filePath = filePath;
// Show edit button on hover
const versionNameWrapper = document.querySelector('.version-name-wrapper');
versionNameWrapper.addEventListener('mouseenter', () => {
editBtn.classList.add('visible');
});
versionNameWrapper.addEventListener('mouseleave', () => {
if (!versionNameWrapper.classList.contains('editing')) {
editBtn.classList.remove('visible');
}
});
// Handle edit button click
editBtn.addEventListener('click', () => {
versionNameWrapper.classList.add('editing');
versionNameContent.setAttribute('contenteditable', 'true');
// Store original value for comparison later
versionNameContent.dataset.originalValue = versionNameContent.textContent.trim();
versionNameContent.focus();
// Place cursor at the end
const range = document.createRange();
const sel = window.getSelection();
if (versionNameContent.childNodes.length > 0) {
range.setStart(versionNameContent.childNodes[0], versionNameContent.textContent.length);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
}
editBtn.classList.add('visible');
});
// Handle keyboard events in edit mode
versionNameContent.addEventListener('keydown', function(e) {
if (!this.getAttribute('contenteditable')) return;
if (e.key === 'Enter') {
e.preventDefault();
this.blur(); // Trigger save on Enter
} else if (e.key === 'Escape') {
e.preventDefault();
// Restore original value
this.textContent = this.dataset.originalValue;
exitEditMode();
}
});
// Limit version name length
versionNameContent.addEventListener('input', function() {
if (!this.getAttribute('contenteditable')) return;
if (this.textContent.length > 100) {
this.textContent = this.textContent.substring(0, 100);
// Place cursor at the end
const range = document.createRange();
const sel = window.getSelection();
range.setStart(this.childNodes[0], 100);
range.collapse(true);
sel.removeAllRanges();
sel.addRange(range);
showToast('toast.models.nameTooLong', {}, 'warning');
}
});
// Handle focus out - save changes
versionNameContent.addEventListener('blur', async function() {
if (!this.getAttribute('contenteditable')) return;
const newVersionName = this.textContent.trim();
const originalValue = this.dataset.originalValue;
// Basic validation
if (!newVersionName) {
// Restore original value if empty
this.textContent = originalValue;
showToast('toast.models.nameCannotBeEmpty', {}, 'error');
exitEditMode();
return;
}
if (newVersionName === originalValue) {
// No changes, just exit edit mode
exitEditMode();
return;
}
try {
// Resolve current file path from modal state
const filePath = getActiveModalFilePath(this.dataset.filePath);
await getModelApiClient().saveModelMetadata(filePath, { civitai: { name: newVersionName } });
showToast('toast.models.nameUpdatedSuccessfully', {}, 'success');
} catch (error) {
console.error('Error updating version name:', error);
this.textContent = originalValue; // Restore original version name
showToast('toast.models.nameUpdateFailed', {}, 'error');
} finally {
exitEditMode();
}
});
function exitEditMode() {
versionNameContent.removeAttribute('contenteditable');
versionNameWrapper.classList.remove('editing');
editBtn.classList.remove('visible');
}
}

View File

@@ -11,7 +11,8 @@ import { setupTabSwitching } from './ModelDescription.js';
import {
setupModelNameEditing,
setupBaseModelEditing,
setupFileNameEditing
setupFileNameEditing,
setupVersionNameEditing
} from './ModelMetadata.js';
import { setupTagEditMode } from './ModelTags.js';
import { getModelApiClient } from '../../api/modelApiFactory.js';
@@ -466,7 +467,12 @@ export async function showModelModal(model, modelType) {
<div class="info-grid">
<div class="info-item">
<label>${translate('modals.model.metadata.version', {}, 'Version')}</label>
<span>${modelWithFullData.civitai?.name || 'N/A'}</span>
<div class="version-name-wrapper">
<span class="version-name-content">${modelWithFullData.civitai?.name || 'N/A'}</span>
<button class="edit-version-name-btn" title="${translate('modals.model.actions.editVersionName', {}, 'Edit version name')}">
<i class="fas fa-pencil-alt"></i>
</button>
</div>
</div>
<div class="info-item">
<label>${translate('modals.model.metadata.fileName', {}, 'File Name')}</label>
@@ -660,6 +666,7 @@ export async function showModelModal(model, modelType) {
setupTagTooltip();
setupTagEditMode(modelType);
setupModelNameEditing(modelWithFullData.file_path);
setupVersionNameEditing(modelWithFullData.file_path);
setupBaseModelEditing(modelWithFullData.file_path);
setupFileNameEditing(modelWithFullData.file_path);
setupEventHandlers(modelWithFullData.file_path, modelType);