chore: import upstream snapshot with attribution
CI / Migrate Dev DB (push) Has been skipped
CI / Detect Version (push) Has been cancelled
CI / Migrate DB (push) Has been cancelled
CI / Build Dev ECR (./docker/app.Dockerfile, ECR_APP) (push) Has been cancelled
CI / Build Dev ECR (./docker/db.Dockerfile, ECR_MIGRATIONS) (push) Has been cancelled
CI / Build Dev ECR (./docker/pii.Dockerfile, ECR_PII) (push) Has been cancelled
CI / Build Dev ECR (./docker/realtime.Dockerfile, ECR_REALTIME) (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
CI / Build AMD64 (./docker/app.Dockerfile, ECR_APP, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build AMD64 (./docker/db.Dockerfile, ECR_MIGRATIONS, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (./docker/pii.Dockerfile, ECR_PII, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (./docker/realtime.Dockerfile, ECR_REALTIME, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/app.Dockerfile, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/db.Dockerfile, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/pii.Dockerfile, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (./docker/realtime.Dockerfile, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Test and Build (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled

This commit is contained in:
wehub-resource-sync
2026-07-13 13:20:55 +08:00
commit d25d482dc2
13754 changed files with 4996608 additions and 0 deletions
@@ -0,0 +1,380 @@
/**
* One shared 16s timeline of four 4s route phases, a precomputed shuffle
* so the routing feels varied without true randomness:
*
* phase 0 (0%25%): Zendesk -> Slack
* phase 1 (25%50%): Sheets -> Jira
* phase 2 (50%75%): Gmail -> Salesforce
* phase 3 (75%100%): Zendesk -> Jira
*
* Within each 4s phase: the source tag's white filled state crossfades
* in over its outline (00.5s), a white pulse falls down its wire
* (0.41.2s), dwells in the router while the hub blooms (1.22s),
* travels out to the destination (22.8s), the destination tag's fill
* crossfades in as the route connects (2.73.1s), both hold (to 3.6s),
* then fade back to outlined (to 4s).
*
* Tag fill overlays rest transparent (opacity-0, set inline in the TSX)
* so under prefers-reduced-motion — where every animation here is
* disabled — all six tags render outlined and static.
*/
.pulse {
stroke-dasharray: 0.28 1;
stroke-dashoffset: 0.28;
opacity: 0;
}
.pulseInA {
animation: ops-pulse-in-a 16s linear infinite;
}
@keyframes ops-pulse-in-a {
0%,
2.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
2.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
7.5% {
stroke-dashoffset: -1;
opacity: 1;
}
7.6%,
77.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
77.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
82.5% {
stroke-dashoffset: -1;
opacity: 1;
}
82.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.pulseInB {
animation: ops-pulse-in-b 16s linear infinite;
}
@keyframes ops-pulse-in-b {
0%,
27.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
27.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
32.5% {
stroke-dashoffset: -1;
opacity: 1;
}
32.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.pulseInC {
animation: ops-pulse-in-c 16s linear infinite;
}
@keyframes ops-pulse-in-c {
0%,
52.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
52.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
57.5% {
stroke-dashoffset: -1;
opacity: 1;
}
57.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.pulseOutA {
animation: ops-pulse-out-a 16s linear infinite;
}
@keyframes ops-pulse-out-a {
0%,
12.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
12.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
17.5% {
stroke-dashoffset: -1;
opacity: 1;
}
17.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.pulseOutB {
animation: ops-pulse-out-b 16s linear infinite;
}
@keyframes ops-pulse-out-b {
0%,
37.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
37.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
42.5% {
stroke-dashoffset: -1;
opacity: 1;
}
42.6%,
87.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
87.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
92.5% {
stroke-dashoffset: -1;
opacity: 1;
}
92.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.pulseOutC {
animation: ops-pulse-out-c 16s linear infinite;
}
@keyframes ops-pulse-out-c {
0%,
62.4% {
stroke-dashoffset: 0.28;
opacity: 0;
}
62.5% {
stroke-dashoffset: 0.28;
opacity: 1;
}
67.5% {
stroke-dashoffset: -1;
opacity: 1;
}
67.6%,
100% {
stroke-dashoffset: -1;
opacity: 0;
}
}
.fillSrcA {
animation: ops-fill-src-a 16s linear infinite;
}
@keyframes ops-fill-src-a {
0% {
opacity: 0;
}
3.1% {
opacity: 1;
}
22.5% {
opacity: 1;
}
24.9%,
75% {
opacity: 0;
}
78.1% {
opacity: 1;
}
97.5% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.fillSrcB {
animation: ops-fill-src-b 16s linear infinite;
}
@keyframes ops-fill-src-b {
0%,
25% {
opacity: 0;
}
28.1% {
opacity: 1;
}
47.5% {
opacity: 1;
}
49.9%,
100% {
opacity: 0;
}
}
.fillSrcC {
animation: ops-fill-src-c 16s linear infinite;
}
@keyframes ops-fill-src-c {
0%,
50% {
opacity: 0;
}
53.1% {
opacity: 1;
}
72.5% {
opacity: 1;
}
74.9%,
100% {
opacity: 0;
}
}
.fillDstA {
animation: ops-fill-dst-a 16s linear infinite;
}
@keyframes ops-fill-dst-a {
0%,
16.9% {
opacity: 0;
}
19.4% {
opacity: 1;
}
22.5% {
opacity: 1;
}
24.9%,
100% {
opacity: 0;
}
}
.fillDstB {
animation: ops-fill-dst-b 16s linear infinite;
}
@keyframes ops-fill-dst-b {
0%,
41.9% {
opacity: 0;
}
44.4% {
opacity: 1;
}
47.5% {
opacity: 1;
}
49.9%,
91.9% {
opacity: 0;
}
94.4% {
opacity: 1;
}
97.5% {
opacity: 1;
}
100% {
opacity: 0;
}
}
.fillDstC {
animation: ops-fill-dst-c 16s linear infinite;
}
@keyframes ops-fill-dst-c {
0%,
66.9% {
opacity: 0;
}
69.4% {
opacity: 1;
}
72.5% {
opacity: 1;
}
74.9%,
100% {
opacity: 0;
}
}
.routerBloom {
animation: ops-router-bloom 4s linear infinite;
}
@keyframes ops-router-bloom {
0%,
30% {
box-shadow: 0 0 0 0 color-mix(in srgb, var(--text-muted-inverse) 45%, transparent);
}
50% {
box-shadow: 0 0 0 6px color-mix(in srgb, var(--text-muted-inverse) 0%, transparent);
}
100% {
box-shadow: 0 0 0 0 color-mix(in srgb, var(--text-muted-inverse) 0%, transparent);
}
}
@media (prefers-reduced-motion: reduce) {
.pulseInA,
.pulseInB,
.pulseInC,
.pulseOutA,
.pulseOutB,
.pulseOutC,
.fillSrcA,
.fillSrcB,
.fillSrcC,
.fillDstA,
.fillDstB,
.fillDstC,
.routerBloom {
animation: none;
}
}