From afe22ecb4d899b401703ffc4599e1cd3eb3d4fea Mon Sep 17 00:00:00 2001 From: Abdullah Bakir Date: Mon, 27 Apr 2026 06:00:42 +0200 Subject: [PATCH] =?UTF-8?q?release:=20v1.0.0=20=E2=80=94=20action.yml=20po?= =?UTF-8?q?lish=20for=20Marketplace=20publishing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tier A #2. Final piece for v1 GA. ## action.yml - pip install: replaced unpublished `cortex-profile==1.0.0` reference with direct git install of cortex-core + cortex-cli at the action's pinned ref. Lets the action work without a separate PyPI release pipeline; users get the CLI matching whichever tag they pinned. - Auto-commit step: collapsed multi-line commit message into repeated -m flags (same fix we applied to refresh-context.yml + build-examples.yml earlier — YAML literal-block parser doesn't tolerate unindented lines). ## Versions - cortex-core: 0.2.1 -> 1.0.0 - cortex-cli: 0.1.0 -> 1.0.0 - Both pyproject.toml classifiers: "3 - Alpha" -> "5 - Production/Stable" - __init__.py __version__ strings updated in both packages ## CHANGELOG.md - New [1.0.0] section enumerating the 22 widgets, system features (theme, a11y, GitHub sources, compose, sources package), perf wins (heatmap -12%, marquee -47%), and CI infrastructure - Notes "Breaking changes: None" — fully backward-compatible with v0.x ## Marketplace listing The technical pieces are all in place: • Polished action.yml with branding (icon: cpu, color: purple) • All inputs documented • CHANGELOG entry for v1.0.0 • Release notes ready The actual Marketplace listing is a one-time GitHub UI step (Settings -> Actions -> "Publish this Action to Marketplace") that has to be done via the web after a v1.0.0 tag exists. CI green; ready for tag. --- CHANGELOG.md | 38 ++++++++++++++++++++++ action.yml | 19 +++++++---- packages/cortex-cli/cortex_cli/__init__.py | 2 +- packages/cortex-cli/pyproject.toml | 4 +-- packages/cortex-core/cortex/__init__.py | 2 +- packages/cortex-core/pyproject.toml | 4 +-- 6 files changed, 56 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 977b367..063f3db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,44 @@ All notable changes to Cortex will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.0.0] — 2026-04-27 + +First production release. Cortex ships 22 widget builders, 180+ tests, a coordinated theme system, real GitHub data integrations, and the `cortex compose` command for one-image profile setups. + +### Added — widgets (22 total) +- 🧠 **brain-anatomical** — anatomically-accurate neon brain, 200+ Wikimedia paths +- 🌅 **synthwave-banner** — 80s retro-futurist hero (4 palettes) +- 🌌 **skill-galaxy** — constellation of skills as named stars (3 backgrounds) +- 📡 **skill-radar** — polar chart with translucent breathing polygon +- 🚇 **code-roadmap** — metro/subway-style multi-line career map +- 🟩 **activity-heatmap** — 7×52 contribution grid with neon glow (4 palettes) +- 🧊 **stat-cubes** — isometric 3D blocks with label/value faces +- 🏆 **achievement-wall** — beveled trophy cabinet with hex medallions +- 🧬 **code-dna** — twin spiral strands with language base-pair rungs +- 🌍 **skill-globe** — stylized 2D globe with neon contribution pins +- ✨ **particle-cloud** — labelled particles orbiting a glowing core +- 🎵 **now-playing** — Spotify-style "currently coding in" card +- 🎖️ **badges** — compact skill strip (4 shapes × 3 layouts × 4 animations) +- Plus original suite: tech-cards, current-focus, yearly-highlights, header-banner, footer-banner, animated-divider, github-icon, about-typing, motto-typing + +### Added — system features +- **`brand.theme`** (outrun · sunset · midnight · minimal · cyberpunk · rose) — propagates as default colors to every widget. One line changes the whole palette. +- **Reduced-motion accessibility** — `@media (prefers-reduced-motion: reduce)` opt-out injected into 8 builders. +- **Real GitHub data integrations** — `cubes.from_github` and `heatmap.from_github` flags pull live stats / contribution calendar via the GraphQL API. Graceful fallback on missing token or API error. +- **`cortex compose`** CLI — stack any subset of the 22 widgets into a single composite SVG. +- **`cortex.sources` package** — pure-data helpers for auto-population (`stats_cubes_from_github`, `contribution_grid_from_github`, `top_languages_from_github`). + +### Performance +- Heatmap SVG: 51KB → 45KB (–12%) via `` / `` cell dedup. +- Badges marquee: 23KB → 12KB (–47%) via `` / `` loop dedup. + +### CI +- New `health-check.yml` — daily build smoke + size-delta tracking, Monday code-debt audit + community signal sweep. +- CI matrix: Python 3.10 / 3.11 / 3.12, ruff lint + format, pytest, ajv JSON Schema validation, README link check. + +### Breaking changes +- None. Fully backward-compatible with v0.x widget configs. + ## [Unreleased] ### Added — Phase B.1 theming surface (foundation for inline directives + web playground) diff --git a/action.yml b/action.yml index a1acbf1..8230892 100644 --- a/action.yml +++ b/action.yml @@ -75,13 +75,20 @@ runs: python-version: "3.12" cache: "pip" - # ── 2. Install Cortex CLI (the @cortex/cli npm package) ─────────────── + # ── 2. Install Cortex from the action's pinned ref ──────────────────── + # Install directly from this repo so the action works without a separate + # PyPI release pipeline. ``github.action_ref`` resolves to the tag the + # user pinned in ``uses: AbdullahBakir97/cortex@v1.0.0`` so they get the + # CLI matching their action version. Falls back to ``main`` if unset. - name: Install Cortex shell: bash + env: + CORTEX_REF: ${{ github.action_ref }} run: | - pip install --no-cache-dir requests==2.32.3 PyYAML==6.0.2 - # In v1, ship as a Python package; later move to compiled binary for speed. - pip install --no-cache-dir cortex-profile==1.0.0 + REF="${CORTEX_REF:-main}" + pip install --no-cache-dir \ + "git+https://github.com/AbdullahBakir97/cortex.git@${REF}#subdirectory=packages/cortex-core" \ + "git+https://github.com/AbdullahBakir97/cortex.git@${REF}#subdirectory=packages/cortex-cli" # ── 3. Validate the user's cortex.yml ───────────────────────────────── - name: Validate config @@ -140,8 +147,6 @@ runs: if git diff --cached --quiet; then echo "No profile changes — skipping commit." else - git commit -m "chore(cortex): refresh profile assets - -Auto-generated by Cortex v1 — see .github/cortex.yml for config." + git commit -m "chore(cortex): refresh profile assets" -m "Auto-generated by Cortex v1 — see .github/cortex.yml for config." git push fi diff --git a/packages/cortex-cli/cortex_cli/__init__.py b/packages/cortex-cli/cortex_cli/__init__.py index d5549e2..4bedf6e 100644 --- a/packages/cortex-cli/cortex_cli/__init__.py +++ b/packages/cortex-cli/cortex_cli/__init__.py @@ -1,3 +1,3 @@ """Cortex CLI — thin command-line wrapper around cortex-core.""" -__version__ = "0.1.0" +__version__ = "1.0.0" diff --git a/packages/cortex-cli/pyproject.toml b/packages/cortex-cli/pyproject.toml index 1d4a43c..e3f39f7 100644 --- a/packages/cortex-cli/pyproject.toml +++ b/packages/cortex-cli/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "cortex-profile" -version = "0.1.0" +version = "1.0.0" description = "Command-line interface for Cortex — turn your GitHub into a cinematic neon brain skill atlas." readme = "README.md" requires-python = ">=3.10" @@ -12,7 +12,7 @@ license = { text = "MIT" } authors = [{ name = "Abdullah Bakir", email = "abdullah.bakir.1997@gmail.com" }] keywords = ["github", "profile", "readme", "svg", "cli", "brain", "neon"] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "Environment :: Console", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.10", diff --git a/packages/cortex-core/cortex/__init__.py b/packages/cortex-core/cortex/__init__.py index 57ba67d..83f3995 100644 --- a/packages/cortex-core/cortex/__init__.py +++ b/packages/cortex-core/cortex/__init__.py @@ -40,7 +40,7 @@ def build_variants(config, output_dir="assets/variants"): # type: ignore[no-unt return _bv(config, output_dir) -__version__ = "0.2.1" +__version__ = "1.0.0" def build_all(config: Config, output_dir: str = "assets") -> dict[str, str]: diff --git a/packages/cortex-core/pyproject.toml b/packages/cortex-core/pyproject.toml index 0c4d4ce..1467930 100644 --- a/packages/cortex-core/pyproject.toml +++ b/packages/cortex-core/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "cortex-core" -version = "0.2.1" +version = "1.0.0" description = "SVG generators, GitHub API clients, and marker rewriting for the Cortex profile system." readme = "README.md" requires-python = ">=3.10" @@ -12,7 +12,7 @@ license = { text = "MIT" } authors = [{ name = "Abdullah Bakir", email = "abdullah.bakir.1997@gmail.com" }] keywords = ["github", "profile", "readme", "svg", "brain", "neon"] classifiers = [ - "Development Status :: 3 - Alpha", + "Development Status :: 5 - Production/Stable", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11",