From 09a4741ce7f4f4364e7c2dd0901a8ba66439f8b1 Mon Sep 17 00:00:00 2001 From: Rousan Ali Date: Sun, 19 Jul 2026 13:23:23 +0530 Subject: [PATCH 1/2] style(landing): pastel Tailwind palette + multi-color logo; add .npmrc; exempt non-package changes from release MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Landing: replace the terra-cotta accent with a soft violet accent (Tailwind violet-500/600/400), and make the logo mark genuinely multi-pastel (teal/amber/rose lanes fanning from a violet node) — reinforcing the 'many parallel' idea and distinct from the ccal look. Favicon updated to match. - Add repo-root .npmrc (registry=https://registry.npmjs.org/) so installs and the lockfile stay on public npm regardless of a global corp mirror. - release.yml: add paths-ignore so landing/docs/tooling/markdown-only merges to main deploy the site without forcing an npm release; update README's release contract to match. --- .github/workflows/release.yml | 19 +++++++++++--- .npmrc | 7 ++++++ README.md | 2 +- apps/landing/public/favicon.svg | 18 ++++++-------- apps/landing/src/index.css | 37 ++++++++++++++-------------- apps/landing/src/sections/Footer.tsx | 2 +- apps/landing/src/sections/Hero.tsx | 2 +- apps/landing/src/sections/Nav.tsx | 2 +- apps/landing/src/ui.tsx | 27 ++++++++++---------- 9 files changed, 68 insertions(+), 48 deletions(-) create mode 100644 .npmrc diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7745385..e252246 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,15 +1,28 @@ name: Release -# Every push to main (i.e. every merged PR) must produce a new release. +# Every push to main that changes PACKAGE content must produce a new release. # The release version is whatever sits in npm/package.json — the PR is # responsible for bumping it. If that version was already released (its # vX.Y.Z tag already exists), the workflow FAILS, prompting a version bump, -# because a merge to main without a version bump is a mistake under this -# contract. +# because a merge to main with package changes but no version bump is a mistake +# under this contract. +# +# The `paths-ignore` below exempts non-package changes (the landing site, docs, +# repo tooling, markdown) — those ship to main without an npm release, so a +# docs/site iteration doesn't force a version bump. If a push touches ONLY +# ignored paths, this workflow doesn't run; touch any non-ignored file and it +# does (and then demands a bump). on: push: branches: [main] + paths-ignore: + - 'apps/landing/**' + - 'docs/**' + - '.npmrc' + - '**/*.md' + - '.github/workflows/deploy-landing.yml' + - '.github/workflows/release.yml' # Never run two releases at once; let an in-flight one finish. concurrency: diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..c96f1aa --- /dev/null +++ b/.npmrc @@ -0,0 +1,7 @@ +# Pin this repo to the public npm registry, regardless of any global ~/.npmrc +# (e.g. a corporate Artifactory mirror). This keeps `pnpm install` — and the +# resolution URLs it writes into pnpm-lock.yaml — pointed at registry.npmjs.org, +# so the lockfile stays installable on CI and never gets a private-registry host +# baked in. (In an .npmrc the key is `registry=`; the equivalent env var is +# npm_config_registry.) +registry=https://registry.npmjs.org/ diff --git a/README.md b/README.md index 5ad3f6a..5b9132d 100644 --- a/README.md +++ b/README.md @@ -114,7 +114,7 @@ Read commands take `--porcelain` for stable JSON; mutations echo the resulting o ## Release -Releases are **CI-driven**: bump `npm/package.json`'s `"version"` in a PR and merge to `main` — `.github/workflows/release.yml` runs the check pipeline, `npm publish`es from `npm/` (auth via the `NPM_TOKEN` secret), tags `vX.Y.Z`, and creates a GitHub Release. **Every merge to `main` must bump the version** or the run fails on the existing-tag guard. `pnpm release` (`scripts/release.sh`) remains a local fallback for emergencies. CI (`.github/workflows/ci.yml`) runs typecheck/lint/test/build on every PR. +Releases are **CI-driven**: bump `npm/package.json`'s `"version"` in a PR and merge to `main` — `.github/workflows/release.yml` runs the check pipeline, `npm publish`es from `npm/` (auth via the `NPM_TOKEN` secret), tags `vX.Y.Z`, and creates a GitHub Release. **Every merge to `main` that changes package content must bump the version** or the run fails on the existing-tag guard. Merges touching only non-package paths — the landing site (`apps/landing/**`), `docs/**`, markdown, or repo tooling — are exempt via the workflow's `paths-ignore`, so a docs/site iteration ships to `main` (and redeploys the site) without an npm release. `pnpm release` (`scripts/release.sh`) remains a local fallback for emergencies. CI (`.github/workflows/ci.yml`) runs typecheck/lint/test/build on every PR. See **[docs/release.md](docs/release.md)** for the full runbook, the `NPM_TOKEN` setup, and every gotcha caught the hard way (npm name similarity, fresh-scope propagation lag, etc.). diff --git a/apps/landing/public/favicon.svg b/apps/landing/public/favicon.svg index 6daedc1..19e6e87 100644 --- a/apps/landing/public/favicon.svg +++ b/apps/landing/public/favicon.svg @@ -1,13 +1,11 @@ - - - - - - - - - - + + + + + + + + diff --git a/apps/landing/src/index.css b/apps/landing/src/index.css index c986f80..2e11dbf 100644 --- a/apps/landing/src/index.css +++ b/apps/landing/src/index.css @@ -9,14 +9,15 @@ @custom-variant dark (&:where([data-theme='dark'], [data-theme='dark'] *)); /* - * Semantic design tokens — a calm, mostly-monochrome grayscale system with a - * single warm terra-cotta accent, in the spirit of a documentation site (and - * the sibling `ccal` project). Emphasis comes from ink weight and gray steps; - * the accent is used sparingly for the logo, one hero phrase, prompts, links, - * icon chips, and the primary button. Light values are the base; the dark - * override block below swaps them when . Exposing them - * through `@theme inline` lets us use them as Tailwind color utilities - * (e.g. `bg-surface`, `text-muted`, `border-line`, `text-accent`). + * Semantic design tokens — a calm, mostly-monochrome grayscale base with a soft + * pastel accent drawn from the Tailwind palette (violet for the UI accent; the + * logo itself is multi-pastel — teal/amber/rose/violet). Emphasis comes from ink + * weight and gray steps; the accent is used sparingly for the logo, one hero + * phrase, prompts, links, icon chips, and the primary button. Light values are + * the base; the dark override block below swaps them when + * . Exposing them through `@theme inline` lets us use + * them as Tailwind color utilities (e.g. `bg-surface`, `text-muted`, + * `border-line`, `text-accent`). * * Token roles: `--accent` the terra-cotta accent (prompts, icons, dots); * `--accent-ink` a readable accent for links; `--accent-soft` a faint accent @@ -35,13 +36,13 @@ --text-soft: #3f3f46; --muted: #71717a; --faint: #a1a1aa; - --accent: #c0562f; - --accent-ink: #b04a26; - --accent-2: #c0562f; - --accent-soft: rgba(192, 86, 47, 0.1); + --accent: #8b5cf6; /* violet-500 */ + --accent-ink: #7c3aed; /* violet-600 (readable link on white) */ + --accent-2: #8b5cf6; + --accent-soft: rgba(139, 92, 246, 0.12); /* violet-500 @ 12% */ --accent-strong: #18181b; --on-accent: #ffffff; - --cta: #c0562f; + --cta: #7c3aed; /* violet-600 */ --on-cta: #ffffff; --amber: #71717a; --code-bg: #f6f6f7; @@ -58,13 +59,13 @@ --text-soft: #c8c8ce; --muted: #9a9aa4; --faint: #63636d; - --accent: #e0793f; - --accent-ink: #ea8a5a; - --accent-2: #e0793f; - --accent-soft: rgba(224, 121, 63, 0.15); + --accent: #a78bfa; /* violet-400 (brighter on the dark canvas) */ + --accent-ink: #c4b5fd; /* violet-300 */ + --accent-2: #a78bfa; + --accent-soft: rgba(167, 139, 250, 0.16); /* violet-400 @ 16% */ --accent-strong: #fafafa; --on-accent: #18181b; - --cta: #c0562f; + --cta: #7c3aed; /* violet-600 */ --on-cta: #ffffff; --amber: #a1a1aa; --code-bg: #0d0d11; diff --git a/apps/landing/src/sections/Footer.tsx b/apps/landing/src/sections/Footer.tsx index 2b06978..edaf209 100644 --- a/apps/landing/src/sections/Footer.tsx +++ b/apps/landing/src/sections/Footer.tsx @@ -33,7 +33,7 @@ export function Footer() {
- + mx

diff --git a/apps/landing/src/sections/Hero.tsx b/apps/landing/src/sections/Hero.tsx index c11d322..d1ec9e1 100644 --- a/apps/landing/src/sections/Hero.tsx +++ b/apps/landing/src/sections/Hero.tsx @@ -14,7 +14,7 @@ export function Hero() {

- +