Conversation
…and homepage styling - Replace hardcoded nav counts with dynamic Airtable view counts via /api/counts endpoint - Replace hardcoded homepage "Last Updated" dates with dynamic LastUpdated components using UTC date comparison - Add Last Modified field support for 6 Airtable tables (self-study, media-channels, communities, advisors, projects, funding) - Add /api/last-updated/donation-guide endpoint with shared date constant - Fix Jobs last-updated to use view instead of missing Publish? field - Fix mobile nav: smaller items (40px height), slide-down animation for menu items - Fix homepage card styling: isolation/z-index for bookmarks, responsive padding, card heights - Fix footer: use opacity-80 instead of color-teal-300 for link text - Hide up-button on homepage - Update text shadow, optimized images (faces-desktop.png, sff.png), TAIS event image Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, serialized counts, error handling - Replace 11 individual last-updated API routes with single dynamic [resource] route - Move homepage date fetching from client-side to server-side (async component) - Serialize Airtable requests in counts endpoint to avoid rate limiting - Add shared format-date utility (formatDate, formatRelativeDate) - Fix stacking context for bookmark icons (add isolation: isolate) - Return null instead of fake dates on error - Fix events sort field to match actual Airtable field name - Improve error handling in Navigation counts fetch - Remove unused useEffect import in donation-guide page - Show nothing while loading LastUpdated instead of "Loading..." text Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
I added the commit messages to your PR description - when viewing github PR's you're not immediately shown the commit messages, so you usually want to have that info in the description to make it easier for reviewers. In that description it can also be nice to have motivation, failed attempts, etc. But you can probably ultimately ask Claude for a nice summarizing PR and then read it through to see if it covers your intentions & process properly. Have you delved into why almost all
were these images in particular badly optimized? The background splash is still of a different size to aisafety.com, I don't think this was ever intentionally changed? And there's some minor padding that differs, but not sure if sufficiently different to matter. Claude review: this seems like a very technical thing, and tricky to get it fully right. It should include motivation & documentation for why a specific strategy was taken, and ideally also some tests to see if it works in practice. It's also not obvious to me that it's an issue. I think you should pull this out from this PR that's otherwise mostly focused on visual consistency. Being familiar with the layout of the airtable I know why they're there, but they should indeed be documented in the code. The I suspect this is an inconsistency on the airtable end. We could fix that later, but should be documented in the code so an LLM (or human) doesn't accidentally "fix" it. why does the field names in airtable have leading !'s? Not terribly important though not showing any value is probably fine, but we should ideally test how that would look. Though if we statically fetch them on the backend it's much less of an issue to have error handling here, we would ideally make the failure bubble up into a build error so the website doesn't get updated and sticks to an old version if it fails to get all the values needed. this sounds like it should be fixed |
melissasamworth
left a comment
There was a problem hiding this comment.
Let's talk elsewhere about process for doing QA on styling. For now could you let me know your thinking or fix the stuff I commented on? The other stuff is over my head so I'm okay to trust Claude and John but yeah make sure to go to that whole process. Additionally this was again a super long PR, I would prefer shorter ones!
| /* Text effects */ | ||
| .shadow-text { | ||
| text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); | ||
| text-shadow: 0 0 12px rgba(0, 25, 27, 0.8); |
| } | ||
|
|
||
| /* Padding Bottom - responsive */ | ||
| .padding-bottom-8px { |
There was a problem hiding this comment.
Sorry but can you remove all these padding differences? I had the system I had before for a reason. If there was something specific you were going for let me know and I can reconsider.
| background-color: rgba(5, 24, 26, 0.5); | ||
| backdrop-filter: blur(16px); | ||
| border-radius: 8px; | ||
| isolation: isolate; |
| position: absolute; | ||
| top: 0; | ||
| right: 24px; | ||
| z-index: -1; |
There was a problem hiding this comment.
Why do you need to assign z-index to this?
| z-index: -1; | ||
| } | ||
|
|
||
| .date { |
There was a problem hiding this comment.
Ouch. I know you didn't write this, and I'm not sure how it got there, but let's remove it. We specifically have gap classes for one-off gap properties.
|
|
||
| <div className={styles['aisafety-info']}> | ||
| <div className="width-6-col"> | ||
| <div className={styles['aisafety-info-text']}> |
There was a problem hiding this comment.
Same comment, why is this needed?
| </h4> | ||
| <div | ||
| className={`color-teal-300 paragraph-small flex flex-col gap-8px ${styles.links}`} | ||
| className={`paragraph-small flex flex-col gap-8px opacity-80 ${styles.links}`} |
There was a problem hiding this comment.
Nooo, this was the thing I kept trying to not change here lol.
| </h4> | ||
| <div | ||
| className={`color-teal-300 paragraph-small flex flex-col gap-8px ${styles.links}`} | ||
| className={`paragraph-small flex flex-col gap-8px opacity-80 ${styles.links}`} |
There was a problem hiding this comment.
Same comment. Never use opacity as a way to lighten text on a solid bg. Use a predefined color
| opacity: 0; | ||
| visibility: hidden; | ||
| transition: | ||
| opacity 0.2s ease, |
There was a problem hiding this comment.
Why are you taking away the transition effects?
| opacity: 1; | ||
| } | ||
|
|
||
| .mobile-menu-items { |
There was a problem hiding this comment.
What were you going for here?
QA pass on the homepage, navigation bar, and footer.
from the commit messages: