Skip to content

A new about dialog#9151

Merged
adoriandoran merged 93 commits intomainfrom
feat/about-dialog-overhaul
Apr 19, 2026
Merged

A new about dialog#9151
adoriandoran merged 93 commits intomainfrom
feat/about-dialog-overhaul

Conversation

@adoriandoran
Copy link
Copy Markdown
Member

No description provided.

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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 introduces a significant overhaul of the application's 'About' dialog, transforming it into a more informative and aesthetically pleasing interface. The changes aim to provide users with a clearer overview of application details, acknowledge project contributors dynamically, and offer direct access to community resources. This modernization enhances the overall user experience and streamlines the maintenance of project information.

Highlights

  • Redesigned About Dialog: The 'About' dialog has been completely revamped with a modern, visually appealing layout, replacing the previous table-based design with structured cards for better readability and user experience.
  • Dynamic Contributor List: A new feature dynamically displays a list of project contributors within the 'About' dialog, including their roles and links to their GitHub profiles. This list is automatically generated and updated via a new script.
  • Nightly Build Branding: The 'About' dialog now includes specific branding for 'Nightly' builds, featuring an alternative icon and text to clearly distinguish development versions.
  • Enhanced Information Display: Version details, build information (including a clickable revision link), and the data directory are presented in a more organized and user-friendly manner. New links for GitHub and donations have also been added.
  • Automated Contributor Management: A new script has been introduced to fetch and update the contributors.json file directly from GitHub, ensuring the contributor list in the 'About' dialog remains current without manual intervention.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

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.

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
Copy Markdown
Contributor

@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 introduces a completely redesigned "About" dialog, moving from a simple table to a more modern, card-based layout. It includes new icons, a list of contributors fetched from a JSON file, and links to GitHub and donation pages. A script to automatically update the contributors list from the GitHub API is also added.

The code is well-structured, but I've found a few areas for improvement. Specifically, there's a logic issue in a useCallback hook that causes unnecessary data fetching, a missing key prop in a React list which can cause rendering issues, and an opportunity to improve type safety in the new contributor update script. My detailed comments are below.

Comment thread apps/client/src/widgets/dialogs/about.tsx Outdated
Comment thread apps/client/src/widgets/dialogs/about.tsx
Comment thread scripts/update-contributor-list.ts Outdated
adoriandoran and others added 2 commits March 23, 2026 10:34
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
@adoriandoran
Copy link
Copy Markdown
Member Author

/gemini review

Copy link
Copy Markdown
Contributor

@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 refactors the About dialog to include detailed contributor information, project history, and dynamic icon switching. It introduces new UI components such as FluidWrapper and PropertySheet, enhances the Modal component for mobile responsiveness, and adds a script to automate contributor list updates. Technical feedback identifies several areas for improvement: optimizing the onLoad callback's dependency array to prevent redundant network requests, resolving inconsistent React and Preact imports, implementing pagination for the GitHub contributors API, defining missing TypeScript types in the update script, and addressing potential memory leaks and closure issues in the hover state management logic.

Comment thread apps/client/src/widgets/dialogs/about.tsx
Comment thread apps/client/src/widgets/dialogs/about.tsx Outdated
Comment thread scripts/update-contributor-list.ts Outdated
}

async function fetchContributors() {
const response = await fetch("https://api.github.com/repos/TriliumNext/Trilium/contributors");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The GitHub API for contributors returns a maximum of 30 results per page by default. For a project of this scale, it is likely that there are more than 30 contributors. Consider adding ?per_page=100 to the URL or implementing pagination to ensure the list is complete.

Suggested change
const response = await fetch("https://api.github.com/repos/TriliumNext/Trilium/contributors");
const response = await fetch("https://api.github.com/repos/TriliumNext/Trilium/contributors?per_page=100");

Comment thread scripts/update-contributor-list.ts Outdated
}
}

function processContributorList(contributorInfo: GithubContributor[]) {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The type GithubContributor is used as a parameter type but is not defined or imported in this script, which will lead to TypeScript compilation errors.

Comment on lines +42 to +56
const createContributorHoverHandler = useCallback(() => {
let timeoutID;
return (contributor: Contributor, isHovering: boolean, part: "name" | "role") => {
if (part === "role" && contributor.role === "original-dev") {
if (isHovering) {
timeoutID = setTimeout(() => {
setAltIcon("classic");
}, 500);
} else {
clearTimeout(timeoutID);
setAltIcon(null);
}
}
}
}, []);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The timeoutID variable is shared across all items in the contributor list because it's defined in the closure of the handler creator. While currently only one contributor has the original-dev role, this logic is fragile. Furthermore, the timeout is not cleared if the component unmounts or the dialog closes, which could attempt to update state on an unmounted component. Consider using a ref or a more robust way to manage per-item hover states and cleanups.

@adoriandoran adoriandoran marked this pull request as ready for review April 19, 2026 15:43
@dosubot dosubot Bot added the size:XL This PR changes 500-999 lines, ignoring generated files. label Apr 19, 2026
@adoriandoran adoriandoran merged commit 9e37a80 into main Apr 19, 2026
14 checks passed
@adoriandoran adoriandoran deleted the feat/about-dialog-overhaul branch April 19, 2026 15:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL This PR changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants