Repository navigation
Releases
IconCore v1.7.0
IconCore
Ícones de aplicativo gratuitos e de código aberto, do primeiro esboço aos arquivos finais.
- Salvar grava no arquivo que você abriu. "Salvar" escreve no arquivo aberto e "Salvar como" oferece o destino. O vínculo com o arquivo sobrevive ao autosave e ao reload — antes o app não sabia mais sobre qual arquivo era o seu.
- Arrastar uma camada passou a funcionar. Bring Forward, Send Backward e as outras direções não faziam nada: a ação reordenava o array e um
sortporzIndexlogo depois descartava a ordem. Arraste, botão direito e reordenação por teclado agora converges no mesmo lugar. - O preview ao vivo estava a 42% de opacidade. Você via uma versão esmaecida da sua arte enquanto exportava a opaca. Corrigido, e agora há teste medindo pixel — não "o elemento existe".
- SVG do Figma volta a aparecer. Um ícone exportado com gradiente angular entrava na barra lateral e não aparecia no canvas, com
SecurityErrore nenhuma explicação. A causa era o esquema da URL de como o app servia o arquivo, não oforeignObject— e o gradiente do Figma chega inteiro no canvas. - Cal Sans embarcada e vira o default. A fonte do editor passa a ser uma das duas que você instala junto, sem download. E o texto no SVG passa a avisar quando a família não está em todo lugar, em vez de quebrar diferente em cada máquina.
- O painel de texto virou um painel. Negrito e itálico como par, ordem que faz sentido (fonte → tamanho → estilo → alinhamento), alinhamento com rótulo visível, e o botão de fontes do sistema que ocupava a largura inteira encolheu para o tamanho de uma ação secundária.
- A keyline tem números. Cada plataforma mostra a proporção e a área segura de verdade (iOS 22/37%, Android 66/108 com inset 21/108), com as partes ligáveis no canvas — o overlay usava valores arredondados que não correspondiam a nada.
- O preview de exportação virou coluna. 512 → 180 → 32, com dimensões distintas, fundo dividido e o recorte da máscara desenhado. Dá para ver o que cada tamanho vai parecer antes de exportar.
- A work area é uma cor. As três texturas viraram token, e a grade ganhou divisões por eixo (desligadas por padrão) e a guia da import margin que faltava no canvas.
- Sliders com nome acessível. O slider inline não tinha nome, o que mascarava o raio do frame para quem usa leitor de tela — e há marcas clicáveis no slider de frame radius, com o seletor de plataforma movendo o slider.
- A arte da marca tem uma fonte só.
assets/brand/é a origem, o resto é derivado por comando, e um gate compara por conteúdo — SHA-256. O banner duplicado foi arquivado, e a imagem do release passou a ser a mesma que o site serve. - Manifesto de projeto e a análise que prova o logo. O formato do
.iconcore.jsonganhou manifesto, e existe uma análise que mede o resultado em vez de afirmar que ele funciona. - Workspace de projetos e menu de aplicativo. Vários projetos no mesmo navegador, com título no painel e dirty state honesto. Havia três cópias do download do projeto com o mesmo defeito —
revokeObjectURLno mesmo tique cancela o download no Firefox — e agora há um guard que reprova a quarta. source-map-jsatualizado. O gate de auditoria falhava e reprovava o build inteiro.
A caminho
- Imagem diferente por variante. Hoje trocar o arquivo em
light/mono/darkaltera adefault. Está registrado como observação com as perguntas que decidem o formato do projeto. - Operações booleanas de formas. Unir, subtrair, interseção e exclusão; e duplicar/rotacionar pétalas como componente. Hoje continua sendo o Figma quem faz isso, e o plano está escrito.
- Editor de SVG. Edição de vetor por pontos e curvas.
- Escala não uniforme. Quebrar a proporção na mão (eixo X/Y) — hoje o caminho é "Resetar proporção".
- Linha de comando. O
iconcore buildpassa a usar a mesma pipeline do app assim que houver backend de rasterização em Node.
Changelog automático
What's Changed
- docs: export screenshot as WebP, and stop the capture script fighting it by @mafhper in #166
- chore: re-pin do Release Core para @v1.2.4 by @mafhper in #167
- fix: re-pin release-core to v1.2.5 (contract digest x CRLF) by @mafhper in #168
- chore(deps-dev): bump @typescript-eslint/parser from 8.70.0 to 8.70.1 by @dependabot[bot] in #170
- chore(deps): bump tauri from 2.11.5 to 2.11.6 in /apps/desktop/src-tauri by @dependabot[bot] in #174
- fix(renderer): SVG export — colour filters + centre-pivoted layer transform by @mafhper in #177
- chore: re-pin release-core to v1.3.0 + correct the public export docs by @mafhper in #178
- docs: stop the public surface from contradicting the code by @mafhper in #179
- fix(renderer): polygon shapes exported as rectangles; docs rewritten by @mafhper in #180
- chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.70.0 to 8.70.1 by @dependabot[bot] in #171
- fix(export): SVG artifacts ignored their declared size, and embedded ids collided by @mafhper in #181
- feat(export): preview before exporting, and a dev server that picks a free port by @mafhper in #182
- fix(import): a borderless icon was landing with a ~30% margin nobody asked for by @mafhper in #183
- fix(composer): a cleared variant still read as existing by @mafhper in #184
- fix(export): the model could not express a non-square artifact by @mafhper in #185
- fix(export): selecting three variants produced one file by @mafhper in #186
- fix(export): every exported PNG arrived as an opaque rectangle by @mafhper in #187
- fix(composer): deleting a layer reordered the rest by @mafhper in #188
- feat(composer): the frame radius had a fixed value by @mafhper in #189
- feat(composer): group the sidebar into Text / Shapes / Background by @mafhper in #190
- feat(export): the file mirrors the canvas frame by @mafhper in #191
- fix(export): a multi-variant plan is exportable on any preset by @mafhper in #193
- feat(cli): trace a raster into editable SVG, on measured settings by @mafhper in #192
- fix(cli): the built bin could not load, and nothing ever ran it by @mafhper in #194
- fix(svg): blend mode was absent, and a squircle was a rounded rect by @mafhper in #195
- fix(render): the canvas mask was clipped after the drawing, so it did nothing by @mafhper in #196
- fix(composer): autosave failed silently when the project outgrew localStorage by @mafhper in #197
- fix(composer): starting a new icon no longer destroys the previous one by @mafhper in #198
- test(web): the intermittent suite failure was a stall, not a slow test by @mafhper in #199
- chore(branding): remove the generated icons, and the claims that outran them by @mafhper in #200
- feat(composer): the project lives in IndexedDB, and survives the session by @mafhper in #201
- fix(composer): a new project no longer overwrites the previous one's record by @mafhper in #202
- feat(composer): a lista de projetos, com Continuar primeiro (IC63/D2) by @mafhper in #203
- fix(composer): a lista de projetos nao aparecia no cold start (IC63/D2) by @mafhper in #204
- test(renderer): texto nao tinha cobertura, e eu quase reportei um bug inexistente by @mafhper in #205
- feat(renderer): a cor de um SVG importado, por cor de origem (IC63/1b) by @mafhper in #206
- fix(export): escapa dado da pessoa no SVG, que sairia malformado by @mafhper in #207
- fix(composer): ADD_LAYER com payload discriminado, e o gate que prova isso by @mafhper in #208
- feat(texto): itálico e alinhamento em layer de texto, com o contrato testado by @mafhper in #209
- check(export): nenhum preset emite formato que a plataforma não lê by @mafhper in #210
- feat(export): preset de assets para app Android by @mafhper in #211
- feat(android): camada monocromática e ícone redondo de verdade by @mafhper in #212
- feat: manifesto de projeto, workspace, e seis correcoes silenciosas by @mafhper in #213
- chore(release): bump version to v1.7.0 by @github-actions[bot] in #215
Full Changelog: v1.6.0...v1.7.0
IconCore v1.6.0
IconCore
Ícones de aplicativo gratuitos e de código aberto, do primeiro esboço aos arquivos finais.
- Exportação virou um plano editável. A tela de exportação não é mais uma lista de alvos com um formato global: é uma lista de artefatos, e cada um tem o seu próprio formato, tamanho, caminho e variante. Você marca PNG aqui, SVG ali, ICO em vez de PNG onde o Windows precisa.
.icoe.icnsfinalmente aparecem. O preset do Tauri agora geraicon.ico(16/24/32/48/64/256) eicon.icns(16–1024) — antes nenhum alvo produzia.ico. O mesmo vale para Electron, Windows e macOS.- SVG é uma opção de exportação. O
.svgvetorial deixou de ser omitido em silêncio e agora sai com as imagens embutidas quando o artefato é raster. - Nada é exportado sem você pedir. A lista completa de arquivos aparece antes de exportar, e os arquivos de apoio (relatório, folha de preview, README) são linhas que você liga e desliga. Desmarcar tudo e deixar só o
.icoentrega só o.ico. - O botão de voz está livre. Escolher o preset responde de vez "o que o Tauri gera que o Electron não gera" — cada um mostra as plataformas e a documentação de uso.
- A lista final é honesta. O contador diz quantos arquivos vão sair (ícones + acompanhantes), não só quantos ícones.
- Importação esmagada tem conserto. A ação "Resetar proporção" devolve a camada ao aspecto original do arquivo, sem mudar o tamanho dela na composição — para os projetos que já ficaram esticados.
- Nada de surpresa na validação. Avisos de opacidade, conjuntos de container e qualidade lossy aparecem antes de exportar, considerando todas as variantes que serão geradas.
A caminho
- Inspetor reorganizado. Edição direta no canvas (mover, escalar, girar, alças de gradiente) e o inspetor cuidando dos valores exatos, com seções que abrem e fecham.
- Camadas com grupos. Pastas, expandir/recolher, reordenar arrastando e ações visíveis — sem esconder nada em menu de contexto.
- Biblioteca de ícones. Conjunto embutido e pesquisável para partir de algo pronto em vez do canvas vazio.
- Editor de SVG. Edição de vetor por pontos e curvas, em sprint própria.
- Escala não uniforme. Quebrar a proporção na mão (eixo X/Y) — hoje o caminho é o "Resetar proporção".
- Linha de comando. O
iconcore buildpassa a usar a mesma pipeline do app assim que houver backend de rasterização em Node. - Site novo. Landing page refeita, com o app rodando de verdade na página.
Changelog automático
What's Changed
- fix(ui): design-review pass - contrast, a11y/keyboard, surface polish + palette discoverability by @mafhper in #153
- feat(export): Export Artifact Model contract (ADR-014) by @mafhper in #154
- feat(export): EX2 encoders — SVG embed, ICO/ICNS writers by @mafhper in #156
- chore(ci): dependabot auto-merge (patch) via GitHub App token by @mafhper in #155
- feat(export): EX3 presets + planner — corrected Tauri/Electron sets by @mafhper in #157
- feat(export): EX4 executable pipeline (no UI) by @mafhper in #158
- feat(import): IC3 4.2 - Reset aspect (option C, no schema) by @mafhper in #159
- feat(export): EX5 - Export Plan UI (editable plan on the pipeline) by @mafhper in #160
- refactor(export): EX7 - retire the raster target registry, route exportTarget through the plan by @mafhper in #161
- chore: re-pin do Release Core para @v1.2.2 by @mafhper in #162
- fix(export): nothing is exported that the user did not ask for by @mafhper in #163
- chore(release): imagem 1.6 + notas de lancamento by @mafhper in #164
- chore(release): bump version to v1.6.0 by @github-actions[bot] in #165
Full Changelog: v1.5.0...v1.6.0
IconCore v1.5.0
IconCore
Ícones de aplicativo gratuitos e de código aberto, do primeiro esboço aos arquivos finais.
- Cor com transparência. Cores sólidas ganharam canal alpha: dá para deixar um preenchimento translúcido sem perder a cor, com seletor de transparência, campos HEX/RGBA/HSLA e uma lista de cores recentes para reaproveitar.
- Gradientes de verdade. Além do linear e do radial, o editor agora faz angular e diamond. A mistura entre paradas de cor é feita em um espaço perceptualmente uniforme (Oklab), então o degradê não fica "sujo" no meio.
- Edição de gradiente completa. Barra de pré-visualização com paradas arrastáveis, adicionar e remover paradas (com cor e transparência próprias), inverter, distribuir por igual, presets prontos e controle preciso de ângulo, centro e raio.
- Um só controle de preenchimento. O tipo (sólido, gradiente ou transparente) fica no topo e os ajustes correspondentes aparecem logo abaixo. Trocar o tipo preserva o que você já tinha ajustado em vez de começar do zero.
- Fundo transparente assumido. A camada Background passou a ser o controle do fundo da imagem exportada — inclusive transparente, com o editor deixando claro o que é fundo da imagem e o que é área de trabalho.
- Importação sem distorção. Arquivos SVG deixam de ser esticados ao importar: a proporção original é lida do próprio arquivo. E o mesmo projeto agora exporta PNG e SVG idênticos quando há SVG embutido.
- Inspetor mais legível. Rótulos em caixa natural e campos planos, com as propriedades agrupadas por intenção (composição, geometria, cor, efeitos, imagem) — a primeira etapa da reorganização do inspetor.
A caminho
- Inspetor reorganizado. Edição direta no canvas (mover, escalar, girar, alças de gradiente) e o inspetor cuidando dos valores exatos, com seções que abrem e fecham.
- Camadas com grupos. Pastas, expandir/recolher, reordenar arrastando e ações visíveis — sem esconder nada em menu de contexto.
- Biblioteca de ícones. Conjunto embutido e pesquisável para partir de algo pronto em vez do canvas vazio.
- Editor de SVG. Edição de vetor por pontos e curvas, em sprint própria.
- Site novo. Landing page refeita, com o app rodando de verdade na página.
Changelog automático
What's Changed
- chore(deps-dev): bump @types/node from 26.5.0 to 26.5.1 by @dependabot[bot] in #122
- chore(deps-dev): bump undici from 8.10.0 to 8.10.2 by @dependabot[bot] in #126
- chore(deps-dev): bump brace-expansion from 5.0.9 to 5.0.12 by @dependabot[bot] in #130
- feat: transparent background + Background layer as a handle (F1) by @mafhper in #131
- feat: sistema de cor/gradiente, correcao do import (aspecto) e fundacao do inspector (F2+F3+ADR-012) by @mafhper in #132
- docs(release): notas da v1.5.0 by @mafhper in #133
- fix(web): inspector nao estoura mais o painel (causa raiz do posicionamento) by @mafhper in #134
- fix(web): controles do painel nao cortam mais os valores (tipografia unica) by @mafhper in #135
- fix(ui): campos do painel nao cortam mais o texto na vertical by @mafhper in #136
- feat(web): presets de gradiente voltados a icone, por tipo by @mafhper in #137
- fix(web): clique no fundo do icone seleciona a camada; palco mostra ajustes do canvas by @mafhper in #138
- feat(ui): biblioteca de cores estatica de sistemas conhecidos em todo campo de cor by @mafhper in #139
- Sprint UI: fundacao do inspector, biblioteca de cores e correcoes (sem release) by @mafhper in #140
- refactor(ui): sistema de foco em @layer base (critica §4, decisao B) by @mafhper in #141
- feat(ui): peso de traco do icone como regra (critica §17) by @mafhper in #142
- Consolidacao da rodada de UI (Fase 1) no main by @mafhper in #144
- chore(release): imagem nova do release (linha 1.5) by @mafhper in #143
- Consolidacao: imagem do release 1.5 by @mafhper in #145
- test(ui): contrato de alinhamento optico icone+rotulo (Fase 1, item 8) by @mafhper in #146
- Fase 1 da critica de UI: 8/8 (alinhamento optico medido) by @mafhper in #147
- feat(ui): app markup icons follow the text-weight stroke rule by @mafhper in #148
- feat(ui): app markup icons follow the text-weight stroke rule (Fase 1 §5) by @mafhper in #149
- fix(ui): English copy in the colour library + sentence-case welcome label by @mafhper in #151
- fix(ui): English copy in the colour library + sentence-case welcome label by @mafhper in #152
- chore(release): bump version to v1.5.0 by @github-actions[bot] in #150
New Contributors
- @github-actions[bot] made their first contribution in #150
Full Changelog: v1.4.1...v1.5.0
IconCore v1.4.1
IconCore
Ícones de aplicativo gratuitos e de código aberto, do primeiro esboço aos arquivos finais.
Versão de manutenção focada na infraestrutura de build e distribuição. Sem mudanças no editor nem nos ícones exportados.
- Workspace migrado de Bun para npm (build, CI e deploy do GitHub Pages).
- Releases agora usam o Release Core: validação da versão antes do build, rascunho idempotente e publicação consistente dos instaladores.
- Instaladores para Windows (NSIS/MSI), Linux (AppImage/DEB) e macOS (DMG).
Changelog automático
What's Changed
- chore: migrate workspace from Bun to npm by @mafhper in #116
- feat(release): adopt Release Core protocol (npm + Tauri matrix) by @mafhper in #117
- docs: release runbook for the Release Core flow by @mafhper in #119
- chore(release): refresh release image (1.4 line) by @mafhper in #120
- Release Core integration: npm migration + Core protocol (W1 + W2) by @mafhper in #118
- chore(release): bump version to v1.4.1 by @mafhper in #125
Full Changelog: v1.4.0...v1.4.1
IconCore v1.4.1-rc.1
IconCore
Ícones de aplicativo gratuitos e de código aberto, do primeiro esboço aos arquivos finais.
Versão de teste (release candidate) para validar o novo pipeline de release. Não há mudanças de produto.
- Workspace migrado de Bun para npm (build, CI e deploy do GitHub Pages).
- Pipeline de release agora usa o Release Core: valida versão/tag antes do build, cria rascunho idempotente, executa gates declarativos e publica instaladores na matriz Windows/Linux/macOS.
- Supor a publicação como pré-release (
v1.4.1-rc.1).
Valide os instaladores por plataforma antes de publicar a versão estável.
Changelog automático
What's Changed
- chore: migrate workspace from Bun to npm by @mafhper in #116
- feat(release): adopt Release Core protocol (npm + Tauri matrix) by @mafhper in #117
Full Changelog: v1.4.0...v1.4.1-rc.1
IconCore v1.4.0
IconCore v1.3.1
IconCore é um editor de ícones: importe imagens, ajuste cores e exporte em múltiplos formatos, inclusive icon fonts.
O que tem de novo nesta versão
- Manutenção de dependências. As principais dependências foram consolidadas: o editor de ícones lucide-react foi atualizado para a v1, o Tailwind CSS migrou para a v4 e o @eslint/js passou para a v10, com todos os ajustes necessários no código.
- Release com notas de versão. O processo de publicação agora gera releases com notas em português descrevendo o que mudou em cada versão.
- Melhor confiabilidade do pipeline. A análise de segurança CodeQL foi uniformizada para uma única versão.
Instalação
| Sistema | Arquivo recomendado | Uso |
|---|---|---|
| Windows | IconCore_*_x64-setup.exe | Instalação comum, sem exigir privilégios de administrador |
| Windows | IconCore_*_x64.msi | Ambientes gerenciados |
| Linux | iconcore_*_amd64.deb | Ubuntu, Debian e derivados |
| macOS | IconCore_*_aarch64.dmg | Macs com Apple Silicon |
Outros detalhes de instalação
- O instalador EXE é a opção recomendada para a maioria das pessoas no Windows.
- O MSI atende ambientes gerenciados; no macOS, arraste o IconCore para a pasta Aplicativos.
- No Linux, além do DEB também há AppImage e arquivos compactados entre os arquivos da versão.
Lista de mudanças (gerada automaticamente)
What's Changed * fix(deps): remediate dependency vulnerabilities by @mafhper in #4 * ci: add security scanning and dependency guard by @mafhper in #5 * ci: enforce clean quality gates by @mafhper in #25 * chore(deps): consolidate compatible maintenance updates by @mafhper in #26 * fix(security): harden SVG sanitization by @mafhper in #27 * fix(security): close SVG URL sanitizer bypasses by @mafhper in #28 * chore(deps): bump actions/checkout from 6.0.3 to 7.0.1 by @dependabot[bot] in #32 * chore(deps-dev): bump eslint-plugin-react-refresh from 0.5.3 to 0.5.4 by @dependabot[bot] in #33 * chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.66.0 to 8.68.0 by @dependabot[bot] in #37 * chore(deps-dev): bump vite from 8.0.16 to 8.2.2 by @dependabot[bot] in #34 * chore(deps-dev): bump @typescript-eslint/parser from 8.66.0 to 8.68.0 by @dependabot[bot] in #38 * chore(deps-dev): bump eslint from 9.39.5 to 10.8.0 by @dependabot[bot] in #41 * chore(deps-dev): bump vitest from 4.1.10 to 4.1.11 by @dependabot[bot] in #42 * chore(deps-dev): bump globals from 17.9.0 to 17.11.0 by @dependabot[bot] in #44 * chore(deps): consolidate open dependabot upgrades (#29 #35 #43 #45 #46) by @mafhper in #47 * chore(release): rich desktop releases via per-version notes + bump workflow by @mafhper in #48 * chore(release): bump via PR + tag on merge (fix protected main) by @mafhper in #49 * chore(release): use url-embedded token auth for workflow pushes by @mafhper in #50 * chore(release): bump version to v1.3.1 by @mafhper in #51 ## New Contributors * @dependabot[bot] made their first contribution in #32 Full Changelog: v1.3.0...v1.3.1
IconCore v1.3.0
Desktop release for v1.3.0.
Downloads
- Windows: IconCore_1.3.0_x64_en-US.msi
- macOS: IconCore_1.3.0_aarch64.dmg
- Linux: IconCore_1.3.0_amd64.AppImage
All assets
IconCore v1.2.1
Desktop release for v1.2.1.
Downloads
- Windows: IconCore_1.2.1_x64_en-US.msi
- macOS: IconCore_1.2.1_aarch64.dmg
- Linux: IconCore_1.2.1_amd64.AppImage
All assets
IconCore v1.2.0
Desktop release for v1.2.0.
Downloads
- Windows: IconCore_1.2.0_x64_en-US.msi
- macOS: IconCore_1.2.0_aarch64.dmg
- Linux: IconCore_1.2.0_amd64.AppImage