{"id":7106,"date":"2026-10-26T01:45:25","date_gmt":"2026-10-26T01:45:25","guid":{"rendered":"https:\/\/www.canaldelasrecetas.com\/cms\/?p=7106"},"modified":"2026-10-26T01:45:25","modified_gmt":"2026-10-26T01:45:25","slug":"artcraft-apps-libres-fr","status":"publish","type":"post","link":"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-fr\/","title":{"rendered":"ArtCraft : 14 logiciels libres pour cr\u00e9er, comme Photoshop, Premiere, Word ou AutoCAD"},"content":{"rendered":"\n<style>\n.ac-langbar{font-size:.9em;line-height:1.9}\n.ac-anuncio{border:2px solid #cc1500;border-radius:10px;padding:1em 1.2em;margin:1.8em 0;background:#fffaf2}\n.ac-anuncio .ac-et{font-size:.75em;letter-spacing:.08em;text-transform:uppercase;color:#8a6a4a}\n.ac-anuncio img{vertical-align:middle}\n.ac-app h3{margin-bottom:.2em}\n.ac-app .ac-ver{font-size:.8em;font-weight:400;color:#7a6a5a}\n.ac-aviso{border-inline-start:4px solid #dd5500;background:#fff6ec;padding:.8em 1em;margin:1.2em 0;font-size:.95em}\n.ac-bajar{display:inline-block;background:#1f6feb;color:#fff!important;padding:.6em 1.1em;border-radius:8px;font-weight:700;text-decoration:none}\n.ac-code{direction:ltr;text-align:left;background:#1e1e1e;color:#e8e8e8;padding:1em;border-radius:8px;overflow:auto;max-height:28em;font-size:.82em;line-height:1.45;white-space:pre}\n.ac-code-corto{max-height:none}\n<\/style>\n<p class=\"ac-langbar\">\ud83c\udf10 <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-es\/\" hreflang=\"es\">Espa\u00f1ol<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-en\/\" hreflang=\"en\">English<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-pt\/\" hreflang=\"pt\">Portugu\u00eas<\/a> &middot; <strong>Fran\u00e7ais<\/strong> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-it\/\" hreflang=\"it\">Italiano<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-de\/\" hreflang=\"de\">Deutsch<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-nl\/\" hreflang=\"nl\">Nederlands<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-pl\/\" hreflang=\"pl\">Polski<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ru\/\" hreflang=\"ru\">\u0420\u0443\u0441\u0441\u043a\u0438\u0439<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-uk\/\" hreflang=\"uk\">\u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-tr\/\" hreflang=\"tr\">T\u00fcrk\u00e7e<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-el\/\" hreflang=\"el\">\u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ar\/\" hreflang=\"ar\">\u0627\u0644\u0639\u0631\u0628\u064a\u0629<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-fa\/\" hreflang=\"fa\">\u0641\u0627\u0631\u0633\u06cc<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-he\/\" hreflang=\"he\">\u05e2\u05d1\u05e8\u05d9\u05ea<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-hi\/\" hreflang=\"hi\">\u0939\u093f\u0928\u094d\u0926\u0940<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-bn\/\" hreflang=\"bn\">\u09ac\u09be\u0982\u09b2\u09be<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ta\/\" hreflang=\"ta\">\u0ba4\u0bae\u0bbf\u0bb4\u0bcd<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-id\/\" hreflang=\"id\">Bahasa Indonesia<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-vi\/\" hreflang=\"vi\">Ti\u1ebfng Vi\u1ec7t<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-th\/\" hreflang=\"th\">\u0e44\u0e17\u0e22<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-zh\/\" hreflang=\"zh\">\u4e2d\u6587<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ja\/\" hreflang=\"ja\">\u65e5\u672c\u8a9e<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-ko\/\" hreflang=\"ko\">\ud55c\uad6d\uc5b4<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-sw\/\" hreflang=\"sw\">Kiswahili<\/a><\/p>\n<h2>L\u2019histoire : des frais de r\u00e9siliation de trop<\/h2>\n<p>L\u2019histoire qui circule ces semaines-ci sur les forums et les r\u00e9seaux, c\u2019est qu\u2019ArtCraft est n\u00e9 d\u2019une col\u00e8re : son auteur \u00ab s\u2019est fait arnaquer \u00bb. Derri\u00e8re le projet se trouve <strong>Brandon Thomas<\/strong>, ing\u00e9nieur logiciel d\u2019Atlanta (\u00c9tats-Unis) avec quinze ans de m\u00e9tier, qui signait sur Reddit <em>u\/ai_art_is_art<\/em>. Le mot \u00ab arnaque \u00bb est celui du public ; lui raconte qu\u2019Adobe lui a factur\u00e9 les <strong>frais de r\u00e9siliation<\/strong> de son abonnement.<\/p>\n<p>\u00ab Ils m\u2019ont factur\u00e9 les \u201cfrais de r\u00e9siliation\u201d \u00e0 plusieurs reprises et je les d\u00e9teste depuis \u00bb, a-t-il \u00e9crit sur Reddit. Sur Hacker News, il a dit s\u2019\u00eatre fait prendre trop souvent par ce \u00ab dark pattern \u00bb : la p\u00e9nalit\u00e9 pr\u00e9lev\u00e9e quand on quitte avant terme un forfait annuel pay\u00e9 au mois. Ce n\u2019est pas une plainte isol\u00e9e : en juin 2024, le minist\u00e8re am\u00e9ricain de la Justice a poursuivi Adobe pour avoir cach\u00e9 ces frais et compliqu\u00e9 la r\u00e9siliation. Adobe soutient que ses conditions sont transparentes.<\/p>\n<p>Sa r\u00e9ponse : refaire les logiciels et les offrir. Avec l\u2019aide de Claude, l\u2019intelligence artificielle d\u2019Anthropic, et du langage Rust, il a publi\u00e9 sur GitHub entre fin septembre et d\u00e9but octobre 2026 les sept premi\u00e8res applications \u2014 l\u2019\u00e9quivalent de Photoshop, Illustrator, Premiere, Lightroom, After Effects, InDesign et Acrobat \u2014 puis, en quelques semaines, Word, PowerPoint, Excel, AutoCAD, Pro Tools et Figma. Il affirme qu\u2019il s\u2019agit de r\u00e9impl\u00e9mentations \u00ab en salle blanche \u00bb, faites \u00e0 partir des sp\u00e9cifications publiques des formats, sans le code de personne.<\/p>\n<p>La phrase qui r\u00e9sume tout, \u00ab le logiciel, c\u2019est fini \u00bb, a fait le tour du monde : si une personne avec l\u2019IA peut refaire en quelques semaines ce qui a pris des d\u00e9cennies, le logiciel payant aura du mal. Certains doutent : le professeur Andr\u00e9s Guadamuz, de l\u2019universit\u00e9 du Sussex, rappelle qu\u2019on ne sait pas encore si ce processus \u00ab en salle blanche \u00bb r\u00e9siste \u00e0 l\u2019examen, ni quelle part du code il a \u00e9crite et quelle part l\u2019IA. Thomas assure que ce n\u2019est pas \u00ab un feu de paille qui va mourir \u00bb, et pour l\u2019instant le rythme quasi quotidien des versions lui donne raison.<\/p>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Publicit\u00e9<\/div><p><strong>Des logiciels libres pour cr\u00e9er ; JamboQR pour partager les bons plans.<\/strong> Avec <strong>JamboQR<\/strong>, vous cr\u00e9ez un club de bons plans avec vos voisins et amis : chacun publie ce qu\u2019il trouve, avec photo, prix et lieu. Gratuit.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-inicio&amp;utm_campaign=artcraft-fr\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<p><strong>ArtCraft<\/strong> est un projet open source (licence MIT ou Apache-2.0) de l\u2019\u00e9quipe <em>storytold<\/em> qui r\u00e9\u00e9crit de z\u00e9ro, en Rust, les outils que nous utilisons chaque jour pour cr\u00e9er. Ce sont des programmes natifs et l\u00e9gers, sans abonnement, qui imitent le fonctionnement des logiciels commerciaux les plus connus sans copier leur code. Ils tournent sous <strong>Windows, macOS, Linux et FreeBSD<\/strong>, beaucoup aussi dans le navigateur, et de nouvelles versions sortent presque chaque semaine. Les noms commerciaux cit\u00e9s ne sont qu\u2019un rep\u00e8re : ces logiciels n\u2019ont aucun lien avec ces marques.<\/p>\n<h2>Les outils, un par un<\/h2>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/craft-launcher\" rel=\"noopener\">ArtCraft Launcher<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.8.1<\/span><\/h3><p>Commencez par celui-ci. C\u2019est l\u2019installateur de tous les autres : il affiche le catalogue complet, installe chaque application en un clic en choisissant la bonne version pour votre ordinateur, v\u00e9rifie que le fichier n\u2019est pas ab\u00eem\u00e9 et pr\u00e9vient quand il y a des mises \u00e0 jour. Il n\u2019existe pas de paquet unique avec tout, mais ce lanceur s\u2019en approche le plus.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/photocraft\" rel=\"noopener\">PhotoCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.16.0<\/span><\/h3><p>L\u2019\u00e9diteur d\u2019images, dans l\u2019esprit de Photoshop : calques, s\u00e9lections, pinceaux, r\u00e9glages et retouche. C\u2019est l\u2019outil le plus populaire du projet sur GitHub.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/lightcraft\" rel=\"noopener\">LightCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.14.0<\/span><\/h3><p>Phototh\u00e8que et d\u00e9veloppement RAW non destructif, fa\u00e7on Lightroom : vous organisez vos photos et r\u00e9glez exposition, couleur et recadrage sans jamais toucher au fichier d\u2019origine.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/vectorcraft\" rel=\"noopener\">VectorCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.17.0<\/span><\/h3><p>Illustration vectorielle comme dans Illustrator : courbes, formes, trac\u00e9s et texte qui s\u2019agrandissent sans perte de qualit\u00e9. Id\u00e9al pour logos, ic\u00f4nes et affiches.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/filmcraft\" rel=\"noopener\">FilmCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>Montage vid\u00e9o non lin\u00e9aire, proche de Premiere Pro : timeline multipiste, coupes, \u00e9talonnage et son.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Publicit\u00e9<\/div><p><strong>Des logiciels libres pour cr\u00e9er ; JamboQR pour partager les bons plans.<\/strong> Avec <strong>JamboQR<\/strong>, vous cr\u00e9ez un club de bons plans avec vos voisins et amis : chacun publie ce qu\u2019il trouve, avec photo, prix et lieu. Gratuit.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-5&amp;utm_campaign=artcraft-fr\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/effectcraft\" rel=\"noopener\">EffectCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.17.0<\/span><\/h3><p>Animation graphique, compositing et effets visuels dans la lign\u00e9e d\u2019After Effects : titres, animation par images cl\u00e9s et calques qui se combinent.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/soundcraft\" rel=\"noopener\">SoundCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.1<\/span><\/h3><p>Station audio pour enregistrer, monter et mixer, inspir\u00e9e de Pro Tools : plusieurs pistes, coupes, effets et mixage final.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/designcraft\" rel=\"noopener\">DesignCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>Mise en page et publication fa\u00e7on InDesign : magazines, brochures et livres avec pages, colonnes, styles de texte et images.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/figcraft\" rel=\"noopener\">FigCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.2<\/span><\/h3><p>Conception d\u2019interfaces et prototypage, comme Figma : \u00e9crans d\u2019applications et de sites, composants r\u00e9utilisables et maquettes pour montrer comment une chose fonctionnera avant de la programmer.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/pdfcraft\" rel=\"noopener\">PdfCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.14.0<\/span><\/h3><p>Pour lire, organiser et prot\u00e9ger des PDF, dans la lign\u00e9e d\u2019Acrobat : ouvrir, annoter, r\u00e9ordonner les pages et enregistrer des documents prot\u00e9g\u00e9s.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Publicit\u00e9<\/div><p><strong>Des logiciels libres pour cr\u00e9er ; JamboQR pour partager les bons plans.<\/strong> Avec <strong>JamboQR<\/strong>, vous cr\u00e9ez un club de bons plans avec vos voisins et amis : chacun publie ce qu\u2019il trouve, avec photo, prix et lieu. Gratuit.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-10&amp;utm_campaign=artcraft-fr\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/wordcraft\" rel=\"noopener\">WordCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.0<\/span><\/h3><p>Traitement de texte proche de Word, pour lettres, rapports et documents avec styles, tableaux et images.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/deckcraft\" rel=\"noopener\">DeckCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.11.1<\/span><\/h3><p>Pr\u00e9sentations et diaporamas, fa\u00e7on PowerPoint : diapositives avec texte, images et formes \u00e0 projeter en plein \u00e9cran.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/gridcraft\" rel=\"noopener\">GridCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.12.1<\/span><\/h3><p>Tableur comme Excel : formules, tableaux de donn\u00e9es, graphiques, tri et filtrage des informations.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/cadcraft\" rel=\"noopener\">CADCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.13.0<\/span><\/h3><p>Conception assist\u00e9e par ordinateur et dessin technique, dans la lign\u00e9e d\u2019AutoCAD : plans aux mesures exactes, calques et cotes.<\/p><\/div>\n<div class=\"ac-app\"><h3><a href=\"https:\/\/github.com\/storytold\/artcraft\" rel=\"noopener\">ArtCraft<\/a> <span class=\"ac-ver\" dir=\"ltr\">v0.41.0<\/span><\/h3><p>L\u2019application qui donne son nom au projet, et la seule \u00e0 part : un studio pour cr\u00e9er images et vid\u00e9os avec l\u2019intelligence artificielle, pens\u00e9 pour les artistes, designers et cin\u00e9astes. Pour l\u2019instant uniquement sous Windows et Mac.<\/p><\/div>\n<h2 id=\"script\">Gardez-les tous : code source et ex\u00e9cutables<\/h2>\n<p>Si vous aimez garder une copie de tout (au cas o\u00f9 un projet dispara\u00eetrait un jour, ou pour installer sans Internet), ce script pour Linux t\u00e9l\u00e9charge le <strong>code source<\/strong> de chaque outil et <strong>tous les ex\u00e9cutables de sa derni\u00e8re version<\/strong>, rang\u00e9s dans des dossiers par outil et par syst\u00e8me (Windows, macOS, Linux, FreeBSD et web). D\u00e9compressez-le et lancez-le ; l\u2019argument est le dossier de destination, et <code>PLATFORMS<\/code> et <code>EXCLUDE<\/code> choisissent quoi t\u00e9l\u00e9charger. (Ses commentaires sont en espagnol.)<\/p>\n<p><a class=\"ac-bajar\" href=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/artcraft-mirror.zip\" download>\u2b07 T\u00e9l\u00e9charger le script (artcraft-mirror.zip)<\/a><\/p>\n<pre class=\"ac-code ac-code-corto\" dir=\"ltr\"><code>chmod +x artcraft-mirror.sh\n.\/artcraft-mirror.sh ~\/artcraft\n\nPLATFORMS=&quot;windows linux&quot; EXCLUDE=&#x27;riscv64|aarch64&#x27; .\/artcraft-mirror.sh ~\/artcraft<\/code><\/pre>\n<ul><li><strong>On peut l\u2019interrompre :<\/strong> s\u2019il s\u2019arr\u00eate, relancez-le et il reprend l\u00e0 o\u00f9 il en \u00e9tait.<\/li><li><strong>Il ne t\u00e9l\u00e9charge que la nouveaut\u00e9 :<\/strong> \u00e0 chaque version, il cr\u00e9e son dossier sans toucher aux anciens.<\/li><li><strong>Il v\u00e9rifie tout<\/strong> avec les sommes SHA-256 publi\u00e9es pour chaque version.<\/li><li><strong>\u00c7a prend de la place :<\/strong> toutes les plateformes font environ 24 Go par version ; si seules certaines vous int\u00e9ressent, filtrez.<\/li><\/ul>\n<details><summary>Voir le script complet<\/summary><pre class=\"ac-code\" dir=\"ltr\"><code>#!\/usr\/bin\/env bash\n# artcraft-mirror.sh \u2014 espejo local de las Craft Apps de ArtCraft (github.com\/storytold)\n#\n# Estructura que genera:\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/code\/&lt;rama&gt;-&lt;herramienta&gt;-AAAAMMDD.zip   (+ .sha con el commit)\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/release-&lt;versi\u00f3n&gt;\/{windows,macos,linux,freebsd,web,otros}\/...\n#   &lt;DEST&gt;\/&lt;herramienta&gt;\/release-&lt;versi\u00f3n&gt;\/SHA256SUMS.txt\n#\n# - Reanudable: las descargas van a *.part y contin\u00faan con Range (curl -C -).\n#   Una release se da por terminada s\u00f3lo cuando todo se verific\u00f3 contra SHA256SUMS\n#   (queda el marcador .complete). Si se corta, se vuelve a ejecutar y sigue.\n# - Incremental: s\u00f3lo mira la \u00faltima release de cada herramienta; las carpetas\n#   release-* anteriores y los zip de c\u00f3digo de d\u00edas anteriores no se tocan.\n# - El c\u00f3digo fuente se baja s\u00f3lo si el commit de la rama principal cambi\u00f3.\n#\n# Uso:\n#   .\/artcraft-mirror.sh [DEST]           (DEST por defecto: carpeta del script)\n# Variables opcionales:\n#   GITHUB_TOKEN=ghp_...                  sube el l\u00edmite de la API de 60 a 5000 llamadas\/h\n#   PLATFORMS=&quot;windows linux macos&quot;       s\u00f3lo estas plataformas (por defecto todas)\n#   EXCLUDE=&#x27;riscv64|aarch64|flatpak&#x27;     regex de nombres de archivo a omitir\n#   TOOLS=&quot;photocraft cadcraft&quot;           s\u00f3lo estas herramientas\n#   EXTRA_TOOLS=&quot;anicraft&quot;                a\u00f1adir repos de storytold no incluidos en el cat\u00e1logo\n#   SKIP_CODE=1 \/ SKIP_RELEASES=1\n\nset -uo pipefail\n\nOWNER=storytold\nSCRIPT_DIR=$(cd &quot;$(dirname &quot;${BASH_SOURCE[0]}&quot;)&quot; &amp;&amp; pwd)\nDEST=${1:-$SCRIPT_DIR}\nPLATFORMS=${PLATFORMS:-&quot;windows macos linux freebsd web otros&quot;}\nEXCLUDE=${EXCLUDE:-}\nTODAY=$(date +%Y%m%d)\n\n# Cat\u00e1logo de respaldo por si no se puede leer el del launcher\nFALLBACK_TOOLS=&quot;photocraft vectorcraft filmcraft lightcraft pdfcraft effectcraft designcraft\nfigcraft wordcraft soundcraft deckcraft cadcraft gridcraft&quot;\n# Fuera del cat\u00e1logo del launcher pero con releases propias\nALWAYS_TOOLS=&quot;craft-launcher artcraft&quot;\n\nfor bin in curl jq git sha256sum flock; do\n    command -v &quot;$bin&quot; &gt;\/dev\/null || { echo &quot;Falta &#x27;$bin&#x27;&quot; &gt;&amp;2; exit 1; }\ndone\n\nmkdir -p &quot;$DEST&quot;\nexec 9&gt;&quot;$DEST\/.artcraft-mirror.lock&quot;\nflock -n 9 || { echo &quot;Ya hay otra ejecuci\u00f3n en curso en $DEST&quot; &gt;&amp;2; exit 1; }\n\nlog()  { printf &#x27;[%s] %s\\n&#x27; &quot;$(date +%H:%M:%S)&quot; &quot;$*&quot;; }\nwarn() { printf &#x27;[%s] AVISO: %s\\n&#x27; &quot;$(date +%H:%M:%S)&quot; &quot;$*&quot; &gt;&amp;2; }\n\napi() {\n    local auth=()\n    [[ -n ${GITHUB_TOKEN:-} ]] &amp;&amp; auth=(-H &quot;Authorization: Bearer $GITHUB_TOKEN&quot;)\n    curl -fsSL --retry 3 -H &quot;Accept: application\/vnd.github+json&quot; &quot;${auth[@]}&quot; \\\n        &quot;https:\/\/api.github.com\/$1&quot;\n}\n\n# Descarga: $1 url, $2 destino final, $3 tama\u00f1o esperado.\n# Con tama\u00f1o conocido contin\u00faa el .part (Range); sin \u00e9l (zip de c\u00f3digo, generado\n# al vuelo y sin Range) empieza de cero.\nfetch() {\n    local url=$1 out=$2 size=${3:-} part=&quot;$2.part&quot; have resume=()\n    mkdir -p &quot;$(dirname &quot;$out&quot;)&quot;\n    if [[ -n $size &amp;&amp; -f $part ]]; then\n        have=$(stat -c %s &quot;$part&quot;)\n        if (( have == size )); then mv -f &quot;$part&quot; &quot;$out&quot;; return 0; fi\n        if (( have &gt; size )); then rm -f &quot;$part&quot;; fi\n        resume=(-C -)\n    else\n        rm -f &quot;$part&quot;\n    fi\n    curl -fL --retry 5 --retry-delay 5 --retry-all-errors &quot;${resume[@]}&quot; \\\n        --progress-bar -o &quot;$part&quot; &quot;$url&quot; || return 1\n    mv -f &quot;$part&quot; &quot;$out&quot;\n}\n\nplatform_of() {\n    case $1 in\n        SHA256SUMS*)                              echo . ;;\n        *windows*|*.msi|*.exe)                    echo windows ;;\n        *macos*|*.dmg|*.app.tar.gz|*universal*)   echo macos ;;\n        *freebsd*)                                echo freebsd ;;\n        *linux*|*.AppImage*|*.deb|*.rpm|*.flatpak) echo linux ;;\n        *-web-*)                                  echo web ;;\n        *)                                        echo otros ;;\n    esac\n}\n\nwanted() {\n    local name=$1 plat=$2\n    [[ $plat == . ]] &amp;&amp; return 0\n    [[ &quot; $PLATFORMS &quot; == *&quot; $plat &quot;* ]] || return 1\n    [[ -n $EXCLUDE &amp;&amp; $name =~ $EXCLUDE ]] &amp;&amp; return 1\n    return 0\n}\n\ntool_list() {\n    if [[ -n ${TOOLS:-} ]]; then echo $TOOLS; return; fi\n    local cat\n    cat=$(curl -fsSL &quot;https:\/\/raw.githubusercontent.com\/$OWNER\/craft-launcher\/main\/crates\/core\/src\/catalog.rs&quot; 2&gt;\/dev\/null \\\n          | grep -oE &quot;\\&quot;$OWNER\/[a-z0-9-]+\\&quot;&quot; | tr -d &#x27;&quot;&#x27; | cut -d\/ -f2 | grep -v &#x27;^craft-launcher$&#x27; | sort -u)\n    [[ -z $cat ]] &amp;&amp; { warn &quot;no pude leer el cat\u00e1logo del launcher; uso la lista interna&quot;; cat=$FALLBACK_TOOLS; }\n    echo $cat $ALWAYS_TOOLS ${EXTRA_TOOLS:-} | tr &#x27; &#x27; &#x27;\\n&#x27; | awk &#x27;NF &amp;&amp; !seen[$0]++&#x27;\n}\n\nmirror_code() {\n    local tool=$1 dir=&quot;$DEST\/$1\/code&quot; head branch sha last\n    head=$(git ls-remote --symref &quot;https:\/\/github.com\/$OWNER\/$tool&quot; HEAD 2&gt;\/dev\/null) \\\n        || { warn &quot;$tool: no pude consultar el repositorio&quot;; return 1; }\n    branch=$(awk &#x27;\/^ref:\/ {sub(&quot;refs\/heads\/&quot;,&quot;&quot;,$2); print $2}&#x27; &lt;&lt;&lt;&quot;$head&quot;)\n    sha=$(awk &#x27;$2==&quot;HEAD&quot; &amp;&amp; $1!=&quot;ref:&quot; {print $1}&#x27; &lt;&lt;&lt;&quot;$head&quot;)\n    mkdir -p &quot;$dir&quot;\n\n    last=$(ls -1 &quot;$dir&quot;\/*.zip.sha 2&gt;\/dev\/null | sort | tail -1)\n    if [[ -n $last &amp;&amp; $(&lt;&quot;$last&quot;) == &quot;$sha&quot; ]]; then\n        log &quot;$tool: c\u00f3digo al d\u00eda ($branch@${sha:0:8})&quot;\n        return 0\n    fi\n    local zip=&quot;$dir\/$branch-$tool-$TODAY.zip&quot;\n    log &quot;$tool: bajando c\u00f3digo $branch@${sha:0:8} \u2192 $(basename &quot;$zip&quot;)&quot;\n    # El zip por commit garantiza que el archivo corresponde al sha anotado\n    fetch &quot;https:\/\/github.com\/$OWNER\/$tool\/archive\/$sha.zip&quot; &quot;$zip&quot; || { warn &quot;$tool: fall\u00f3 el zip&quot;; return 1; }\n    echo &quot;$sha&quot; &gt; &quot;$zip.sha&quot;\n}\n\nverify() { # $1 archivo, $2 SHA256SUMS \u2192 0 ok \/ 1 mal \/ 2 sin suma publicada\n    local file=$1 sums=$2 expected\n    [[ -f $sums ]] || return 2\n    expected=$(awk -v n=&quot;$(basename &quot;$file&quot;)&quot; &#x27;{f=$2; sub(\/^\\*\/,&quot;&quot;,f)} f==n {print $1}&#x27; &quot;$sums&quot;)\n    [[ -z $expected ]] &amp;&amp; return 2\n    [[ $(sha256sum &quot;$file&quot; | cut -d&#x27; &#x27; -f1) == &quot;$expected&quot; ]]\n}\n\nmirror_release() {\n    local tool=$1 json tag ver rdir\n    json=$(api &quot;repos\/$OWNER\/$tool\/releases\/latest&quot;) || { warn &quot;$tool: sin releases o l\u00edmite de API alcanzado&quot;; return 1; }\n    tag=$(jq -r .tag_name &lt;&lt;&lt;&quot;$json&quot;)\n    ver=${tag#&quot;$tool&quot;-}; ver=${ver#v}\n    rdir=&quot;$DEST\/$tool\/release-$ver&quot;\n\n    if [[ -f $rdir\/.complete &amp;&amp; $(&lt;&quot;$rdir\/.complete&quot;) == &quot;$PLATFORMS|$EXCLUDE&quot; ]]; then\n        log &quot;$tool: release $ver ya completa&quot;\n        return 0\n    fi\n    log &quot;$tool: release $ver&quot;\n    mkdir -p &quot;$rdir&quot;\n    jq -c &#x27;{tag_name, name, published_at, html_url, body}&#x27; &lt;&lt;&lt;&quot;$json&quot; &gt; &quot;$rdir\/release.json&quot;\n\n    local ok=1 name url size plat out sums=&quot;$rdir\/SHA256SUMS.txt&quot;\n    # SHA256SUMS primero para poder verificar el resto\n    while IFS=$&#x27;\\t&#x27; read -r name url size; do\n        plat=$(platform_of &quot;$name&quot;)\n        wanted &quot;$name&quot; &quot;$plat&quot; || continue\n        if [[ $plat == . ]]; then out=&quot;$rdir\/$name&quot;; else out=&quot;$rdir\/$plat\/$name&quot;; fi\n\n        if [[ -f $out ]]; then\n            verify &quot;$out&quot; &quot;$sums&quot;; case $? in\n                0) continue ;;\n                2) [[ $(stat -c %s &quot;$out&quot;) == &quot;$size&quot; ]] &amp;&amp; continue ;;\n            esac\n            warn &quot;$tool: $name no coincide, se vuelve a bajar&quot;; rm -f &quot;$out&quot;\n        fi\n        log &quot;  \u2193 ${out#&quot;$rdir&quot;\/} ($((size \/ 1048576)) MiB)&quot;\n        if ! fetch &quot;$url&quot; &quot;$out&quot; &quot;$size&quot;; then warn &quot;  fall\u00f3 $name&quot;; ok=0; continue; fi\n        verify &quot;$out&quot; &quot;$sums&quot;; case $? in\n            1) warn &quot;  checksum INCORRECTO: $name (se borra)&quot;; rm -f &quot;$out&quot;; ok=0 ;;\n            2) [[ $name != SHA256SUMS* ]] &amp;&amp; [[ $(stat -c %s &quot;$out&quot;) != &quot;$size&quot; ]] &amp;&amp; { warn &quot;  tama\u00f1o incorrecto: $name&quot;; rm -f &quot;$out&quot;; ok=0; } ;;\n        esac\n    done &lt; &lt;(jq -r &#x27;.assets | sort_by(.name | startswith(&quot;SHA256SUMS&quot;) | not)[]\n                    | [.name, .browser_download_url, .size] | @tsv&#x27; &lt;&lt;&lt;&quot;$json&quot;)\n\n    if (( ok )); then echo &quot;$PLATFORMS|$EXCLUDE&quot; &gt; &quot;$rdir\/.complete&quot;; log &quot;$tool: release $ver completa \u2714&quot;\n    else warn &quot;$tool: release $ver incompleta; vuelve a ejecutar el script para continuar&quot;; return 1; fi\n}\n\nfail=0\nfor tool in $(tool_list); do\n    echo &quot;\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 $tool&quot;\n    [[ -z ${SKIP_CODE:-} ]]     &amp;&amp; { mirror_code &quot;$tool&quot;    || fail=1; }\n    [[ -z ${SKIP_RELEASES:-} ]] &amp;&amp; { mirror_release &quot;$tool&quot; || fail=1; }\ndone\n\n(( fail )) &amp;&amp; { warn &quot;Hubo errores; ejecuta de nuevo para reintentar lo pendiente.&quot;; exit 1; }\nlog &quot;Todo al d\u00eda en $DEST&quot;\n<\/code><\/pre><\/details>\n<p class=\"ac-aviso\">Ce sont des programmes tr\u00e8s jeunes, presque tous marqu\u00e9s <em>alpha pr\u00e9coce<\/em> : ils promettent beaucoup, mais ne remplacent pas encore les outils professionnels pour un travail s\u00e9rieux. Essayez-les, gardez une copie de vos fichiers et, si vous trouvez un bug, signalez-le sur leur GitHub.<\/p>\n<h2>R\u00e9f\u00e9rences<\/h2>\n<ul class=\"ac-refs\"><li><a href=\"https:\/\/github.com\/storytold\" rel=\"noopener\">GitHub \u00b7 storytold (todas las Crafting Apps)<\/a><\/li><li><a href=\"https:\/\/github.com\/storytold\/craft-launcher\" rel=\"noopener\">GitHub \u00b7 ArtCraft Launcher<\/a><\/li><li><a href=\"https:\/\/github.com\/storytold\/artcraft\" rel=\"noopener\">GitHub \u00b7 ArtCraft<\/a><\/li><li><a href=\"https:\/\/getartcraft.com\/\" rel=\"noopener\">getartcraft.com<\/a><\/li><li><a href=\"https:\/\/www.aljazeera.com\/news\/2026\/10\/14\/how-ai-apps-are-offering-free-substitutes-for-big-tech-software\" rel=\"noopener\">Al Jazeera (14-10-2026) \u00b7 How AI apps are offering free substitutes for Big Tech software<\/a><\/li><li><a href=\"https:\/\/amateurphotographer.com\/latest\/photo-news\/this-home-coder-got-so-sick-of-adobe-he-built-free-open-source-versions-of-photoshop-lightroom-and-premiere\/\" rel=\"noopener\">Amateur Photographer (08-10-2026) \u00b7 This home coder got so sick of Adobe he built free, open-source versions of Photoshop, Lightroom and Premiere<\/a><\/li><li><a href=\"https:\/\/petapixel.com\/2026\/10\/07\/someone-rebuilt-free-open-source-versions-of-photoshop-premiere-and-lightroom-using-ai\/\" rel=\"noopener\">PetaPixel (07-10-2026) \u00b7 Someone Rebuilt Free, Open-Source Versions of Photoshop, Premiere, and Lightroom Using AI<\/a><\/li><li><a href=\"https:\/\/www.creativebloq.com\/design\/design-software\/someone-just-rebuilt-adobe-creative-cloud-with-ai-then-gave-it-away-for-free\" rel=\"noopener\">Creative Bloq \u00b7 Someone just rebuilt Adobe Creative Cloud with AI \u2013 then gave it away for free<\/a><\/li><li><a href=\"https:\/\/www.cined.com\/artcraft-releases-free-open-source-adobe-alternatives-filmcraft-for-premiere-pro-effectcraft-for-after-effects-written-in-rust-with-ai\/\" rel=\"noopener\">CineD \u00b7 ArtCraft Releases Free Open-Source Adobe Alternatives<\/a><\/li><li><a href=\"https:\/\/korben.info\/en\/i-tested-the-12-free-clones-of-adobe-and-microsoft.html\" rel=\"noopener\">Korben \u00b7 I tested the 12 free clones of Adobe and Microsoft<\/a><\/li><\/ul>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Publicit\u00e9<\/div><p><strong>Des logiciels libres pour cr\u00e9er ; JamboQR pour partager les bons plans.<\/strong> Avec <strong>JamboQR<\/strong>, vous cr\u00e9ez un club de bons plans avec vos voisins et amis : chacun publie ce qu\u2019il trouve, avec photo, prix et lieu. Gratuit.<\/p><p><a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-final&amp;utm_campaign=artcraft-fr\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n","protected":false},"excerpt":{"rendered":"<p>Une \u00e9quipe r\u00e9\u00e9crit de z\u00e9ro, en Rust, des logiciels comme Photoshop, Lightroom, Premiere, Word, Excel ou AutoCAD. Ils sont gratuits et open source. Voici chacun en un paragraphe, plus un script pour tous les conserver.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[12],"tags":[],"class_list":["post-7106","post","type-post","status-publish","format-standard","hentry","category-software-libre"],"spectra_blocks_featured_image_url":null,"spectra_blocks_author_info":{"display_name":"EucL1d35","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/cecf603aee34f11aa921ff30ea69d89a4e51b3cd8d5143029343fa76b0682442?s=96&d=mm&r=g","author_link":"https:\/\/www.canaldelasrecetas.com\/cms\/author\/eucl1d35\/","description":""},"_links":{"self":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7106","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/comments?post=7106"}],"version-history":[{"count":1,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7106\/revisions"}],"predecessor-version":[{"id":7131,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7106\/revisions\/7131"}],"wp:attachment":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/media?parent=7106"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/categories?post=7106"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/tags?post=7106"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}