Stamp 2.57.0 native package.json, requirements, and unused Docker copies.
Frontend periscope-web manifests, pip requirements, and EDA logos/examples overlay from src. Docker installs from those files. Unused PinScope public blobs are dockerignored. Landing png/gif stay in dependency until native captures exist.
@@ -11,3 +11,10 @@ data/
|
||||
.claude/plans/
|
||||
.claude/memory/
|
||||
simple_project/
|
||||
periscope/dependency/frontend/public/faradworks-logo-white.png
|
||||
periscope/dependency/frontend/public/power-tree.gif
|
||||
periscope/dependency/frontend/public/file.svg
|
||||
periscope/dependency/frontend/public/globe.svg
|
||||
periscope/dependency/frontend/public/next.svg
|
||||
periscope/dependency/frontend/public/vercel.svg
|
||||
periscope/dependency/frontend/public/window.svg
|
||||
|
||||
@@ -14,7 +14,7 @@ jobs:
|
||||
with:
|
||||
python-version: "3.12"
|
||||
cache: pip
|
||||
- run: pip install -r periscope/dependency/backend/requirements.txt pytest pytest-asyncio
|
||||
- run: pip install -r periscope/src/backend/requirements.txt pytest pytest-asyncio
|
||||
- run: pytest tests/ -q
|
||||
|
||||
frontend:
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
with:
|
||||
node-version: 22
|
||||
cache: npm
|
||||
cache-dependency-path: periscope/dependency/frontend/package-lock.json
|
||||
cache-dependency-path: periscope/src/frontend/package-lock.json
|
||||
- run: chmod +x scripts/materialize-frontend.sh && scripts/materialize-frontend.sh
|
||||
- run: npm ci
|
||||
working-directory: .merge/frontend
|
||||
|
||||
@@ -23,7 +23,7 @@ Default routing:
|
||||
| Per-IC datasheet review | `deepseek-flash` |
|
||||
| Auto-resolve / normalize | `deepseek-flash` |
|
||||
|
||||
Override with `PROVIDER_*` and `MODEL_*_DEEPSEEK` in `.env`. See `periscope/dependency/backend/.env.example`.
|
||||
Override with `PROVIDER_*` and `MODEL_*_DEEPSEEK` in `.env`. See `periscope/src/backend/.env.example`.
|
||||
|
||||
## Layout
|
||||
|
||||
@@ -54,22 +54,22 @@ You need Python 3.12+, Node 20+, and a [DeepSeek API key](https://platform.deeps
|
||||
```bash
|
||||
python3 -m venv .venv
|
||||
source .venv/bin/activate
|
||||
pip install -r periscope/dependency/backend/requirements.txt
|
||||
cp periscope/dependency/backend/.env.example .env # set DEEPSEEK_API_KEY
|
||||
pip install -r periscope/src/backend/requirements.txt
|
||||
cp periscope/src/backend/.env.example .env # set DEEPSEEK_API_KEY
|
||||
|
||||
python3 -m uvicorn backend.main:app --reload --host 127.0.0.1 --port 18741
|
||||
|
||||
# in another terminal
|
||||
cd periscope/dependency/frontend && npm install
|
||||
cd periscope/src/frontend && npm install
|
||||
NEXT_PUBLIC_API_URL=http://127.0.0.1:18741 npm run dev -- --port 18742 --hostname 127.0.0.1
|
||||
```
|
||||
|
||||
Open the frontend URL, create a project, and feed it the netlist and BOM from `periscope/dependency/simple_project/`. Datasheets are fetched automatically (LCSC, TI, optional DigiKey); you can still drop in PDFs by hand. Fetched PDFs and extracted pin tables land in the **Library** (sidebar) and are reused on later projects. Everything runs locally against your own DeepSeek key; projects and the extraction library live in `data/`. Skills are local `periscope/dependency/skills/*/SKILL.md` — do not run `periscope/dependency/scripts/upload_skills.py`.
|
||||
Open the frontend URL, create a project, and feed it the netlist and BOM from `periscope/dependency/simple_project/`. Datasheets are fetched automatically (LCSC, TI, optional DigiKey); you can still drop in PDFs by hand. Fetched PDFs and extracted pin tables land in the **Library** (sidebar) and are reused on later projects. Everything runs locally against your own DeepSeek key; projects and the extraction library live in `data/`. Skills are local `periscope/src/skills/*/SKILL.md` — do not run `scripts/upload_skills.py`.
|
||||
|
||||
## Docker
|
||||
|
||||
```bash
|
||||
cp periscope/dependency/backend/.env.example .env # set DEEPSEEK_API_KEY
|
||||
cp periscope/src/backend/.env.example .env # set DEEPSEEK_API_KEY
|
||||
docker compose up --build
|
||||
```
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# Periscope backend environment. Copy to the repo-root `.env`.
|
||||
# Required: DEEPSEEK_API_KEY
|
||||
|
||||
# -- DeepSeek --------------------------------------------------------------
|
||||
DEEPSEEK_API_KEY=sk-...
|
||||
DEEPSEEK_BASE_URL=https://api.deepseek.com
|
||||
DEEPSEEK_MODEL=deepseek-flash
|
||||
DEEPSEEK_VISION_MODEL=deepseek-flash
|
||||
DEEPSEEK_THINKING=enabled
|
||||
DEEPSEEK_REASONING_EFFORT=high
|
||||
|
||||
# PROVIDER_DEFAULT=deepseek
|
||||
# MODEL_PINTABLE_DEEPSEEK=deepseek-flash
|
||||
# MODEL_PATTERN_DEEPSEEK=deepseek-flash
|
||||
# MODEL_SPECS_DEEPSEEK=deepseek-flash
|
||||
# MODEL_VALIDATION_DEEPSEEK=deepseek-flash
|
||||
# MODEL_AUTO_RESOLVE_DEEPSEEK=deepseek-flash
|
||||
# MODEL_NORMALIZE_DEEPSEEK=deepseek-flash
|
||||
|
||||
# Anthropic is not used. Do not set ANTHROPIC_API_KEY.
|
||||
|
||||
# -- Storage ---------------------------------------------------------------
|
||||
GCS_BUCKET=
|
||||
|
||||
# -- CORS ------------------------------------------------------------------
|
||||
CORS_ORIGINS=["http://localhost:3000","http://127.0.0.1:3000","http://localhost:18742","http://127.0.0.1:18742"]
|
||||
|
||||
# -- Local JWT (self-host). Do not rotate AUTH_JWT_SECRET on a live box. ---
|
||||
# AUTH_JWT_SECRET=change-me-to-a-long-random-string
|
||||
# AUTH_ADMIN_EMAILS=you@example.com
|
||||
|
||||
# -- Clerk (optional leftover seam) ----------------------------------------
|
||||
# CLERK_SECRET_KEY=
|
||||
# CLERK_PUBLISHABLE_KEY=
|
||||
# CLERK_JWKS_URL=
|
||||
|
||||
# DIGIKEY_CLIENT_ID=
|
||||
# DIGIKEY_CLIENT_SECRET=
|
||||
# DIGIKEY_ENVIRONMENT=production
|
||||
# MOUSER_API_KEY=
|
||||
|
||||
# EMAIL_SENDER=
|
||||
# EMAIL_FRONTEND_URL=
|
||||
# EMAIL_ADMIN_NOTIFY=
|
||||
# CONTACT_RECIPIENT=
|
||||
@@ -4,7 +4,7 @@ RUN apt-get update && apt-get install -y git && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
|
||||
# Overlay: PinScope inherited tree, then native Periscope modules.
|
||||
COPY periscope/dependency/backend/requirements*.txt /app/backend/
|
||||
COPY periscope/src/backend/requirements*.txt /app/backend/
|
||||
RUN pip install --no-cache-dir -r /app/backend/requirements.txt \
|
||||
&& if [ -f /app/backend/requirements-gateway.txt ]; then \
|
||||
pip install --no-cache-dir -r /app/backend/requirements-gateway.txt; \
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
fastapi>=0.115
|
||||
uvicorn[standard]
|
||||
openai>=1.60
|
||||
pydantic[email]>=2.0
|
||||
pydantic-settings
|
||||
python-multipart
|
||||
sse-starlette
|
||||
python-dotenv
|
||||
openpyxl>=3.1
|
||||
pypdf>=4.0
|
||||
pymupdf>=1.24
|
||||
PyJWT[crypto]>=2.8
|
||||
cryptography>=42.0
|
||||
httpx>=0.27
|
||||
packaging>=24.0
|
||||
shapely>=2.0
|
||||
PyYAML>=6.0
|
||||
# Optional leftover seams (GCS storage, Gmail/Sheets, unused LLM providers).
|
||||
anthropic>=0.83
|
||||
google-genai>=1.59
|
||||
google-cloud-storage>=2.14
|
||||
google-cloud-run>=0.10
|
||||
google-api-python-client>=2.100
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema.json",
|
||||
"style": "base-nova",
|
||||
"rsc": true,
|
||||
"tsx": true,
|
||||
"tailwind": {
|
||||
"config": "",
|
||||
"css": "src/app/globals.css",
|
||||
"baseColor": "neutral",
|
||||
"cssVariables": true,
|
||||
"prefix": ""
|
||||
},
|
||||
"iconLibrary": "lucide",
|
||||
"rtl": false,
|
||||
"aliases": {
|
||||
"components": "@/components",
|
||||
"utils": "@/lib/utils",
|
||||
"ui": "@/components/ui",
|
||||
"lib": "@/lib",
|
||||
"hooks": "@/hooks"
|
||||
},
|
||||
"menuColor": "default",
|
||||
"menuAccent": "subtle",
|
||||
"registries": {}
|
||||
}
|
||||
@@ -2,6 +2,15 @@
|
||||
|
||||
What's new in Periscope.
|
||||
|
||||
## 2.57.0 — 2026-09-20 — Native package.json, requirements, and unused Docker copies
|
||||
|
||||
Frontend `package.json` (`periscope-web`) and lockfile, `components.json`, and backend `requirements.txt` overlay from `periscope/src`. Docker installs those files from src. Unused PinScope public blobs (Faradworks logo, power-tree.gif, create-next-app SVGs) are dockerignored. EDA logos and KiCad tutorial examples live under src `public/`. Landing `report.png` / `datasheet.gif` / `derating.png` stay in `dependency/` until native UI captures exist. Auth/JWT still inherited. Pad≠Via unchanged.
|
||||
|
||||
- [New] Native npm package name `periscope-web` at 2.57.0 with the same Next 16 scripts and dependency set.
|
||||
- [New] Native pip requirements (DeepSeek stack first; leftover GCS/Gmail/LLM extras remain optional).
|
||||
- [Changed] Frontend Docker `npm ci` and backend `pip install` read src manifests.
|
||||
- [Changed] `.dockerignore` drops unused PinScope marketing blobs from the image.
|
||||
|
||||
## 2.56.0 — 2026-09-20 — Native taxonomy JSON and local skills overlay
|
||||
|
||||
Component taxonomy JSON and DeepSeek `skills/*/SKILL.md` (plus local `validate.py` / schema) live under `periscope/src`. `repo_paths` prefers src; Docker copies dependency then src; compose mounts `src/taxonomy`. Manifest `1.14.0`. App `favicon.ico` matches the Periscope mark. Auth/JWT, package.json, landing png/gif unchanged. Pad≠Via unchanged.
|
||||
|
||||
@@ -7,7 +7,7 @@ ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
|
||||
ARG NEXT_PUBLIC_AUTH_MODE
|
||||
ENV NEXT_PUBLIC_AUTH_MODE=$NEXT_PUBLIC_AUTH_MODE
|
||||
|
||||
COPY periscope/dependency/frontend/package*.json ./
|
||||
COPY periscope/src/frontend/package.json periscope/src/frontend/package-lock.json ./
|
||||
RUN npm ci
|
||||
|
||||
COPY periscope/dependency/frontend/ ./
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"name": "periscope-web",
|
||||
"version": "2.57.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"sync-version": "node scripts/sync-version.mjs",
|
||||
"predev": "node scripts/sync-version.mjs",
|
||||
"prebuild": "node scripts/sync-version.mjs",
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
"lint": "eslint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@base-ui/react": "^1.3.0",
|
||||
"@types/dagre": "^0.7.54",
|
||||
"@xyflow/react": "^12.10.2",
|
||||
"class-variance-authority": "^0.7.1",
|
||||
"clsx": "^2.1.1",
|
||||
"dagre": "^0.8.5",
|
||||
"lucide-react": "^1.8.0",
|
||||
"next": "16.2.3",
|
||||
"next-themes": "^0.4.6",
|
||||
"react": "19.2.4",
|
||||
"react-dom": "19.2.4",
|
||||
"react-markdown": "^10.1.0",
|
||||
"react-pdf": "^10.4.1",
|
||||
"shadcn": "^4.2.0",
|
||||
"tailwind-merge": "^3.5.0",
|
||||
"tw-animate-css": "^1.4.0",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/postcss": "^4",
|
||||
"@types/node": "^20",
|
||||
"@types/react": "^19",
|
||||
"@types/react-dom": "^19",
|
||||
"eslint": "^9",
|
||||
"eslint-config-next": "16.2.3",
|
||||
"tailwindcss": "^4",
|
||||
"typescript": "^5"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
version="1.1"
|
||||
width="664.2135"
|
||||
height="150.37209"
|
||||
id="svg3361">
|
||||
<defs
|
||||
id="defs3363" />
|
||||
<g
|
||||
transform="translate(-16.464666,-437.17614)"
|
||||
id="layer1">
|
||||
<path
|
||||
d="m 127.42714,438.17614 c -20.44972,0.74271 -37.638575,11.92912 -47.344393,28.94383 l -62.618081,116.69732 47.38449,-0.04 11.104486,-25.25569 35.438138,0 -1.363,25.29578 47.42457,0 -5.49211,-145.64114 -24.5341,0 z m 75.16575,0 -36.44036,145.64115 41.09061,0 36.56062,-145.64115 -41.21087,0 z m 60.65374,1.44319 -29.62532,117.41891 c -3.15651,11.84109 -2.20708,19.47656 2.80618,22.97065 4.46468,3.42658 12.95462,5.04904 25.49622,4.93087 7.22451,0 14.9718,-0.35023 23.25127,-1.04229 l 6.17362,-24.49401 -6.85512,0 c -6.84471,0.0844 -9.59593,-2.8103 -8.17803,-8.6591 l 13.1089,-52.59597 17.23802,0 6.13352,-24.73455 -17.11775,0 8.73928,-33.79451 -41.17079,0 z m -146.96406,30.22665 -3.36743,60.73392 -24.694449,0 28.061879,-60.73392 z m 471.68008,0.52115 c -15.07355,0 -26.79998,5.4961 -35.19762,16.47633 l -0.48106,0 3.28725,-13.4697 -41.53158,0 -27.70108,110.40344 41.21087,0 18.28031,-72.84062 c 2.26187,-8.84495 7.37188,-13.20386 15.31377,-13.06881 7.87436,-0.13505 10.62136,4.24707 8.25821,13.1089 l -18.28031,72.80053 41.09061,0 18.2803,-72.84062 c 2.30408,-8.84495 7.52169,-13.20386 15.67457,-13.06881 7.95033,-0.13505 10.68044,4.22386 8.25821,13.06881 l -18.20013,72.84062 18.16004,0 c 12.88763,0 25.1438,-8.52382 28.02179,-20.20455 l 15.83492,-63.09914 c 2.75982,-11.57101 1.54246,-19.60946 -3.64805,-24.13321 -5.3593,-4.05112 -12.89561,-6.02381 -22.60985,-5.97317 -6.54088,0 -12.93787,1.27855 -19.24243,3.76831 -6.524,2.59103 -12.29438,7.0069 -17.35828,13.26925 -1.01278,-5.72221 -3.6142,-10.01571 -7.81724,-12.86837 -4.279,-2.77671 -10.81735,-4.16919 -19.60322,-4.16919 z m -259.97326,3.0868 -27.58081,110.36336 41.05051,0 27.70109,-110.36336 -41.17079,0 z m 59.85198,0 -20.84597,83.38387 c -2.68387,11.52038 -1.29771,19.41957 4.12911,23.57198 5.08078,4.24523 12.34703,6.25168 21.80809,6.13352 14.98914,0 26.62063,-5.3252 34.91699,-16.03536 l 0.48106,0 -3.24716,13.34944 41.05052,0 27.58082,-110.40345 -41.1307,0 -18.28031,72.84062 c -2.27875,8.84495 -7.3993,13.23339 -15.43403,13.14899 -7.76466,0.0844 -10.46945,-4.30404 -8.09786,-13.14899 l 18.24022,-72.84062 -41.17078,0 z"
|
||||
id="path278"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
@@ -0,0 +1,79 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="100"
|
||||
height="11"
|
||||
viewBox="0 0 100 11"
|
||||
fill="none"
|
||||
version="1.1"
|
||||
id="svg20"
|
||||
sodipodi:docname="Autodesk_Logo_2021.svg"
|
||||
inkscape:version="1.1 (c68e22c387, 2021-05-23)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title841">Autodesk logo</title>
|
||||
<defs
|
||||
id="defs24" />
|
||||
<sodipodi:namedview
|
||||
id="namedview22"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#111111"
|
||||
borderopacity="1"
|
||||
inkscape:pageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="1"
|
||||
showgrid="false"
|
||||
width="100px"
|
||||
height="11px"
|
||||
inkscape:zoom="2.8183615"
|
||||
inkscape:cx="125.42748"
|
||||
inkscape:cy="-2.4837126"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="746"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg20" />
|
||||
<path
|
||||
id="path2-1"
|
||||
style="fill:#000000;stroke-width:0.296752"
|
||||
d="m 54.504191,0.41597954 c -3.525698,0 -5.351957,2.16877246 -5.351957,5.08939746 0,2.9321968 1.826259,5.112582 5.351957,5.112579 3.537278,0 5.363544,-2.1803822 5.363544,-5.112579 0.0054,-2.920625 -1.826266,-5.08939746 -5.363544,-5.08939746 z m 30.563049,0 c -2.982345,0 -4.479086,1.18561256 -4.479086,3.28512686 0,1.7060221 0.994178,2.5097046 3.051548,2.7293003 l 2.288812,0.2434281 c 0.872746,0.098225 1.271625,0.4333787 1.271625,0.8728668 0,0.4973541 -0.583478,0.942995 -1.988,0.942995 -1.624116,0 -2.277541,-0.4109612 -2.387339,-1.238007 h -2.375166 c 0.109797,2.2324554 1.560273,3.3720664 4.675566,3.3720664 2.843469,0 4.432726,-1.2496001 4.432726,-3.1292201 0,-1.6365829 -0.94156,-2.6196485 -2.721769,-2.822033 L 84.582121,4.4180625 c -1.317874,-0.144517 -1.647204,-0.4743882 -1.647204,-0.9198126 0,-0.4973546 0.676088,-0.942416 1.999596,-0.942416 1.271582,0 1.936179,0.4745323 2.057548,1.1858441 h 2.422126 C 89.292518,1.6884566 87.575681,0.41597954 85.06724,0.41597954 Z M 29.755606,0.64723744 V 6.9282752 c 0,2.7989563 2.496536,3.6722948 4.588636,3.6722948 2.080821,0 4.566024,-0.8733385 4.566024,-3.6722948 V 0.64723744 H 36.436564 V 6.6448533 h 0.01161 c 0,1.260896 -0.774034,1.7694952 -2.09754,1.7694952 -1.283153,0 -2.121311,-0.5317461 -2.121311,-1.7694952 V 0.64723744 Z M 9.0004214,0.68201178 0.3482729,6.0600471 v 4.3202769 h 0.074775 L 9.098383,4.9791071 h 4.502271 c 0.138875,0 0.266028,0.109647 0.266028,0.2660354 0,0.127009 -0.05776,0.1793062 -0.126931,0.2196638 L 9.4797558,8.020806 C 9.2022887,8.188471 9.1041774,8.5180638 9.1041774,8.766741 l -0.00621,1.613583 H 14.513677 V 1.0175947 c 0,-0.17923705 -0.138574,-0.33558363 -0.346598,-0.33558363 z m 13.5305746,0 -3.716926,9.69889522 h 2.554841 l 0.64741,-1.8164438 h 4.149878 l 0.635812,1.8164438 h 2.641196 L 25.680495,0.68201208 Z m 17.512375,0 V 2.7812944 h 3.126898 v 7.5996126 h 2.4679 V 2.7812948 H 48.75348 V 0.68201208 Z m 21.170756,0 V 10.380907 h 4.531836 c 3.473762,0 4.432713,-1.2958946 4.432713,-4.9218961 0,-3.4064069 -0.918586,-4.77699912 -4.432713,-4.77699912 z m 10.346301,0 V 10.380907 h 7.802463 V 8.2810414 H 74.034122 V 6.5231422 h 4.288407 V 4.4180635 H 74.034122 V 2.7812948 h 5.328769 V 0.68201208 Z m 19.257526,0 0.01161,9.69889522 h 2.462678 V 6.6970171 l 3.340776,3.6838899 h 3.126888 L 95.251275,5.5923173 99.759904,0.68201208 H 96.817903 L 93.29224,4.620341 V 0.68201208 Z M 54.504191,2.5964075 c 1.843719,0 2.832466,1.1275738 2.832466,2.9089704 0.0054,1.8217553 -0.988747,2.9321552 -2.832466,2.9321552 -1.826506,0 -2.83189,-1.1163342 -2.83189,-2.9321552 0,-1.7813966 1.005384,-2.9089704 2.83189,-2.9089704 z m -30.395548,0.1043257 1.334803,3.7992237 h -2.693361 z m 39.573969,0.080563 h 1.964814 c 1.549048,0 2.011184,0.4221106 2.011184,2.6777164 0,2.0588589 -0.520007,2.8220306 -2.011184,2.8220306 h -1.964814 z" />
|
||||
<metadata
|
||||
id="metadata839">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:title>Autodesk logo</dc:title>
|
||||
<dc:date>21 sep 2021</dc:date>
|
||||
<cc:license
|
||||
rdf:resource="http://scripts.sil.org/OFL" />
|
||||
</cc:Work>
|
||||
<cc:License
|
||||
rdf:about="http://scripts.sil.org/OFL">
|
||||
<cc:permits
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/Embedding" />
|
||||
<cc:permits
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeWorks" />
|
||||
<cc:requires
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/Notice" />
|
||||
<cc:requires
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/Attribution" />
|
||||
<cc:requires
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/ShareAlike" />
|
||||
<cc:requires
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/DerivativeRenaming" />
|
||||
<cc:requires
|
||||
rdf:resource="http://scripts.sil.org/pub/OFL/BundlingWhenSelling" />
|
||||
</cc:License>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.3 KiB |
@@ -0,0 +1,39 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg width="51.02mm" height="9.642mm" version="1.1" viewBox="0 0 51.02 9.642" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
|
||||
<title>Cadence Design Systems logo</title>
|
||||
<desc>A software company based in San Jose, California, United States that specialised in EDA</desc>
|
||||
<metadata>
|
||||
<rdf:RDF>
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
||||
<dc:title/>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g transform="translate(10.07 40.7)">
|
||||
<path d="m-3.081-39.63h3.903v-1.074h-3.903z" style="fill:#d21c2e"/>
|
||||
<g transform="matrix(.5857 0 0 -.5857 -6.335 -31.28)">
|
||||
<path d="m0 0c-0.355-0.189-0.99-0.379-1.841-0.379-2.729 0-4.543 2.021-4.543 5.801 0 3.443 1.905 6.028 4.951 6.028 0.679 0 1.12-0.165 1.433-0.334v-2c-0.249 0.102-0.829 0.257-1.383 0.257-1.641 0-2.487-1.786-2.487-3.901 0-2.351 0.95-3.783 2.489-3.783 0.464 0 1.014 0.091 1.381 0.273v-1.962" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 -.6332 -32.24)">
|
||||
<path d="m0 0 1e-3 4.054c-0.98-0.013-2.759-0.284-2.759-2.285 0-1.299 0.692-1.768 1.246-1.768zm2.482 0.916c0-0.892 0.055-2.029 0.177-2.791h-4.931c-1.648 0-2.892 1.368-2.892 3.384 0 2.955 2.497 4.202 5.098 4.226v0.203c0 1.198-0.469 2.04-1.718 2.04-0.822 0-1.762-0.24-2.384-0.638v1.72c0.565 0.359 1.531 0.822 2.932 0.822 2.96 0 3.718-1.924 3.718-4.371v-4.595" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 7.314 -32.25)">
|
||||
<path d="m0 0h-1.468c-1.057 0-1.669 1.595-1.669 3.891 0 2.056 0.456 3.87 1.731 3.87 0.744 0 1.261-0.818 1.369-1.742 0.037-0.233 0.037-0.489 0.037-0.708zm2.511 0.901-5e-3 12.36h-2.506v-4.614h-0.048c-0.368 0.794-1.064 1.249-2.012 1.249-1.857 0-3.59-1.936-3.59-5.971 0-3.464 1.248-5.809 3.472-5.809l4.866-4e-3c-0.121 0.763-0.177 1.898-0.177 2.79" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 15.23 -35.17)">
|
||||
<path d="m0 0c0.019 1.845-0.586 2.941-1.48 2.941-1.095 0-1.588-1.593-1.638-2.941zm-3.129-1.794c0.027-2.57 1.22-3.268 2.562-3.268 0.84 0 1.73 0.189 2.241 0.408v-1.813c-0.717-0.338-1.647-0.541-2.698-0.541-2.964 0-4.555 2.15-4.555 5.709 0 3.803 1.823 6.118 4.278 6.118 2.418 0 3.636-2.185 3.636-5.267 0-0.656-0.026-1.026-0.066-1.341l-5.398-5e-3" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 21.26 -36.74)">
|
||||
<path d="m0 0v-9.564h-2.52v8.257c0 1.299-0.065 2.316-0.103 3.334h4.968c1.915 0 3.056-1.394 3.056-4.06v-7.531h-2.52v7.291c0 1.149-0.244 2.271-1.341 2.271l-1.54 2e-3" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 31.3 -31.28)">
|
||||
<path d="m0 0c-0.355-0.189-0.991-0.379-1.841-0.379-2.729 0-4.545 2.021-4.545 5.801 0 3.443 1.906 6.028 4.952 6.028 0.68 0 1.12-0.165 1.434-0.334v-2c-0.25 0.102-0.83 0.257-1.384 0.257-1.641 0-2.487-1.786-2.487-3.901 0-2.351 0.949-3.783 2.49-3.783 0.465 0 1.013 0.091 1.381 0.273v-1.962" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 35.36 -35.17)">
|
||||
<path d="m0 0c0.051 1.348 0.544 2.941 1.637 2.941 0.896 0 1.501-1.096 1.481-2.941zm5.452-0.448c0 3.083-1.217 5.267-3.635 5.267-2.454 0-4.279-2.315-4.279-6.118 0-3.559 1.591-5.709 4.555-5.709 1.053 0 1.983 0.203 2.699 0.541v1.813c-0.513-0.219-1.401-0.408-2.241-0.408-1.343 0-2.534 0.698-2.561 3.268l5.397 5e-3c0.04 0.315 0.065 0.685 0.065 1.341" style="fill:#231f20"/>
|
||||
</g>
|
||||
<g transform="matrix(.5857 0 0 -.5857 40.06 -40.42)">
|
||||
<path d="m0 0c0.834 0 1.513-0.775 1.513-1.728 0-0.951-0.679-1.726-1.513-1.726-0.836 0-1.512 0.775-1.512 1.726 0 0.953 0.676 1.728 1.512 1.728zm5e-3 -3.196c0.696 0 1.219 0.641 1.219 1.468 0 0.829-0.523 1.469-1.219 1.469-0.704 0-1.228-0.64-1.228-1.469 0-0.827 0.524-1.468 1.228-1.468zm-0.584 2.483h0.68c0.406 0 0.608-0.186 0.608-0.569 0-0.326-0.181-0.559-0.459-0.559l0.504-0.895h-0.305l-0.496 0.895h-0.243v-0.895h-0.289zm0.289-0.87h0.343c0.224 0 0.366 0.052 0.366 0.315 0 0.23-0.18 0.297-0.366 0.297h-0.343v-0.612" style="fill:#231f20"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 8.2 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="335.33405"
|
||||
height="136.76263"
|
||||
viewBox="0 0 335.33405 136.76263"
|
||||
version="1.1">
|
||||
<g transform="translate(-40.547253,-883.62366)" fill="#ffffff">
|
||||
<!-- Rect with K, i, and orange-dot cut out via evenodd -->
|
||||
<path
|
||||
fill-rule="evenodd"
|
||||
d="m 51.678648,901.97614 114.391972,0 c 0.51273,0 0.9255,0.43179 0.9255,0.96814 l 0,109.79552 c 0,0.5364 -0.41277,0.9682 -0.9255,0.9682 l -114.391972,0 c -0.512727,0 -0.925501,-0.4318 -0.925501,-0.9682 l 0,-109.79552 c 0,-0.53635 0.412774,-0.96814 0.925501,-0.96814 z M 80.269477,948.26032 l 16.927605,-21.41018 c 3.460178,-4.36453 5.190288,-7.62815 5.190348,-9.79088 -6e-5,-0.78633 -0.0984,-1.41546 -0.29491,-1.8874 l 29.54958,0 c -2.24136,1.25835 -5.0528,3.91251 -8.43431,7.96246 -0.90445,1.06175 -2.49694,3.00812 -4.77747,5.83914 l -22.176937,27.60321 26.482557,36.45038 c 1.61208,2.20197 3.65676,4.67918 6.13405,7.43165 0.66837,0.7078 1.63173,1.5532 2.89008,2.5362 l -30.31634,0 c 0.23587,-0.9044 0.35383,-1.7105 0.35389,-2.4183 -6e-5,-2.1626 -1.49425,-5.2886 -4.482575,-9.37797 l -17.045568,-23.23859 0,23.5335 c -3.2e-5,5.4656 1.100949,9.29936 3.302948,11.50136 l -27.721166,0 c 1.533502,-1.5335 2.516521,-3.28331 2.949061,-5.24935 0.235913,-1.10098 0.353875,-3.16532 0.353887,-6.19303 l 0,-64.9383 c -1.2e-5,-3.02763 -0.117974,-5.09197 -0.353887,-6.19303 -0.43254,-1.96596 -1.415559,-3.71573 -2.949061,-5.24933 l 27.721166,0 c -2.201999,2.20205 -3.30298,6.01617 -3.302948,11.44236 l 0,21.6461 z M 159.48123,938.46944 l 0,54.14474 c -3e-5,2.83111 0.0786,4.67918 0.23593,5.54423 0.31453,1.76944 1.14027,3.38159 2.47721,4.83649 l -25.95173,0 c 1.3369,-1.4549 2.16263,-3.06705 2.47721,-4.83649 0.15727,-0.86505 0.23591,-2.71312 0.23592,-5.54423 l 0,-43.88201 c -1e-5,-2.83104 -0.0787,-4.65946 -0.23592,-5.48526 -0.31458,-1.73005 -1.12065,-3.32254 -2.41823,-4.77747 l 23.17961,0 z M 149.2185,907.62227 c 3.26361,9e-5 6.03572,1.16006 8.31635,3.47989 2.3199,2.2807 3.47986,5.05281 3.47989,8.31635 -3e-5,3.34235 -1.14033,6.15378 -3.42091,8.43431 -2.24131,2.24136 -5.03308,3.362 -8.37533,3.36193 -3.26364,7e-5 -6.05541,-1.14023 -8.37533,-3.42091 -2.28061,-2.31985 -3.42092,-5.11162 -3.42091,-8.37533 -1e-5,-3.34218 1.12064,-6.13396 3.36193,-8.37533 2.28059,-2.28051 5.09203,-3.42082 8.43431,-3.42091 z M 161.16831,902.00507 c 0,6.60244 -5.36817,11.95472 -11.99015,11.95472 -6.62197,0 -11.99015,-5.35228 -11.99015,-11.95472 0,-6.60244 5.36818,-11.9548 11.99015,-11.9548 6.62198,0 11.99015,5.35236 11.99015,11.9548 z" />
|
||||
<!-- C -->
|
||||
<path
|
||||
d="m 236.09782,999.10211 c -6.25207,3.53889 -13.25117,5.30829 -20.99731,5.30829 -12.30745,0 -22.11798,-4.56119 -29.43162,-13.68362 -6.80251,-8.45395 -10.20376,-18.99191 -10.20375,-31.61392 -1e-5,-14.15543 4.168,-25.40117 12.50402,-33.73725 7.70685,-7.70679 16.82926,-11.56023 27.36727,-11.56032 6.88109,9e-5 13.91951,2.00545 21.11527,6.01609 1.84801,1.02242 3.3422,1.59257 4.48258,1.71045 l -10.55764,15.33511 c -3.46029,-4.40385 -8.08048,-6.60582 -13.86058,-6.60589 -9.04382,7e-5 -14.94194,5.58362 -17.69436,16.75066 -0.90441,3.65689 -1.3566,7.68727 -1.35657,12.09115 -3e-5,12.50404 3.16529,21.03665 9.49597,25.59784 2.94902,2.12334 6.09468,3.185 9.437,3.18499 5.9767,1e-5 11.28501,-2.55584 15.92492,-7.66756 l 9.79088,16.04289 c -0.47192,-0.11796 -2.47728,0.82574 -6.01608,2.83109" />
|
||||
<!-- a -->
|
||||
<path
|
||||
d="m 278.98304,984.88764 0,-10.20374 c -1.49423,-0.27522 -3.06706,-0.41284 -4.71849,-0.41287 -3.30298,3e-5 -6.13408,0.58984 -8.4933,1.76943 -2.9884,1.49422 -4.48259,3.7355 -4.48257,6.72386 -2e-5,2.2413 0.84537,4.0304 2.53619,5.36729 1.53349,1.21896 3.4602,1.82843 5.78016,1.82842 4.28593,1e-5 7.41193,-1.69078 9.37801,-5.07239 m 23.17962,18.10726 -21.99999,0 0,-5.01343 c -4.05008,4.12873 -9.26009,6.23233 -15.63002,6.31103 -4.52192,0.039 -8.63094,-0.9634 -12.32707,-3.0081 -3.89277,-2.16262 -6.72387,-5.22964 -8.4933,-9.20105 -1.25827,-2.83108 -1.8874,-6.03573 -1.8874,-9.61394 0,-8.17869 3.99106,-14.21443 11.97319,-18.10722 4.60051,-2.24125 11.04912,-3.36189 19.34583,-3.36193 1.17959,4e-5 3.22427,0.0787 6.13405,0.23592 -4e-5,-6.72381 -2.92944,-10.08573 -8.7882,-10.08578 -4.99377,5e-5 -10.24309,1.45492 -15.74798,4.3646 l -5.83914,-14.0965 c 1.29757,6e-5 3.83376,-0.47179 7.60857,-1.41555 l 8.02145,-2.00536 c 2.7131,-0.55043 5.66216,-0.82567 8.84718,-0.82574 12.58261,7e-5 20.48608,4.01078 23.71044,12.03217 1.57277,3.93213 2.35919,8.78824 2.35925,14.56835 l 0,28.84181 c -6e-5,2.83111 0.0786,4.67918 0.23592,5.54423 0.31451,1.76944 1.14024,3.38159 2.47722,4.83649" />
|
||||
<!-- d -->
|
||||
<path
|
||||
d="m 347.28917,984.88764 0,-29.43162 c -2.59521,-2.20191 -5.48529,-3.30289 -8.67023,-3.30294 -6.92049,5e-5 -10.38072,6.7239 -10.38069,20.17157 -3e-5,10.85256 3.16529,16.27882 9.49597,16.27881 3.30291,10e-6 6.48789,-1.23859 9.55495,-3.71582 m -2.65415,-75.08307 23.17961,0 0,82.80961 c -6e-5,4.91511 0.90431,8.37532 2.71314,10.38072 l -22.05897,0 0,-5.01343 c -4.28601,4.20733 -9.7516,6.31103 -16.39678,6.31103 -5.6229,0 -10.49867,-1.6908 -14.62733,-5.07242 -3.89278,-3.18498 -6.74353,-7.52993 -8.55228,-13.03485 -1.25827,-3.85342 -1.8874,-8.13938 -1.8874,-12.8579 0,-15.64964 3.99106,-26.34488 11.97319,-32.08578 3.77477,-2.71307 8.11972,-4.06963 13.03484,-4.0697 6.4879,7e-5 11.57994,1.74984 15.27613,5.24933 l 0,-22.35388 c -4e-5,-2.83101 -0.0787,-4.65943 -0.23592,-5.48525 -0.31461,-1.73002 -1.12069,-3.32252 -2.41823,-4.77748" />
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 5.4 KiB |
@@ -0,0 +1,81 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 16.2.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="250px" height="100px" viewBox="0 0 250 100" enable-background="new 0 0 250 100" xml:space="preserve">
|
||||
<rect display="none" fill="none" width="1368" height="1008"/>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#231F20" d="M86.231,72.341c-0.185-0.096-0.495-0.272-1.05-0.272c-0.813,0-1.33,0.604-1.33,1.565
|
||||
c0,0.928,0.583,1.553,1.353,1.553c0.591,0,0.938-0.205,1.057-0.25l0.044,0.993c-0.207,0.062-0.637,0.17-1.293,0.17
|
||||
c-1.413,0-2.405-0.973-2.405-2.48c0-1.743,1.272-2.439,2.322-2.439c0.768,0,1.16,0.16,1.359,0.233L86.231,72.341z"/>
|
||||
<path fill="#231F20" d="M91.178,74.955H89.56l-0.354,1.062h-1.171l1.717-4.753h1.33l1.656,4.753h-1.242L91.178,74.955z
|
||||
M90.408,72.178h-0.016l-0.613,1.974h1.162L90.408,72.178z"/>
|
||||
<path fill="#231F20" d="M94.749,71.264h1.833c1.161,0,2.306,0.627,2.306,2.417c0,1.643-1.159,2.336-2.461,2.336h-1.678V71.264
|
||||
L94.749,71.264z M95.961,75.187h0.383c0.88,0,1.272-0.64,1.272-1.506c0-0.98-0.406-1.585-1.346-1.585H95.96L95.961,75.187
|
||||
L95.961,75.187z"/>
|
||||
<polygon fill="#231F20" points="101.012,71.264 103.99,71.264 103.99,72.096 102.18,72.096 102.18,73.158 103.904,73.158
|
||||
103.904,73.988 102.18,73.988 102.18,75.187 104.08,75.187 104.08,76.017 101.012,76.017 "/>
|
||||
<polygon fill="#231F20" points="106.305,71.264 107.726,71.264 109.227,74.562 109.242,74.562 109.242,71.264 110.305,71.264
|
||||
110.305,76.017 108.872,76.017 107.383,72.579 107.371,72.579 107.371,76.017 106.305,76.017 "/>
|
||||
<path fill="#231F20" d="M116.213,72.341c-0.185-0.096-0.494-0.272-1.048-0.272c-0.814,0-1.332,0.604-1.332,1.565
|
||||
c0,0.928,0.584,1.553,1.354,1.553c0.592,0,0.939-0.205,1.057-0.25l0.045,0.993c-0.208,0.062-0.637,0.17-1.295,0.17
|
||||
c-1.412,0-2.403-0.973-2.403-2.48c0-1.743,1.273-2.439,2.321-2.439c0.77,0,1.162,0.16,1.361,0.233L116.213,72.341z"/>
|
||||
<polygon fill="#231F20" points="118.315,71.264 121.295,71.264 121.295,72.096 119.483,72.096 119.483,73.158 121.204,73.158
|
||||
121.204,73.988 119.483,73.988 119.483,75.187 121.385,75.187 121.385,76.017 118.315,76.017 "/>
|
||||
<path fill="#231F20" d="M127.031,71.264h1.651c1.099,0,1.764,0.484,1.764,1.511c0,0.812-0.486,1.508-1.616,1.508h-0.586v1.734
|
||||
h-1.213V71.264L127.031,71.264z M128.584,73.45c0.376,0,0.651-0.239,0.651-0.68c0-0.472-0.237-0.677-0.718-0.677h-0.318v1.356
|
||||
H128.584L128.584,73.45z"/>
|
||||
<path fill="#231F20" d="M136.1,72.341c-0.188-0.096-0.499-0.272-1.052-0.272c-0.814,0-1.331,0.604-1.331,1.565
|
||||
c0,0.928,0.584,1.553,1.352,1.553c0.593,0,0.941-0.205,1.059-0.25l0.043,0.993c-0.208,0.062-0.638,0.17-1.292,0.17
|
||||
c-1.414,0-2.405-0.973-2.405-2.48c0-1.743,1.271-2.439,2.321-2.439c0.77,0,1.161,0.16,1.36,0.233L136.1,72.341z"/>
|
||||
<path fill="#231F20" d="M138.346,71.264h1.921c1.088,0,1.428,0.677,1.428,1.186c0,0.756-0.637,1.057-0.932,1.088v0.017
|
||||
c0.584,0.106,1.036,0.401,1.036,1.151c0,1.202-1.294,1.312-1.598,1.312h-1.854L138.346,71.264L138.346,71.264z M139.514,73.2
|
||||
h0.294c0.695,0,0.717-0.5,0.717-0.587c0-0.17-0.105-0.573-0.693-0.573h-0.317V73.2L139.514,73.2z M139.514,75.213h0.34
|
||||
c0.16,0,0.774,0,0.774-0.612c0-0.416-0.251-0.627-0.651-0.627h-0.463V75.213L139.514,75.213z"/>
|
||||
<path fill="#231F20" d="M150.279,72.232c-0.288-0.139-0.695-0.246-1.022-0.246c-0.39,0-0.685,0.162-0.685,0.517
|
||||
c0,0.864,2.033,0.464,2.033,2.154c0,0.896-0.777,1.44-1.804,1.44c-0.628,0-1.17-0.135-1.392-0.197l0.066-0.927
|
||||
c0.363,0.13,0.681,0.291,1.132,0.291c0.383,0,0.754-0.178,0.754-0.562c0-0.92-2.032-0.471-2.032-2.167
|
||||
c0-0.144,0.057-1.356,1.788-1.356c0.477,0,0.771,0.077,1.214,0.164L150.279,72.232z"/>
|
||||
<path fill="#231F20" d="M154.96,71.184c1.485,0,2.194,1.062,2.194,2.457c0,1.397-0.709,2.457-2.194,2.457
|
||||
c-1.484,0-2.189-1.062-2.189-2.457C152.77,72.245,153.475,71.184,154.96,71.184 M154.96,75.297c0.703,0,0.952-0.744,0.952-1.656
|
||||
c0-0.913-0.249-1.654-0.952-1.654c-0.702,0-0.948,0.741-0.948,1.654C154.012,74.553,154.257,75.297,154.96,75.297"/>
|
||||
<polygon fill="#231F20" points="159.462,71.264 160.675,71.264 160.675,75.16 162.383,75.16 162.383,76.017 159.462,76.017 "/>
|
||||
<path fill="#231F20" d="M164.444,71.264h1.215v3.206c0,0.477,0.192,0.771,0.681,0.771c0.487,0,0.68-0.292,0.68-0.771v-3.206h1.215
|
||||
v3.028c0,1.179-0.732,1.806-1.894,1.806c-1.163,0-1.894-0.627-1.894-1.806v-3.028H164.444z"/>
|
||||
<polygon fill="#231F20" points="171.389,72.123 170.267,72.123 170.267,71.264 173.726,71.264 173.726,72.123 172.601,72.123
|
||||
172.601,76.017 171.389,76.017 "/>
|
||||
<rect x="175.812" y="71.264" fill="#231F20" width="1.213" height="4.753"/>
|
||||
<path fill="#231F20" d="M181.518,71.184c1.485,0,2.196,1.062,2.196,2.457c0,1.397-0.711,2.457-2.196,2.457
|
||||
s-2.188-1.062-2.188-2.457S180.032,71.184,181.518,71.184 M181.518,75.297c0.701,0,0.954-0.744,0.954-1.656
|
||||
c0-0.913-0.253-1.654-0.954-1.654s-0.944,0.741-0.944,1.654C180.574,74.553,180.816,75.297,181.518,75.297"/>
|
||||
<polygon fill="#231F20" points="185.999,71.264 187.419,71.264 188.92,74.562 188.936,74.562 188.936,71.264 190.001,71.264
|
||||
190.001,76.017 188.565,76.017 187.079,72.579 187.066,72.579 187.066,76.017 185.999,76.017 "/>
|
||||
<path fill="#231F20" d="M195.242,72.232c-0.287-0.139-0.695-0.246-1.021-0.246c-0.392,0-0.687,0.162-0.687,0.517
|
||||
c0,0.864,2.033,0.464,2.033,2.154c0,0.896-0.776,1.44-1.803,1.44c-0.63,0-1.17-0.135-1.394-0.197l0.068-0.927
|
||||
c0.36,0.13,0.679,0.291,1.13,0.291c0.384,0,0.754-0.178,0.754-0.562c0-0.92-2.034-0.471-2.034-2.167
|
||||
c0-0.144,0.061-1.356,1.791-1.356c0.471,0,0.769,0.077,1.212,0.164L195.242,72.232z"/>
|
||||
</g>
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#E31837" d="M58.978,23.971c11.006,0,16.192,9.015,16.089,18.919c-0.104,11.215-5.555,18.918-16.089,18.918
|
||||
c-10.533,0-15.983-7.703-16.089-18.918C42.785,32.985,47.971,23.971,58.978,23.971z M46.504,42.89
|
||||
c0,7.755,3.876,15.773,12.474,15.773c8.595,0,12.471-8.019,12.471-15.773c0-7.758-3.875-15.774-12.471-15.774
|
||||
S46.504,35.132,46.504,42.89z"/>
|
||||
<path fill="#E31837" d="M82.559,40.429c0-2.938,0-4.039-0.209-5.977h3.303v5.138h0.105c1.204-2.988,3.458-5.766,6.865-5.766
|
||||
c0.786,0,1.729,0.157,2.306,0.313v3.461c-0.684-0.21-1.572-0.316-2.411-0.316c-5.239,0-6.654,5.868-6.654,10.692v13.207h-3.302
|
||||
V40.429H82.559z"/>
|
||||
<path fill="#E31837" d="M126.006,28.688c-2.309-1.207-5.609-1.572-8.176-1.572c-9.487,0-14.833,6.709-14.833,15.774
|
||||
c0,9.224,5.189,15.775,14.833,15.775c2.409,0,6.077-0.313,8.176-1.572l0.205,3.145c-1.991,1.205-6.076,1.57-8.381,1.57
|
||||
c-11.532,0-18.449-7.598-18.449-18.918c0-11.109,7.128-18.919,18.449-18.919c2.147,0,6.498,0.366,8.381,1.363L126.006,28.688z"/>
|
||||
<path fill="#E31837" d="M146.998,24.6h4.087l14.514,36.582h-3.772l-3.93-9.802h-18.447l-3.93,9.802h-3.51L146.998,24.6z
|
||||
M148.779,28.061l-7.967,20.175h15.88L148.779,28.061z"/>
|
||||
<path fill="#E31837" d="M171.544,24.6h9.065c13.104,0,18.291,7.547,18.291,18.239c0,13.258-8.855,18.343-20.963,18.343h-6.393
|
||||
L171.544,24.6L171.544,24.6z M175.161,58.034h2.986c10.375,0,17.138-4.192,17.138-15.406c0-11.162-6.655-14.883-14.832-14.883
|
||||
h-5.292V58.034L175.161,58.034z"/>
|
||||
</g>
|
||||
<path d="M201.269,24.446h-0.989V23.9h2.574v0.546h-0.993v2.679h-0.592V24.446L201.269,24.446z M203.611,23.901h0.917l0.843,2.182
|
||||
l0.825-2.182h0.917v3.226h-0.589v-2.464h-0.013l-0.909,2.464h-0.481l-0.905-2.464h-0.014v2.464h-0.591V23.901L203.611,23.901z"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 7.3 KiB |
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<!-- Creator: CorelDRAW -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="210mm" height="50mm" style="shape-rendering:geometricPrecision; text-rendering:geometricPrecision; image-rendering:optimizeQuality; fill-rule:evenodd; clip-rule:evenodd"
|
||||
viewBox="0 0 210 50">
|
||||
<defs>
|
||||
<style type="text/css">
|
||||
<![CDATA[
|
||||
.fil0 {fill:#009999}
|
||||
]]>
|
||||
</style>
|
||||
</defs>
|
||||
<g id="Ebene_x0020_1">
|
||||
<metadata id="CorelCorpID_0Corel-Layer"/>
|
||||
<path class="fil0" d="M200.121 10.3466l0 5.8289c-3.0198,-1.14 -5.7084,-1.7164 -8.0615,-1.7164 -1.3938,0 -2.5037,0.2581 -3.3382,0.7571 -0.8346,0.5033 -1.2605,1.1228 -1.2605,1.8541 0,0.9722 0.9421,1.8368 2.8392,2.6112l5.4805 2.6671c4.4309,2.1122 6.6291,4.9169 6.6291,8.4401 0,2.9295 -1.1658,5.2654 -3.5189,6.9947 -2.3359,1.7466 -5.4805,2.6112 -9.3951,2.6112 -1.8068,0 -3.4285,-0.0774 -4.8696,-0.2409 -1.4411,-0.1548 -3.0973,-0.4732 -4.9342,-0.9292l0 -6.0999c3.3683,1.14 6.4355,1.7164 9.1972,1.7164 3.2952,0 4.9342,-0.955 4.9342,-2.8822 0,-0.9593 -0.6711,-1.7336 -2.0347,-2.3402l-6.0871 -2.594c-2.2455,-1.0152 -3.9146,-2.2455 -5.0073,-3.7038 -1.0754,-1.4712 -1.6218,-3.1575 -1.6218,-5.0847 0,-2.6973 1.1357,-4.8697 3.3812,-6.5216 2.2628,-1.639 5.2655,-2.4606 8.9994,-2.4606 1.2131,0 2.6112,0.1075 4.1599,0.3054 1.5615,0.2108 3.0628,0.4689 4.5082,0.7873z"/>
|
||||
<path class="fil0" d="M27.7222 10.3466l0 5.8289c-3.0199,-1.14 -5.7042,-1.7164 -8.0573,-1.7164 -1.3981,0 -2.5036,0.2581 -3.3382,0.7571 -0.8345,0.5033 -1.2604,1.1228 -1.2604,1.8541 0,0.9722 0.955,1.8368 2.8521,2.6112l5.4805 2.6671c4.4136,2.1122 6.6162,4.9169 6.6162,8.4401 0,2.9295 -1.1701,5.2654 -3.506,6.9947 -2.3531,1.7466 -5.4805,2.6112 -9.408,2.6112 -1.8068,0 -3.4329,-0.0774 -4.874,-0.2409 -1.4411,-0.1548 -3.0801,-0.4732 -4.9298,-0.9292l0 -6.0999c3.3812,1.14 6.4484,1.7164 9.1929,1.7164 3.2952,0 4.9342,-0.955 4.9342,-2.8822 0,-0.9593 -0.6668,-1.7336 -2.0176,-2.3402l-6.087 -2.594c-2.2628,-1.0152 -3.9319,-2.2455 -5.0073,-3.7038 -1.0927,-1.4712 -1.6261,-3.1575 -1.6261,-5.0847 0,-2.6973 1.1271,-4.8697 3.3855,-6.5216 2.2456,-1.639 5.2525,-2.4606 8.9865,-2.4606 1.226,0 2.6069,0.1075 4.1727,0.3054 1.5487,0.2108 3.05,0.4689 4.4911,0.7873z"/>
|
||||
<polygon class="fil0" points="34.0028,9.8002 42.9291,9.8002 42.9291,39.8483 34.0028,39.8483 "/>
|
||||
<polygon class="fil0" points="71.6866,9.8002 71.6866,15.3539 58.4241,15.3539 58.4241,22.0173 69.9272,22.0173 69.9272,27.0246 58.4241,27.0246 58.4241,34.0194 71.9576,34.0194 71.9576,39.8483 49.8335,39.8483 49.8335,9.8002 "/>
|
||||
<polygon class="fil0" points="113.358,9.8002 113.358,39.8483 105.025,39.8483 105.025,20.0299 96.3789,40.1236 91.234,40.1236 82.9186,20.0299 82.9186,39.8483 76.8918,39.8483 76.8918,9.8002 87.7882,9.8002 95.226,28.1947 103.008,9.8002 "/>
|
||||
<polygon class="fil0" points="142.103,9.8002 142.103,15.3539 128.913,15.3539 128.913,22.0173 140.416,22.0173 140.416,27.0246 128.913,27.0246 128.913,34.0194 142.374,34.0194 142.374,39.8483 120.25,39.8483 120.25,9.8002 "/>
|
||||
<polygon class="fil0" points="173.424,9.8002 173.424,39.8483 163.956,39.8483 153.331,20.5762 153.331,39.8483 147.308,39.8483 147.308,9.8002 157.052,9.8002 167.402,28.7411 167.402,9.8002 "/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.2 KiB |
@@ -0,0 +1,122 @@
|
||||
*PADS-PCB*
|
||||
*PART*
|
||||
MH2 MountingHole:MountingHole_2.2mm_M2_Pad_Via
|
||||
FM2 Fiducial:Fiducial_1mm_Mask2mm
|
||||
C12 Capacitor_SMD:C_0603_1608Metric
|
||||
C9 Capacitor_SMD:C_0603_1608Metric
|
||||
FM3 Fiducial:Fiducial_1mm_Mask2mm
|
||||
C6 Capacitor_SMD:C_0603_1608Metric
|
||||
R2 Resistor_SMD:R_0603_1608Metric
|
||||
C11 Capacitor_SMD:C_0603_1608Metric
|
||||
J1 Connector_USB:USB_C_Receptacle_GCT_USB4085
|
||||
J3 Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Horizontal
|
||||
MH4 MountingHole:MountingHole_2.2mm_M2_Pad_Via
|
||||
U3 Package_QFP:LQFP-48_7x7mm_P0.5mm
|
||||
R8 Resistor_SMD:R_0603_1608Metric
|
||||
J2 Connector:Tag-Connect_TC2030-IDC-FP_2x03_P1.27mm_Vertical
|
||||
R6 Resistor_SMD:R_0603_1608Metric
|
||||
R4 Resistor_SMD:R_0603_1608Metric
|
||||
R7 Resistor_SMD:R_0603_1608Metric
|
||||
C4 Capacitor_SMD:C_0805_2012Metric
|
||||
C10 Capacitor_SMD:C_0603_1608Metric
|
||||
C3 Capacitor_SMD:C_0805_2012Metric
|
||||
FM1 Fiducial:Fiducial_1mm_Mask2mm
|
||||
X1 Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm
|
||||
R3 Resistor_SMD:R_0603_1608Metric
|
||||
MH1 MountingHole:MountingHole_2.2mm_M2_Pad_Via
|
||||
D1 Package_TO_SOT_SMD:SOT-23-6
|
||||
C1 Capacitor_SMD:C_0603_1608Metric
|
||||
U2 Package_SO:MSOP-10_3x3mm_P0.5mm
|
||||
C2 Capacitor_SMD:C_0603_1608Metric
|
||||
C5 Capacitor_SMD:C_0603_1608Metric
|
||||
C8 Capacitor_SMD:C_0603_1608Metric
|
||||
R1 Resistor_SMD:R_0603_1608Metric
|
||||
D3 LED_SMD:LED_0603_1608Metric
|
||||
U1 Package_TO_SOT_SMD:SOT-23-5
|
||||
C7 Capacitor_SMD:C_0805_2012Metric
|
||||
R5 Resistor_SMD:R_0603_1608Metric
|
||||
D2 LED_SMD:LED_0603_1608Metric
|
||||
MH3 MountingHole:MountingHole_2.2mm_M2_Pad_Via
|
||||
|
||||
*NET*
|
||||
*SIGNAL* +1V35
|
||||
C8.1 U3.48
|
||||
*SIGNAL* +3V3
|
||||
C4.1 C7.1 J2.1 J3.6 R8.1 U1.5 U3.6
|
||||
|
||||
*SIGNAL* +5V
|
||||
C2.1 C3.1 C5.1 R3.2 U1.1 U1.3 U2.7
|
||||
|
||||
*SIGNAL* +VUSB
|
||||
C1.1 D1.5 J1.A4 J1.A9 J1.B4 J1.B9 R3.1
|
||||
|
||||
*SIGNAL* /HFXIN
|
||||
C9.1 U3.11 X1.1
|
||||
*SIGNAL* /HFXOUT
|
||||
C10.1 U3.12 X1.3
|
||||
*SIGNAL* /I2C0.SCL
|
||||
J3.10 U3.19
|
||||
*SIGNAL* /I2C0.SDA
|
||||
J3.8 U3.18
|
||||
*SIGNAL* /LEDGK
|
||||
D3.1 R7.1
|
||||
*SIGNAL* /LEDRK
|
||||
D2.1 R6.1
|
||||
*SIGNAL* /NRST
|
||||
C12.1 J2.3 R8.2 U3.4
|
||||
*SIGNAL* /ROSC
|
||||
R4.1 U3.8
|
||||
*SIGNAL* /SPI0.CLK
|
||||
J3.1 U3.37
|
||||
*SIGNAL* /SPI0.CS0
|
||||
J3.4 U3.16
|
||||
*SIGNAL* /SPI0.MISO
|
||||
J3.2 U3.38
|
||||
*SIGNAL* /SPI0.MOSI
|
||||
J3.3 U3.36
|
||||
*SIGNAL* /SWCLK
|
||||
J2.4 U3.35
|
||||
*SIGNAL* /SWDIO
|
||||
J2.2 U3.34
|
||||
*SIGNAL* /TIMA0.CCP0
|
||||
J3.7 U3.24
|
||||
*SIGNAL* /TIMA0.CCP1
|
||||
J3.9 U3.23
|
||||
*SIGNAL* /TIMA1.CCP0
|
||||
D2.2 U3.14
|
||||
*SIGNAL* /TIMA1.CCP1
|
||||
D3.2 U3.15
|
||||
*SIGNAL* /UART0.NCTS
|
||||
U2.4 U3.29
|
||||
*SIGNAL* /UART0.NRTS
|
||||
U2.5 U3.30
|
||||
*SIGNAL* /UART0.RX
|
||||
U2.8 U3.2
|
||||
*SIGNAL* /UART0.TX
|
||||
U2.9 U3.1
|
||||
*SIGNAL* /UARTV3
|
||||
C6.1 U2.10
|
||||
*SIGNAL* /USB.D+
|
||||
D1.3 U2.1
|
||||
*SIGNAL* /USB.D-
|
||||
D1.1 U2.2
|
||||
*SIGNAL* /USBC.CC1
|
||||
J1.A5 R2.1
|
||||
*SIGNAL* /USBC.CC2
|
||||
J1.B5 R1.1
|
||||
*SIGNAL* /USBC.D+
|
||||
D1.4 J1.A6 J1.B6
|
||||
*SIGNAL* /USBC.D-
|
||||
D1.6 J1.A7 J1.B7
|
||||
*SIGNAL* /VREF+
|
||||
C11.2 U3.43
|
||||
*SIGNAL* /VREF-
|
||||
C11.1 R5.1 U3.39
|
||||
*SIGNAL* GND
|
||||
C1.2 C10.2 C12.2 C2.2 C3.2 C4.2 C5.2
|
||||
C6.2 C7.2 C8.2 C9.2 D1.2 J1.A1
|
||||
J1.A12 J1.B1 J1.B12 J1.S1 J2.5 J3.5
|
||||
MH1.1 MH2.1 MH3.1 MH4.1 R1.2 R2.2
|
||||
R4.2 R5.2 R6.2 R7.2 U1.2 U2.3
|
||||
U3.7 X1.2 X1.4
|
||||
*END*
|
||||
@@ -0,0 +1,17 @@
|
||||
"Reference","Qty","Value","Footprint","Datasheet","LCSC","Manufacturer Part Number"
|
||||
"C1,C2,C5,C6,C8,C11,C12","7","470n","Capacitor_SMD:C_0603_1608Metric","","C1623","CL10B474KA8NNNC"
|
||||
"C3,C4,C7","3","10u","Capacitor_SMD:C_0805_2012Metric","","C15850","CL21A106KAYNNNE"
|
||||
"C9,C10","2","18p","Capacitor_SMD:C_0603_1608Metric","","C1647","CL10C180JB8NNNC"
|
||||
"D1","1","USBLC6-2SC6","Package_TO_SOT_SMD:SOT-23-6","https://www.st.com/resource/en/datasheet/usblc6-2.pdf","C7519","USBLC6-2SC6"
|
||||
"D2","1","RED","LED_SMD:LED_0603_1608Metric","","C2286","KT-0603R"
|
||||
"D3","1","WHITE","LED_SMD:LED_0603_1608Metric","","C2290","KT-0603W"
|
||||
"J1","1","USB4085-GF-A","Connector_USB:USB_C_Receptacle_GCT_USB4085","https://www.usb.org/sites/default/files/documents/usb_type-c.zip","C7095263","USB4085-GF-A"
|
||||
"J3","1","PH-00834","Connector_PinHeader_2.54mm:PinHeader_2x05_P2.54mm_Horizontal","","C2685185","PH-00834"
|
||||
"R1,R2,R8","3","5k1","Resistor_SMD:R_0603_1608Metric","","C23186","0603WAF5101T5E"
|
||||
"R3,R5","2","0R","Resistor_SMD:R_0603_1608Metric","","C21189","0603WAF0000T5E"
|
||||
"R4","1","100k","Resistor_SMD:R_0603_1608Metric","","C25803","0603WAF1003T5E"
|
||||
"R6,R7","2","1k","Resistor_SMD:R_0603_1608Metric","","C21190","0603WAF1001T5E"
|
||||
"U1","1","SPX3819M5-L-3-3","Package_TO_SOT_SMD:SOT-23-5","https://www.exar.com/content/document.ashx?id=22106&languageid=1033&type=Datasheet&partnumber=SPX3819&filename=SPX3819.pdf&part=SPX3819","C9055","SPX3819M5-L-3-3/TR"
|
||||
"U2","1","CH340E","Package_SO:MSOP-10_3x3mm_P0.5mm","https://www.mpja.com/download/35227cpdata.pdf","C99652","CH340E"
|
||||
"U3","1","MSPM0G3507SPTR","Package_QFP:LQFP-48_7x7mm_P0.5mm","https://www.ti.com/lit/ds/symlink/mspm0g3507.pdf?ts=1747484513194&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FMSPM0G3507","C22362630","MSPM0G3507SPTR"
|
||||
"X1","1","8MHz","Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm","","C189764","AV08000301"
|
||||
|
@@ -28,9 +28,9 @@ def test_legal_pages_are_operator_not_faradworks_controller():
|
||||
assert "This Service is **not** operated by Faradworks, Inc." in terms
|
||||
|
||||
|
||||
def test_changelog_stamp_is_2_56_0_and_src_wins():
|
||||
def test_changelog_stamp_is_2_57_0_and_src_wins():
|
||||
text = (SRC / "changelog.md").read_text(encoding="utf-8")
|
||||
assert "## 2.56.0 — 2026-09-20" in text
|
||||
assert "## 2.57.0 — 2026-09-20" in text
|
||||
first = changelog_paths()[0]
|
||||
assert first.parts[-3:] == ("src", "frontend", "content") or first.name == "changelog.md"
|
||||
assert first == SRC / "changelog.md"
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
"""Native frontend package.json and backend requirements live under src."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
PKG = ROOT / "periscope" / "src" / "frontend" / "package.json"
|
||||
REQ = ROOT / "periscope" / "src" / "backend" / "requirements.txt"
|
||||
LOCK = ROOT / "periscope" / "src" / "frontend" / "package-lock.json"
|
||||
COMPONENTS = ROOT / "periscope" / "src" / "frontend" / "components.json"
|
||||
FE_DOCKER = ROOT / "periscope" / "src" / "frontend" / "dockerfile"
|
||||
BE_DOCKER = ROOT / "periscope" / "src" / "backend" / "Dockerfile"
|
||||
DOCKERIGNORE = ROOT / ".dockerignore"
|
||||
|
||||
|
||||
def test_package_json_is_periscope_web():
|
||||
text = PKG.read_text(encoding="utf-8")
|
||||
assert '"name": "periscope-web"' in text
|
||||
assert '"version": "2.57.0"' in text
|
||||
assert "Native Periscope overlay" not in text[:400]
|
||||
assert LOCK.is_file()
|
||||
lock = LOCK.read_text(encoding="utf-8")
|
||||
assert '"name": "periscope-web"' in lock
|
||||
|
||||
|
||||
def test_components_json_is_src():
|
||||
text = COMPONENTS.read_text(encoding="utf-8")
|
||||
assert "base-nova" in text
|
||||
assert '"css": "src/app/globals.css"' in text
|
||||
|
||||
|
||||
def test_requirements_are_src_and_deepseek_first():
|
||||
text = REQ.read_text(encoding="utf-8")
|
||||
assert "fastapi>=" in text
|
||||
assert "openai>=" in text
|
||||
assert "PyJWT" in text
|
||||
lines = [ln.strip() for ln in text.splitlines() if ln.strip() and not ln.startswith("#")]
|
||||
assert lines[0].startswith("fastapi")
|
||||
|
||||
|
||||
def test_docker_installs_from_src():
|
||||
fe = FE_DOCKER.read_text(encoding="utf-8")
|
||||
be = BE_DOCKER.read_text(encoding="utf-8")
|
||||
assert "COPY periscope/src/frontend/package.json" in fe
|
||||
assert "periscope/src/frontend/package-lock.json" in fe
|
||||
assert "COPY periscope/src/backend/requirements*.txt" in be
|
||||
ignore = DOCKERIGNORE.read_text(encoding="utf-8")
|
||||
assert "faradworks-logo-white.png" in ignore
|
||||
assert "power-tree.gif" in ignore
|
||||
assert "next.svg" in ignore
|
||||
|
||||
|
||||
def test_eda_logos_and_examples_are_src():
|
||||
logos = ROOT / "periscope" / "src" / "frontend" / "public" / "eda-logos"
|
||||
examples = ROOT / "periscope" / "src" / "frontend" / "public" / "examples"
|
||||
assert (logos / "kicad.svg").is_file()
|
||||
assert (examples / "TI-MSP-KICAD9-TUTORIAL.asc").is_file()
|
||||
assert not (ROOT / "periscope" / "src" / "frontend" / "public" / "faradworks-logo-white.png").exists()
|
||||
assert not (ROOT / "periscope" / "src" / "frontend" / "public" / "power-tree.gif").exists()
|
||||