{"id":7104,"date":"2026-10-26T01:45:22","date_gmt":"2026-10-26T01:45:22","guid":{"rendered":"https:\/\/www.canaldelasrecetas.com\/cms\/?p=7104"},"modified":"2026-10-26T01:45:22","modified_gmt":"2026-10-26T01:45:22","slug":"artcraft-apps-libres-en","status":"publish","type":"post","link":"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-en\/","title":{"rendered":"ArtCraft: 14 free creative apps, like Photoshop, Premiere, Word or 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; <strong>English<\/strong> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-pt\/\" hreflang=\"pt\">Portugu\u00eas<\/a> &middot; <a href=\"https:\/\/www.canaldelasrecetas.com\/cms\/artcraft-apps-libres-fr\/\" hreflang=\"fr\">Fran\u00e7ais<\/a> &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>The story: one cancellation fee too many<\/h2>\n<p>The story going round forums and social media these weeks is that ArtCraft was born out of anger: its author \u201cgot scammed\u201d. Behind the project is <strong>Brandon Thomas<\/strong>, a software engineer from Atlanta (USA) with fifteen years in the trade, who posted on Reddit as <em>u\/ai_art_is_art<\/em>. \u201cScam\u201d is the crowd\u2019s word; what he says is that Adobe charged him its subscription <strong>cancellation fee<\/strong>.<\/p>\n<p>\u201cThey charged me the \u2018cancellation fee\u2019 on multiple occasions and I\u2019ve hated them ever since,\u201d he wrote on Reddit. On Hacker News he said he had been caught by that \u201cdark pattern\u201d too many times: the penalty charged for leaving early an annual plan that is paid monthly. It is not an isolated complaint: in June 2024 the US Department of Justice sued Adobe for hiding those fees and making cancelling hard. Adobe maintains that its terms are transparent.<\/p>\n<p>His answer was to rebuild the programs and give them away. With the help of Claude, Anthropic\u2019s AI, and the Rust language, between late September and early October 2026 he published the first seven apps on GitHub \u2014 the equivalent of Photoshop, Illustrator, Premiere, Lightroom, After Effects, InDesign and Acrobat \u2014 and within a few weeks added Word, PowerPoint, Excel, AutoCAD, Pro Tools and Figma. He says they are \u201cclean-room\u201d reimplementations, built from the public specifications of the file formats, without anyone\u2019s code.<\/p>\n<p>The phrase he summed it up with, \u201csoftware is over\u201d, went round the world: if one person with AI can rebuild in weeks what took decades, paid software is in trouble. Some have doubts: Professor Andres Guadamuz of the University of Sussex points out that we do not yet know whether that \u201cclean-room\u201d process stands up to scrutiny, nor how much code he wrote and how much the AI did. Thomas insists it is not \u201ca one-off flash in the pan that will die\u201d, and for now the almost daily pace of releases proves him right.<\/p>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Advertisement<\/div><p><strong>Free apps to create; JamboQR to share deals.<\/strong> With <strong>JamboQR<\/strong> you set up a deals club with your neighbours and friends: everyone posts what they find, with a photo, price and place. Free.<\/p><p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.jamboqr.app&amp;hl=en&amp;referrer=utm_source%3Dcanaldelasrecetas%26utm_medium%3Dartcraft-inicio%26utm_campaign%3Dartcraft-en\" rel=\"noopener sponsored\"><img decoding=\"async\" src=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/google-play-en.png\" alt=\"Google Play\" width=\"180\" loading=\"lazy\" title=\"ArtCraft: 14 free creative apps, like Photoshop, Premiere, Word or AutoCAD\"><\/a> &nbsp;or at <a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-inicio&amp;utm_campaign=artcraft-en\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n<p><strong>ArtCraft<\/strong> is an open-source project (MIT or Apache-2.0 licence) by the <em>storytold<\/em> team that is rewriting, from scratch and in Rust, the tools we use every day to create. They are native, lightweight programs with no subscriptions, which mimic how the best-known commercial apps work without copying their code. They run on <strong>Windows, macOS, Linux and FreeBSD<\/strong>, many of them in the browser too, and new versions come out almost every week. The commercial names we mention are only a reference: these apps have no connection with those brands.<\/p>\n<h2>The tools, one by one<\/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>Start here. It installs all the others: it shows the full catalogue, installs each app in one click choosing the right build for your computer, checks the download is not damaged and tells you when updates are out. There is no single package with everything, but this launcher is the closest thing.<\/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>The image editor, in the spirit of Photoshop: layers, selections, brushes, adjustments and retouching. It is the project&#8217;s most popular tool on 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>A photo library and non-destructive RAW developer, Lightroom-style: organise your photos and adjust exposure, colour and cropping without ever touching the original file.<\/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>Vector illustration as in Illustrator: curves, shapes, strokes and text that scale without losing quality. Good for logos, icons and posters.<\/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>A non-linear video editor, similar to Premiere Pro: a multi-track timeline, cuts, colour correction and sound.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Advertisement<\/div><p><strong>Free apps to create; JamboQR to share deals.<\/strong> With <strong>JamboQR<\/strong> you set up a deals club with your neighbours and friends: everyone posts what they find, with a photo, price and place. Free.<\/p><p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.jamboqr.app&amp;hl=en&amp;referrer=utm_source%3Dcanaldelasrecetas%26utm_medium%3Dartcraft-5%26utm_campaign%3Dartcraft-en\" rel=\"noopener sponsored\"><img decoding=\"async\" src=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/google-play-en.png\" alt=\"Google Play\" width=\"180\" loading=\"lazy\" title=\"ArtCraft: 14 free creative apps, like Photoshop, Premiere, Word or AutoCAD\"><\/a> &nbsp;or at <a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-5&amp;utm_campaign=artcraft-en\" 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>Motion graphics, compositing and visual effects along the lines of After Effects: titles, keyframe animation and layers that blend together.<\/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>An audio workstation to record, edit and mix, inspired by Pro Tools: multiple tracks, cuts, effects and the final mix.<\/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>Page layout and publishing, InDesign-style: magazines, brochures and books with pages, columns, text styles and 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>Interface design and prototyping, like Figma: app and web screens, reusable components and mock-ups that show how something will work before it is built.<\/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>For reading, organising and protecting PDFs, along the lines of Acrobat: open, annotate, reorder pages and save protected documents.<\/p><\/div>\n<aside class=\"ac-anuncio\"><div class=\"ac-et\">Advertisement<\/div><p><strong>Free apps to create; JamboQR to share deals.<\/strong> With <strong>JamboQR<\/strong> you set up a deals club with your neighbours and friends: everyone posts what they find, with a photo, price and place. Free.<\/p><p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.jamboqr.app&amp;hl=en&amp;referrer=utm_source%3Dcanaldelasrecetas%26utm_medium%3Dartcraft-10%26utm_campaign%3Dartcraft-en\" rel=\"noopener sponsored\"><img decoding=\"async\" src=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/google-play-en.png\" alt=\"Google Play\" width=\"180\" loading=\"lazy\" title=\"ArtCraft: 14 free creative apps, like Photoshop, Premiere, Word or AutoCAD\"><\/a> &nbsp;or at <a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-10&amp;utm_campaign=artcraft-en\" 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>A word processor similar to Word, for letters, reports and documents with styles, tables and 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>Presentations and slide shows, PowerPoint-style: slides with text, images and shapes to present full screen.<\/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>A spreadsheet like Excel: formulas, data tables, charts, and sorting or filtering information.<\/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>Computer-aided design and technical drawing, along the lines of AutoCAD: plans with exact measurements, layers and dimensions.<\/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>The app the project is named after, and the only one that stands apart from the rest: a studio for creating images and video with artificial intelligence, made for artists, designers and filmmakers. For now on Windows and Mac only.<\/p><\/div>\n<h2 id=\"script\">Keep them all: source code and executables<\/h2>\n<p>If you like to keep a copy of everything (in case a project disappears one day, or to install without Internet), this Linux script downloads the <strong>source code<\/strong> of each tool and <strong>every executable of its latest release<\/strong>, sorted into folders by tool and by system (Windows, macOS, Linux, FreeBSD and web). Unzip it and run it; the argument is the destination folder, and <code>PLATFORMS<\/code> and <code>EXCLUDE<\/code> choose what to download. (Its comments are in Spanish.)<\/p>\n<p><a class=\"ac-bajar\" href=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/artcraft-mirror.zip\" download>\u2b07 Download the 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>It can be interrupted:<\/strong> if it stops, run it again and it carries on where it left off.<\/li><li><strong>It only fetches what is new:<\/strong> when a release comes out it creates its folder and leaves the older ones alone.<\/li><li><strong>It verifies everything<\/strong> against the SHA-256 sums each release publishes.<\/li><li><strong>It takes a lot of space:<\/strong> all platforms add up to about 24 GB per release; if you only need some, filter.<\/li><\/ul>\n<details><summary>Show the full script<\/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\">These are very young programs, nearly all marked <em>early alpha<\/em>: they promise a lot, but they do not yet replace professional tools for serious work. Try them, keep copies of your files and, if you find a bug, report it on their GitHub.<\/p>\n<h2>References<\/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\">Advertisement<\/div><p><strong>Free apps to create; JamboQR to share deals.<\/strong> With <strong>JamboQR<\/strong> you set up a deals club with your neighbours and friends: everyone posts what they find, with a photo, price and place. Free.<\/p><p><a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.jamboqr.app&amp;hl=en&amp;referrer=utm_source%3Dcanaldelasrecetas%26utm_medium%3Dartcraft-final%26utm_campaign%3Dartcraft-en\" rel=\"noopener sponsored\"><img decoding=\"async\" src=\"https:\/\/www.canaldelasrecetas.com\/cms\/wp-content\/uploads\/2026\/10\/google-play-en.png\" alt=\"Google Play\" width=\"180\" loading=\"lazy\" title=\"ArtCraft: 14 free creative apps, like Photoshop, Premiere, Word or AutoCAD\"><\/a> &nbsp;or at <a href=\"https:\/\/jamboqr.net\/?utm_source=canaldelasrecetas&amp;utm_medium=artcraft-final&amp;utm_campaign=artcraft-en\" rel=\"noopener sponsored\"><strong>jamboqr.net<\/strong><\/a><\/p><\/aside>\n","protected":false},"excerpt":{"rendered":"<p>A team is rewriting apps like Photoshop, Lightroom, Premiere, Word, Excel and AutoCAD from scratch in Rust. They are free and open source. Here is each one in a paragraph, plus a script to keep them all.<\/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-7104","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\/7104","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=7104"}],"version-history":[{"count":1,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7104\/revisions"}],"predecessor-version":[{"id":7129,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/posts\/7104\/revisions\/7129"}],"wp:attachment":[{"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/media?parent=7104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/categories?post=7104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.canaldelasrecetas.com\/cms\/wp-json\/wp\/v2\/tags?post=7104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}