Skip to content

Conversation

@gocanto
Copy link
Contributor

@gocanto gocanto commented Nov 14, 2025

Reverts #170

@gocanto gocanto merged commit 1684af5 into main Nov 14, 2025
2 checks passed
@gocanto gocanto deleted the revert-170-fix/more-shift branch November 14, 2025 09:56
@gemini-code-assist
Copy link

Summary of Changes

Hello @gocanto, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request serves to revert a prior change (PR #170) that implemented a custom transition strategy for several components. The revert removes the custom fade-transition-wrapper class and its associated styling, instead adopting Vue's native mode="out-in" transition behavior. This change simplifies the transition logic, leveraging standard Vue features for managing element transitions during loading states or content updates.

Highlights

  • Reverted Transition Strategy: This pull request reverts a previous change that introduced a custom crossfade transition mechanism using a fade-transition-wrapper class and specific CSS rules. The custom implementation is now removed.
  • Standardized Vue Transitions: The custom transition approach has been replaced with Vue's built-in mode="out-in" attribute on <transition> components across various parts of the application. This ensures a cleaner transition flow where outgoing elements complete their animation before incoming elements begin.
  • CSS Cleanup: Unused CSS rules specifically designed for the fade-transition-wrapper class, which included display: grid and z-index manipulations for overlaying elements, have been removed from the stylesheet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request reverts a previous change related to transitions, switching from a custom cross-fade implementation back to Vue's built-in out-in transition mode. This simplifies the codebase by removing the need for custom CSS to handle overlapping elements. My review focuses on improving accessibility for the components that show loading states. I've noticed that in many places, the containers for dynamically loaded content are not marked as ARIA live regions. Adding role="status" to these containers would significantly improve the experience for screen reader users by announcing when content is loading and when it becomes available. I've made several suggestions to apply this pattern consistently. Additionally, I've pointed out a potential accessibility regression in PostPage.vue where aria-hidden="true" was removed from a skeleton loader. It's best practice to hide purely visual skeletons from assistive technologies to avoid confusion.

<template>
<div class="relative min-h-[18rem] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[18rem]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

<div class="relative min-h-[18rem]" role="status">

<template>
<div class="relative min-h-[200px] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[200px]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

<div class="relative min-h-[200px]" role="status">

<h2 class="h2 font-aspekta text-slate-700 dark:text-slate-300">Let's Connect</h2>
<div class="relative min-h-[5rem] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[5rem]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

											<div class="relative min-h-[5rem]" role="status">

<div class="relative min-h-[25rem] fade-transition-wrapper">
<transition name="fade" appear>
<PostPageSkeletonPartial v-if="isLoading" key="skeleton" aria-hidden="true" />
<div class="relative min-h-[25rem]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

								<div class="relative min-h-[25rem]" role="status">

<PostPageSkeletonPartial v-if="isLoading" key="skeleton" aria-hidden="true" />
<div class="relative min-h-[25rem]">
<transition name="fade" appear mode="out-in">
<PostPageSkeletonPartial v-if="isLoading" key="skeleton" />

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This revert removes aria-hidden="true" from the skeleton loader. While this is part of the revert, it's a good practice to hide skeleton loaders from screen readers as they are purely visual placeholders and can be confusing. I recommend adding aria-hidden="true" back to this component, especially since other skeleton components in the project seem to be hidden from assistive technologies (e.g., as indicated by tests for ResumePage).

										<PostPageSkeletonPartial v-if="isLoading" key="skeleton" aria-hidden="true" />

<!-- Page content -->
<div class="text-slate-500 dark:text-slate-400 relative fade-transition-wrapper">
<transition name="fade" appear>
<div class="text-slate-500 dark:text-slate-400 relative">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

									<div class="text-slate-500 dark:text-slate-400 relative" role="status">

<h2 class="font-aspekta text-xl font-[650] mb-6">Articles</h2>
<div class="relative min-h-[20rem] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[20rem]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

It's great that the parent <section> has role="status". To make the live region more specific to the content being loaded, you could move role="status" to this div which directly wraps the <transition>. This would make the announcements more precise.

											<div class="relative min-h-[20rem]" role="status">

<!-- Articles list -->
<div class="relative min-h-[24rem] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[24rem]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

		<div class="relative min-h-[24rem]" role="status">

<!-- Cards -->
<div class="relative min-h-[300px] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[300px]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

		<div class="relative min-h-[300px]" role="status">

<!-- Cards -->
<div class="relative min-h-[300px] fade-transition-wrapper">
<transition name="fade" appear>
<div class="relative min-h-[300px]">

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

To improve accessibility, consider adding role="status" to this container. This will make it a live region, announcing to screen reader users when the content (e.g., switching from a skeleton loader to the actual content) has been updated. This pattern is already used in TagPostsPage.vue, and applying it here would improve consistency and user experience.

		<div class="relative min-h-[300px]" role="status">

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants