merge: dev → main — favicon + logo-everywhere + OG banner + URL replace#11
Merged
Conversation
Captures the v2 architecture from workflow/SESSION-WORKFLOW.md in the form Claude Code reads at session start: - Names: [portfolio-website]-local (athena tmux) and -cloud (Anthropic) - Worktree setup commands (one-time per machine) - Cloud-for-what vs local-for-what split - Cross-session handoff via tasks/DEVLOG.md top-3 read - /remote-control correction (not /rc — that's hallucinated) - PreCompact hook reference (already in .claude/settings.json) - Pro plan 5hr rolling limit warning - Reference to ./workflow/CLAUDE-CODE-WORKFLOW-REPORT.md 30 insertions, 1 deletion. Other projects (openclaw-dashboard, hermes-desktop-oauth) got the same block in their own CLAUDE.md (untracked changes there — no commits yet).
User correction (2026-06-30): dual-session model is about the claude/local and claude/cloud BRANCHES, not separate worktree directories. The worktree pattern requires users to be in multiple directories simultaneously, which is more complexity than the user asked for. Reverts the worktree-specific section that I added in the previous commit, replaces with a branches-as-lineage-markers model: - claude/local and claude/cloud are branch markers (not dirs) - Each session works on sub-branches off its lineage - feat/<task>-local → claude/local → dev - feat/<task>-cloud → claude/cloud → dev - One session at a time (no worktree split, no parallel write) - When both sessions need to write same day: sub-branches, then merge Also updates workflow references to say 'lineage branches' instead of 'worktrees'. Local file ~/dev-shared/workflow/SESSION-WORKFLOW.md was also updated out-of-band (workflow dir is not a git repo).
Marker commit to exercise the dual-session branch discipline: work happens on feat/<task> sub-branches off claude/local, then merges to claude/local → dev.
Marker commit to exercise the dual-session branch discipline: work happens on feat/<task> sub-branches off claude/cloud, then merges to claude/cloud → dev.
Conflict in CLAUDE.md resolved by keeping both session markers (local + cloud smoke-test comments at end of file). Merge chain on dev: 7913892 feat/claude-local-smoke 8daabc3 merge → claude/local ec30473 feat/claude-cloud-smoke 0068550 merge → claude/cloud a4c3de6 merge → dev (local) (this commit) merge → dev (cloud)
… browser
User correction (2026-06-30): my mental model had the cloud session
wrong. Re-reading Claude Code docs:
- 'Remote Control' = relay to a CLI process on YOUR machine. Started
with 'claude --remote-control' or 'claude remote-control'. Full local
FS access.
- 'Claude Code on the web' = a SEPARATE thing. Anthropic cloud
container. Started from https://claude.ai/code → Code tab → New
session. Only sees the GitHub repo. No local FS, no Docker, no
'.env.local', no local servers.
The 'cloud session' the user described is the second one. My CLAUDE.md
was conflating the two (suggested 'claude remote-control --name' for
cloud, which would have created a relay session on athena with a
'cloud' name, not an actual cloud container).
Fixes:
- Remove all 'worktree' references (reverted in earlier commit but
a few references had slipped back in)
- Add explicit 'How to start the cloud session' instructions
(browser, not CLI)
- Add explicit 'What cloud session sees / cannot do' list
- Add 'vercel deploy: no auth' warning to local-vs-cloud table
- Add 'no local FS access' note to every cloud row
- Replace the 'worktree add' one-time setup with the simple
'git branch claude/{local,cloud} dev' setup
Local file ~/dev-shared/workflow/SESSION-WORKFLOW.md also updated
out-of-band (workflow dir is not a git repo).
…rted) Conflict resolution: kept the new descriptive session block (local + cloud with filesystem/process/branch details) over the older compact version. Kept the new workflow description that mentions 'local relay + Anthropic cloud'.
…tion VK monogram reveal in Cormorant Garamond italic, liquid-glass card, dot-grid bg, green progress bar — matches portfolio design system. Removes instant meta refresh; fade-to-black at 2150ms, navigate at 2550ms. Respects prefers-reduced-motion (instant redirect). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ce animation" This reverts commit 50bc90d.
…EPORT.md The report file was cleaned up; CLAUDE.md symlink list should not point to a file that no longer exists. Remaining workflow references point to files that still exist in ~/dev-shared/workflow/.
Source: prototypes/assets/logo.png (1254×1254 glass VK monogram, approved by Vishal). Derived without redrawing. All assets in prototypes/assets/: favicon.ico 7KB ICO container (16+32+48px) — legacy browsers favicon.svg 9KB PNG-in-SVG + dark-mode media query — modern browsers favicon-32x32.png 2KB PNG fallback favicon-16x16.png 1KB PNG fallback apple-touch-icon.png 22KB 180×180 solid bg (#080808), 10% padding — iOS icon-192.png 30KB PWA / Android icon-512.png 192KB PWA splash / desktop shortcuts icon-mask.png 155KB 512×512 maskable (10% safe-zone padding) — Android site.webmanifest 551B PWA manifest (JSON validated) Root favicon.ico copy at / for browser auto-request at domain root. Head block wired to all 7 HTML files. Relative paths throughout (L-060): prototypes/*.html → assets/... index.html → prototypes/assets/... Playwright: 6/6 prototype pages confirmed tags present + link hrefs resolve. index.html confirmed via grep (meta-refresh redirects before DOM eval). htmlhint: 8 files, 0 errors. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- tasks/kickoff-favicon.md: full kickoff for converting assets/logo.png into a working multi-format favicon. Covers 7 HTML files, 7 derived assets, dark-mode SVG variant, webmanifest, theme-color meta. Dispatched by Vishal 2026-06-30. - tasks/todo.md: Phase 0 'Brand assets' section now has 3 sub-place topbar-logo tasks identified: 1. Topbar pill (left) — scroll-responsive wordmark→logo fade 2. Profile icon (top right pill) — replace 'VK' initials with logo SVG 3. Open Graph image (1200×630) for social share previews Also updated favicon task status to 'agent dispatched'.
Agent completed favicon task on feat/favicon (83c8ecc) + tasks updates (e5e01a2, 7ddc388). Audit (2026-06-30, Hermes): - All 7 HTML files updated with favicon <head> block - All 9 derived assets in place (favicon.ico 7KB, favicon.svg 9KB, apple-touch-icon.png 22KB, icon-192/512/mask.png, site.webmanifest 551B) - site.webmanifest valid JSON, 3 icons including maskable - favicon.svg has light media query (default = dark) for theme adaptation - All asset paths are relative (per L-060 cross-backend rule) - All 10 favicon URLs return HTTP 200 with correct content-types - All 28 link hrefs resolve to real files No code-level issues. Visual QA requires user eyes (L-066). User approved. Per branch discipline: keep feat/favicon branch on remote, no delete.
User reported (2026-06-30) deployed favicon has visible black borders. Prior agent's favicon work (commit 83c8ecc, merged f1fbaf7) shipped assets derived from a 1254x1254 logo with 64-204px black borders + dark glass shadow that extends to canvas edges. V/K not legible at 16x16. Visual QA was skipped during the prior audit — L-066 in lessons.md called this out and I didn't enforce. Per kickoff, the new fix agent must visually verify at 16/32/180/192/512 before committing. Kickoff: tasks/kickoff-favicon-borders-fix.md - Crop new logo (1108x1122) to V/K content (1090x985) - Add 5% padding, square to 1024x1024 - Composite on clean background (white recommended) - Re-derive all 9 favicon assets - Visual QA via Playwright before commit - Mandatory DEVLOG entry (don't skip) Branch: fix/favicon-borders off dev Not yet dispatched. Vishal will dispatch.
…cation Per L-066 (vision_analyze empty on local paths), the next-best option is to render previews and have the user eyeball them. Trusting the bytes was the wrong call for favicon work — the V/K was unreadable at 16x16 due to dark glass shadow extending to canvas edges. Re-derivation work queued in todo.md + kickoff-favicon-borders-fix.md.
Replace previous favicon set (had visible border/black fringe) with new 1108×1122 source logo processed at 1.6× contrast + 1.3× brightness. Regenerates ico/svg/png/apple-touch/192/512/mask + logo-cropped.png source. All sizes verified readable at 16px. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
fix(favicon): regen all assets with enhanced contrast (option C)
Vishal asked for all 7 sub-places from Brand assets section of todo.md in one coherent design pass. Kickoff covers: 1. topbar pill scroll-swap 2. profile icon (right pill) 3. OG image + meta tags (all 7 HTML files) 4. hero identity widget 5. about page photo block 6. resume.html header 7. /me private auth card Uses existing prototypes/assets/logo.png as source. Generates 3 size derivatives (128/256/512) + og-image.png (1200x630). Visual QA required before commit per L-068. Branch: feat/logo-everywhere off dev.
- Sub-place 1: topbar pill scroll-swap — wordmark fades out, logo mark fades in past 80px scroll, pill shrinks (rAF-debounced scroll listener) - Sub-place 2: profile icon (right pill) — VK text → logo fills circle, glass ring border, no gradient background - Sub-place 3: OG image (1200×630) generated + og:image/twitter:card meta tags added to all 7 HTML files - Sub-place 4: hero identity widget — person SVG replaced with logo mark - Sub-place 6: resume.html header — small logo mark above name - Sub-place 7: /me auth card — VK gradient circle → logo with glass ring - Assets: logo-128.png, logo-256.png, logo-512.png, og-image.png added - Sub-place 5 (about photo block) removed — did not look good there Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(portfolio): add glass VK logo to 6 places
Vishal's review of the prior og-image (2026-06-30): - Too dark, wants lighter background matching site - Doesn't look like a widget (should be widget-block style) - Plain 'Vishal Katariya' text — wants calligraphic Cormorant Garamond name - Generic sans for role labels — wants DM Mono / JetBrains Mono - Only one URL: vishalkatariya.dev (wrong — site is on vishal-katariya.com) - 'Infrastructur' label truncated in current banner Kickoff: tasks/kickoff-og-banner-rebuild.md - New og-image.png (1200x630) combining IDENTITY + CONTACT widget treatment - Glass widget-block with dot-matrix backdrop - Calligraphic V/K name + monospaced pills + green status + 3 contact lines - Global vishalkatariya.dev → vishal-katariya.com in 13 files - Visual QA via Playwright HTML composition (Approach B for typography) - Branch: feat/og-banner-rebuild off dev
Vishal asked (2026-06-30) to defer site opening latency work but track it in todo. Currently ~400ms cold (Vercel analytics), goal <200ms. Three layered causes: - 308 redirect bare→www (~150ms, first visit only) - meta refresh + JS redirect in index.html (~200ms, every visit) - 369KB single-file payload (~200-300ms cold) Priority order (cheapest first): 1. Eliminate meta refresh redirect (saves 200-300ms) 2. Cache-Control: max-age=300 on portfolio-combined.html 3. Preconnect + dns-prefetch 4. Minify HTML 5. Lazy-load 137 inline SVG icons 6. Extract + minify CSS Realistic target after #1-#4: 150-200ms cold, 50-100ms warm. Long-term solved by Phase 1 SvelteKit migration. Decisions needed before starting: option A vs B, update cadence, URL pattern change.
…vishalkatariya.dev domain Rebuild prototypes/assets/og-image.png via Playwright HTML render (Approach B) instead of Pillow, matching the live site's glass-widget aesthetic: real glass-bg/border/shadow tokens, Cormorant Garamond script + Syne 800 wordmark, status pill, skill pills, contact pills. Iterated with Vishal across 6 rounds of visual sign-off before commit (L-068). Replace vishalkatariya.dev -> vishal-katariya.com across all live-facing surfaces (rendered HTML pages, README, CONTEXT.md, architecture docs) since that's the actual live Vercel domain. Left tasks/todo.md, tasks/DEVLOG.md, and tasks/design-dual-deployment.md untouched — they document the real registrar redirect-loop issue specific to the .dev domain, not a live link. Added missing og:url meta tags across all 7 live HTML files (kickoff assumed they existed from the favicon task; they didn't). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
feat(portfolio): rebuild OG banner + replace vishalkatariya.dev domain
After feat/og-banner-rebuild merged to dev via PR #10 (fda821e), the work is no longer in flight. Per branch discipline (L-067, one batch delete at session end), cleaning up: - 4 kickoff files (tasks/kickoff-{favicon,favicon-borders-fix, logo-everywhere,og-banner-rebuild}.md) — agents have already completed their work, kickoffs are no longer needed - 1 agent temp file (prototypes/assets/_og-template.html) — used by the OG banner agent to render the new og-image.png, never committed to git, just removed from working tree - feat/og-banner-rebuild branch (local + remote) — work is merged Kickoff history is preserved in git log (commits 3e90314, c0d1620, etc.) so the rationale is still accessible via git history if needed.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR merges the dev branch to main, shipping the following work that's been reviewed and approved via individual PRs:
Commits in this PR (30 total)
PR #8 — favicon fix
PR #9 — logo everywhere
PR #10 — OG banner rebuild
Cleanup
Dual-session + dual-session doc
Files changed
34 files changed, 426 insertions, 33 deletions
Key new assets:
Audit notes (Hermes, 2026-06-30)
✅ All 9 favicon assets present, sizes sane
✅ All 5 logo derivatives present
✅ og-image.png 1200×630, 96KB, valid PNG
✅ All 7 HTML files have favicon + OG meta blocks
✅ vishalkatariya.dev replaced with vishal-katariya.com in all 10 live-facing files (HTML + docs)
✅ No working-tree noise (clean)
✅ No regressions in index.html (unchanged from main, latency work deferred to Phase 1g)
✅ All work pre-reviewed via PR #8, #9, #10 (each had a separate visual QA cycle per L-068)
Known non-blockers
Vercel deployment
Auto-deploys on push to `main`. Live at https://vishal-katariya.com after merge.