Skip to content

Commit bd4cee1

Browse files
rebrand: migrate pyplots.ai to anyplot.ai
Complete rebrand across 114 files: - Domain: pyplots.ai → anyplot.ai (all URLs, CORS, analytics, SEO) - GCP: service names (anyplot-api, anyplot-app), Cloud SQL (anyplot-db), GCS buckets (anyplot-images, anyplot-static) - Artifact Registry replaces deprecated gcr.io in cloudbuild.yaml - Package: pyplots → anyplot (pyproject.toml, package.json) - Code: PyplotsException → AnyplotException, logo rendering, MCP server - Workflows: all GCS paths, deployment URLs, file header templates - Prompts: docstring template, title format, quality criteria - Frontend: all pages, hooks, components, nginx, meta tags, fonts.css - Tests: all assertions updated (1380 backend + 343 frontend pass) - Docs: README, all reference docs, project guide, contributing Intentionally unchanged: plots/ implementations (2680 files) will be regenerated incrementally via the normal pipeline. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 1a20d1c commit bd4cee1

File tree

114 files changed

+1003
-1003
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

114 files changed

+1003
-1003
lines changed

.env.example

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# pyplots Environment Variables
1+
# anyplot Environment Variables
22
# Copy this file to .env and fill in your values
33

44
# ============================================================================
55
# Google Cloud Storage
66
# ============================================================================
77

88
# GCS bucket name for plot images
9-
GCS_BUCKET=pyplots-images
9+
GCS_BUCKET=anyplot-images
1010

1111
# Path to service account JSON file (for local development)
1212
# In production (Cloud Run), this is handled automatically via workload identity
@@ -17,13 +17,13 @@ GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account.json
1717
# ============================================================================
1818

1919
# For local development (Cloud SQL public IP):
20-
DATABASE_URL=postgresql+asyncpg://pyplots:PASSWORD@34.7.157.136:5432/pyplots
20+
DATABASE_URL=postgresql+asyncpg://anyplot:PASSWORD@34.7.157.136:5432/anyplot
2121

2222
# For Cloud Run (uses Unix socket via Cloud SQL connector):
23-
# DATABASE_URL=postgresql+asyncpg://pyplots:PASSWORD@/pyplots?host=/cloudsql/pyplots:europe-west4:pyplots-db
23+
# DATABASE_URL=postgresql+asyncpg://anyplot:PASSWORD@/anyplot?host=/cloudsql/anyplot:europe-west4:anyplot-db
2424

2525
# For E2E tests (optional - defaults to 'test' database on same instance):
26-
# TEST_DATABASE_URL=postgresql+asyncpg://pyplots:PASSWORD@34.7.157.136:5432/test
26+
# TEST_DATABASE_URL=postgresql+asyncpg://anyplot:PASSWORD@34.7.157.136:5432/test
2727

2828
# ============================================================================
2929
# API Configuration

.github/ISSUE_TEMPLATE/request-new-plot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Request New Plot
2-
description: Propose a new plot type for pyplots
2+
description: Propose a new plot type for anyplot
33
labels: ["spec-request"]
44
body:
55
- type: markdown

.github/copilot-instructions.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ This file provides guidance to GitHub Copilot when working with code in this rep
3333

3434
## Project Overview
3535

36-
**pyplots** is an AI-powered platform for Python data visualization that automatically discovers, generates, tests, and maintains plotting examples. The platform is specification-driven: every plot starts as a library-agnostic Markdown spec, then AI generates implementations for all supported libraries.
36+
**anyplot** is an AI-powered platform for Python data visualization that automatically discovers, generates, tests, and maintains plotting examples. The platform is specification-driven: every plot starts as a library-agnostic Markdown spec, then AI generates implementations for all supported libraries.
3737

3838
**Supported Libraries** (9 total):
3939
- matplotlib, seaborn, plotly, bokeh, altair, plotnine, pygal, highcharts, lets-plot
@@ -179,7 +179,7 @@ Examples: `scatter-basic`, `scatter-color-mapped`, `bar-grouped-horizontal`, `he
179179
Plot implementations are **simple, readable scripts** - like matplotlib gallery examples:
180180

181181
```python
182-
""" pyplots.ai
182+
""" anyplot.ai
183183
scatter-basic: Basic Scatter Plot
184184
Library: matplotlib 3.10.0 | Python 3.13
185185
Quality: 92/100 | Created: 2025-01-10
@@ -202,7 +202,7 @@ plt.tight_layout()
202202
plt.savefig('plot.png', dpi=300, bbox_inches='tight')
203203
```
204204

205-
**Header format:** 4-line docstring with pyplots.ai branding, spec-id, library version, quality score.
205+
**Header format:** 4-line docstring with anyplot.ai branding, spec-id, library version, quality score.
206206
**Rules:** No functions, no classes, no `if __name__ == '__main__'`. Just: imports → data → plot → save.
207207

208208
### Anti-Patterns to Avoid
@@ -223,10 +223,10 @@ The project runs on **Google Cloud Platform** (europe-west4 region):
223223

224224
| Service | Component | Purpose |
225225
|---------|--------------------|---------|
226-
| **Cloud Run** | `pyplots-backend` | FastAPI API (auto-scaling, serverless) |
227-
| **Cloud Run** | `pyplots-frontend` | React SPA served via nginx |
226+
| **Cloud Run** | `anyplot-backend` | FastAPI API (auto-scaling, serverless) |
227+
| **Cloud Run** | `anyplot-frontend` | React SPA served via nginx |
228228
| **Cloud SQL** | PostgreSQL 18 | Database (Unix socket in production) |
229-
| **Cloud Storage** | `pyplots-images` | Preview images (GCS bucket) |
229+
| **Cloud Storage** | `anyplot-images` | Preview images (GCS bucket) |
230230
| **Secret Manager** | `DATABASE_URL` | Secure credential storage |
231231
| **Cloud Build** | Triggers | Auto-deploy on push to main |
232232

.github/workflows/impl-generate.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ jobs:
363363
PREVIEW_HTML="null"
364364
case "$LIBRARY" in
365365
plotly|bokeh|altair|highcharts|pygal|letsplot)
366-
PREVIEW_HTML="https://storage.googleapis.com/pyplots-images/plots/${SPEC_ID}/${LIBRARY}/plot.html"
366+
PREVIEW_HTML="https://storage.googleapis.com/anyplot-images/plots/${SPEC_ID}/${LIBRARY}/plot.html"
367367
;;
368368
esac
369369
@@ -390,7 +390,7 @@ jobs:
390390
'issue': issue,
391391
'python_version': py_ver,
392392
'library_version': lib_ver,
393-
'preview_url': f'https://storage.googleapis.com/pyplots-images/plots/{spec}/{lib}/plot.png',
393+
'preview_url': f'https://storage.googleapis.com/anyplot-images/plots/{spec}/{lib}/plot.png',
394394
'preview_html': preview_html if preview_html != 'null' else None,
395395
'quality_score': None,
396396
'review': {'strengths': [], 'weaknesses': []}
@@ -520,8 +520,8 @@ jobs:
520520
LIBRARY: ${{ steps.inputs.outputs.library }}
521521
run: |
522522
IMPL_DIR="plots/${SPEC_ID}/implementations"
523-
STAGING_PATH="gs://pyplots-images/staging/${SPEC_ID}/${LIBRARY}"
524-
PUBLIC_URL="https://storage.googleapis.com/pyplots-images/staging/${SPEC_ID}/${LIBRARY}"
523+
STAGING_PATH="gs://anyplot-images/staging/${SPEC_ID}/${LIBRARY}"
524+
PUBLIC_URL="https://storage.googleapis.com/anyplot-images/staging/${SPEC_ID}/${LIBRARY}"
525525
526526
if [ -z "$GCS_CREDENTIALS" ]; then
527527
echo "::warning::GCS_CREDENTIALS not configured - skipping upload"
@@ -567,13 +567,13 @@ jobs:
567567
PR_NUMBER: ${{ steps.pr.outputs.pr_number }}
568568
run: |
569569
# Use staging URLs (available immediately after upload)
570-
PNG_URL="https://storage.googleapis.com/pyplots-images/staging/${SPEC_ID}/${LIBRARY}/plot.png"
570+
PNG_URL="https://storage.googleapis.com/anyplot-images/staging/${SPEC_ID}/${LIBRARY}/plot.png"
571571
HTML_URL=""
572572
573573
# Set HTML_URL for interactive libraries
574574
case "$LIBRARY" in
575575
plotly|bokeh|altair|highcharts|pygal|letsplot)
576-
HTML_URL="https://storage.googleapis.com/pyplots-images/staging/${SPEC_ID}/${LIBRARY}/plot.html"
576+
HTML_URL="https://storage.googleapis.com/anyplot-images/staging/${SPEC_ID}/${LIBRARY}/plot.html"
577577
;;
578578
esac
579579

.github/workflows/impl-merge.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,8 @@ jobs:
197197
echo "$GCS_CREDENTIALS" > /tmp/gcs-key.json
198198
gcloud auth activate-service-account --key-file=/tmp/gcs-key.json
199199
200-
STAGING="gs://pyplots-images/staging/${SPEC_ID}/${LIBRARY}"
201-
PRODUCTION="gs://pyplots-images/plots/${SPEC_ID}/${LIBRARY}"
200+
STAGING="gs://anyplot-images/staging/${SPEC_ID}/${LIBRARY}"
201+
PRODUCTION="gs://anyplot-images/plots/${SPEC_ID}/${LIBRARY}"
202202
203203
# Copy from staging to production
204204
gsutil -m -h "Cache-Control:public, max-age=604800" cp -r "${STAGING}/*" "${PRODUCTION}/" 2>/dev/null || echo "No staging files to promote"
@@ -250,7 +250,7 @@ jobs:
250250
251251
BODY="${BODY}
252252
253-
**Preview:** [View image](https://storage.googleapis.com/pyplots-images/plots/${SPEC_ID}/${LIBRARY}/plot.png)
253+
**Preview:** [View image](https://storage.googleapis.com/anyplot-images/plots/${SPEC_ID}/${LIBRARY}/plot.png)
254254
255255
---
256256
:robot: *[impl-merge](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})*"

.github/workflows/impl-repair.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ jobs:
178178
LIBRARY: ${{ inputs.library }}
179179
run: |
180180
IMPL_DIR="plots/${SPEC_ID}/implementations"
181-
STAGING_PATH="gs://pyplots-images/staging/${SPEC_ID}/${LIBRARY}"
181+
STAGING_PATH="gs://anyplot-images/staging/${SPEC_ID}/${LIBRARY}"
182182
183183
if [ -z "$GCS_CREDENTIALS" ]; then
184184
echo "::warning::GCS_CREDENTIALS not configured"

.github/workflows/impl-review.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ jobs:
103103
LIBRARY: ${{ steps.pr.outputs.library }}
104104
run: |
105105
mkdir -p plot_images
106-
gsutil -m cp "gs://pyplots-images/staging/${SPEC_ID}/${LIBRARY}/*" plot_images/ 2>/dev/null || true
106+
gsutil -m cp "gs://anyplot-images/staging/${SPEC_ID}/${LIBRARY}/*" plot_images/ 2>/dev/null || true
107107
ls -la plot_images/
108108
109109
- name: Verify plot image exists
@@ -406,7 +406,7 @@ jobs:
406406
score = '${SCORE}'
407407
date_info = '${DATE_INFO}'
408408
409-
new_header = f'''\"\"\" pyplots.ai
409+
new_header = f'''\"\"\" anyplot.ai
410410
{spec_id}: {title}
411411
Library: {library} {lib_version} | Python {py_version}
412412
Quality: {score}/100 | {date_info}

.github/workflows/notify-deployment.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
runs-on: ubuntu-latest
4040
environment:
4141
name: app
42-
url: https://pyplots.ai
42+
url: https://anyplot.ai
4343
steps:
4444
- run: echo "Frontend deployed via Cloud Build"
4545

@@ -49,6 +49,6 @@ jobs:
4949
runs-on: ubuntu-latest
5050
environment:
5151
name: api
52-
url: https://api.pyplots.ai/docs
52+
url: https://api.anyplot.ai/docs
5353
steps:
5454
- run: echo "API deployed via Cloud Build"

.github/workflows/report-validate.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ jobs:
6363
prompt: |
6464
## Task: Validate Issue Report
6565
66-
You are validating a user-submitted issue report for pyplots.
66+
You are validating a user-submitted issue report for anyplot.
6767
6868
### Issue Details
6969
- **Title:** ${{ github.event.issue.title }}

.github/workflows/sync-postgres.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ jobs:
6565
DB_USER: ${{ secrets.DB_USER }}
6666
DB_PASS: ${{ secrets.DB_PASS }}
6767
DB_NAME: ${{ secrets.DB_NAME }}
68-
GCS_BUCKET: ${{ vars.GCS_BUCKET || 'pyplots-images' }}
68+
GCS_BUCKET: ${{ vars.GCS_BUCKET || 'anyplot-images' }}
6969
ENVIRONMENT: production
7070

7171
- name: Summary

0 commit comments

Comments
 (0)