Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev 411 #143

Merged
merged 6 commits into from
Nov 4, 2024
Merged

Dev 411 #143

merged 6 commits into from
Nov 4, 2024

Conversation

daroczig
Copy link
Member

@daroczig daroczig commented Nov 3, 2024

Summary by CodeRabbit

  • New Features

    • Introduced a new markdown file for upcoming conferences in Q4 2024.
    • Added a presentation for SFSCON 2024 on optimizing cloud compute resources.
  • Updates

    • Updated image format in the Q3 conference article to WebP.
    • Enhanced compatibility of header attributes in presentations for earlier Pandoc versions.
    • Updated vendor count and benchmark scores on the landing page.
  • Chores

    • Updated .gitignore to include new entries for specific files.

Copy link
Contributor

coderabbitai bot commented Nov 3, 2024

Walkthrough

The pull request includes modifications to several files, primarily focusing on updates to the .gitignore file by adding new entries for specific files to be ignored by Git. Additionally, two markdown files were created to announce upcoming conferences, with one file also updating an image format. A JavaScript file was modified to enhance compatibility with older Pandoc versions by removing attributes from header elements, and a new R Markdown file was introduced for a conference presentation.

Changes

File Path Change Summary
.gitignore Added entries for src/assets/legal/legal-documents.json, src/sitemap.xml, and src/assets/slides/render.sh.
src/assets/articles/upcoming-conferences-2024-Q3.md Updated image format from JPEG to WebP for the conference announcement.
src/assets/articles/upcoming-conferences-2024-Q4.md New file created to announce upcoming conferences with metadata and content.
src/assets/slides/libs/header-attrs-2.28/header-attrs.js Modified to ensure compatibility with Pandoc versions earlier than 2.8 by removing attributes from headers.
src/assets/slides/sfscon-2024.Rmd New file created for a presentation titled "Optimizing Cloud Compute Resources with Spare Cores."
src/app/pages/landingpage/landingpage.component.html Updated vendor count text and adjusted data binding for dynamic display.
src/app/pages/landingpage/landingpage.component.ts Added new vendor entry and updated benchmark scores and live price records in the component's data.

Possibly related PRs

  • DEV-117 linter #18: The changes in the .gitignore file are related as they both involve modifications to the .gitignore file, although the main PR focuses on specific entries for ignoring files, while this PR discusses ESLint configurations.
  • BIZ-45 articles tech debt #36: This PR includes changes to src/sitemap.xml, which is relevant because the main PR also adds src/sitemap.xml to the .gitignore, indicating a connection in managing ignored files related to the sitemap.
  • DEV-343 #128: This PR updates the .gitignore file to include new entries, which is directly related to the main PR's changes to the .gitignore file, as both involve managing ignored files in the project.
  • guarantee description column width #140: The focus on ensuring consistent column widths in the comparison interface may relate to the overall organization and presentation of files, including those ignored in the .gitignore, as both aim to enhance the user experience and maintain a clean layout.

Poem

🐇 In the garden of code, changes bloom bright,
New files and formats, a wonderful sight.
With headers now clean and conferences near,
The rabbit hops joyfully, spreading good cheer!
Let's gather the teams, share knowledge and fun,
For optimizing clouds, our work has begun! 🌼


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

netlify bot commented Nov 3, 2024

Deploy Preview for creative-choux-a3c817 ready!

Name Link
🔨 Latest commit 0c55c8a
🔍 Latest deploy log https://app.netlify.com/sites/creative-choux-a3c817/deploys/67287fc57324a40008c6997a
😎 Deploy Preview https://deploy-preview-143--creative-choux-a3c817.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🧹 Outside diff range and nitpick comments (9)
src/assets/slides/libs/header-attrs-2.28/header-attrs.js (3)

1-2: Consider enhancing the documentation.

While the comments explain the basic purpose, it would be helpful to:

  • Specify which attributes are typically added by Pandoc 2.9
  • Explain why removing these attributes maintains compatibility
-// Pandoc 2.9 adds attributes on both header and div. We remove the former (to
-// be compatible with the behavior of Pandoc < 2.8).
+// Pandoc 2.9 adds attributes (e.g., id, class) on both header and div elements.
+// We remove header attributes to maintain compatibility with Pandoc < 2.8,
+// which only adds attributes to div elements.

3-4: Consider performance optimizations.

The current implementation could be enhanced for better performance and memory management:

  1. The query selector could be more efficient
  2. The event listener could be cleaned up after use
-document.addEventListener('DOMContentLoaded', function(e) {
+document.addEventListener('DOMContentLoaded', function handler(e) {
+  document.removeEventListener('DOMContentLoaded', handler);
   var hs = document.querySelectorAll("div.section[class*='level'] > :first-child");

5-5: Modernize variable declarations.

Consider using modern JavaScript practices for better code maintainability and scoping:

-  var i, h, a;
+  let index;
+  let header;
+  let attributes;
src/assets/articles/upcoming-conferences-2024-Q4.md (2)

23-28: Add width and height attributes to prevent layout shifts.

To improve Core Web Vitals and prevent Cumulative Layout Shift (CLS), consider adding explicit width and height attributes to the image element.

  <img 
    class="m-auto w-1/2 max-w-96" 
+   width="384"
+   height="384"
    src="/assets/images/logos/hex-sticker.webp" 
    alt="Spare Cores hex sticker"/>

30-30: Improve readability by adjusting word order.

Consider moving "also" before the verb for better flow:

- We will be also attending <a href="https://reinvent.awsevents.com" target="_blank" rel="noopener">AWS re:Invent 2024</a>
+ We will also be attending <a href="https://reinvent.awsevents.com" target="_blank" rel="noopener">AWS re:Invent 2024</a>
🧰 Tools
🪛 LanguageTool

[style] ~30-~30: To make your writing flow more naturally, try moving ‘also’ before the verb.
Context: ...="Spare Cores hex sticker"/> We will be also attending <a href="https://reinvent.aws...

(ALSO_PLACEMENT)

src/assets/slides/sfscon-2024.Rmd (4)

1-25: Consider adding more reveal.js configuration options for better presentation control.

The current configuration is good, but could be enhanced with additional reveal.js options:

  • controlsTutorial: false to disable the controls tutorial.
  • progress: true to show a progress bar.
  • hash: true to enable slide URLs.
    reveal_options:
      slideNumber: true
      previewLinks: false
      width: 1244
+     controlsTutorial: false
+     progress: true
+     hash: true

1594-1609: Enhance visibility toggle script with error handling and modern JavaScript features.

The script could be more robust and maintainable.

-var url = document.location.href;
-if (url.match("/?live")) {
-  const elements = document.getElementsByClassName('offlineMode');
-  for (let i = 0; i < elements.length; i++) {
-    element = elements.item(i);
-    element.style.display = 'none';
-  }
-} else {
-  const elements = document.getElementsByClassName('onlineMode');
-  for (let i = 0; i < elements.length; i++) {
-    element = elements.item(i);
-    element.style.display = 'none';
-  }
-}
+const url = document.location.href;
+const mode = url.match("/?live") ? 'offlineMode' : 'onlineMode';
+try {
+  Array.from(document.getElementsByClassName(mode))
+    .forEach(element => element.style.display = 'none');
+} catch (error) {
+  console.error(`Failed to toggle visibility: ${error.message}`);
+}

304-304: Multiple TODO comments need to be addressed in speaker notes.

There are several TODO comments throughout the presentation's speaker notes that need to be completed before the presentation.

Would you like me to help create a GitHub issue to track these TODOs? I can help generate detailed speaker notes for each section.

Also applies to: 452-452, 481-481, 488-488, 513-513, 1452-1452, 1462-1462, 1466-1466, 1488-1488, 1513-1513, 1537-1537, 1547-1547, 1562-1562, 1573-1573, 1588-1588


1201-1414: Consider shortening the JSON example for better focus.

The JSON response is quite long and might be overwhelming. Consider showing only the most relevant fields or breaking it into smaller, focused examples that highlight specific features.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between ca9cde5 and 72c2667.

⛔ Files ignored due to path filters (8)
  • src/assets/images/blog/thumbnails/devops-conf-cover.jpg is excluded by !**/*.jpg
  • src/assets/slides/images/bye-sfscon2024-1.png is excluded by !**/*.png
  • src/assets/slides/images/bye-sfscon2024-2.png is excluded by !**/*.png
  • src/assets/slides/images/bye-sfscon2024-3.png is excluded by !**/*.png
  • src/assets/slides/images/homepage-stats-2024q3.png is excluded by !**/*.png
  • src/assets/slides/images/noi-sfscon.png is excluded by !**/*.png
  • src/assets/slides/images/sc-components-2024q3.png is excluded by !**/*.png
  • src/assets/slides/images/sc-www-server-compare-geekbench-chart.png is excluded by !**/*.png
📒 Files selected for processing (5)
  • .gitignore (1 hunks)
  • src/assets/articles/upcoming-conferences-2024-Q3.md (1 hunks)
  • src/assets/articles/upcoming-conferences-2024-Q4.md (1 hunks)
  • src/assets/slides/libs/header-attrs-2.28/header-attrs.js (1 hunks)
  • src/assets/slides/sfscon-2024.Rmd (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • .gitignore
  • src/assets/articles/upcoming-conferences-2024-Q3.md
🧰 Additional context used
🪛 LanguageTool
src/assets/articles/upcoming-conferences-2024-Q4.md

[uncategorized] ~18-~18: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...nce.com" target="_blank" rel="noopener">Open Source Experience (Paris, France) A few p...

(EN_COMPOUND_ADJECTIVE_INTERNAL)


[style] ~30-~30: To make your writing flow more naturally, try moving ‘also’ before the verb.
Context: ...="Spare Cores hex sticker"/> We will be also attending <a href="https://reinvent.aws...

(ALSO_PLACEMENT)

🔇 Additional comments (3)
src/assets/slides/libs/header-attrs-2.28/header-attrs.js (1)

1-12: Verify the impact of attribute removal.

Let's ensure this change doesn't break any existing functionality:

✅ Verification successful

Let me generate additional verification scripts to check for any dependencies on header attributes.


Safe to remove header attributes - no dependencies found

The script is used in several HTML presentation files but no direct dependencies on the header attributes were found:

  • No HTML files reference header attributes in h1-h6 tags
  • No JavaScript code manipulates these attributes
  • The script's only purpose is to remove attributes for compatibility with older Pandoc versions

The attribute removal is safe as it's a compatibility cleanup with no functional dependencies.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Check for any direct references to header attributes in HTML/JS files
echo "Checking for potential dependencies on header attributes..."
rg -t html -t js "querySelector.*h[1-6].*\[.*\]" || echo "No direct attribute selectors found."

# Check for any Pandoc-related configuration files
echo -e "\nChecking for Pandoc configuration files..."
fd -e yaml -e json "pandoc" || echo "No Pandoc config files found."

Length of output: 329877


Script:

#!/bin/bash
# Check for any references to header attributes in HTML files
echo "Checking for header attribute references in HTML files..."
rg -t html "h[1-6].*\[.*\]" || echo "No header attribute references found."

# Check for any JavaScript files that might be interacting with header attributes
echo -e "\nChecking for header attribute manipulation in JS files..."
rg -t js "querySelector.*h[1-6].*getAttribute" || echo "No header attribute manipulation found."

# Check if this script is referenced in any HTML files
echo -e "\nChecking where this script is used..."
rg "header-attrs.*\.js" || echo "No references to header-attrs.js found."

Length of output: 1048

src/assets/articles/upcoming-conferences-2024-Q4.md (2)

1-12: LGTM! Well-structured frontmatter with clear metadata.

The frontmatter follows best practices with appropriate character lengths and includes all necessary metadata fields.


17-18: LGTM! Secure external links implementation.

Links are properly implemented with target="_blank" and rel="noopener" for secure external navigation.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~18-~18: If this is a compound adjective that modifies the following noun, use a hyphen.
Context: ...nce.com" target="_blank" rel="noopener">Open Source Experience (Paris, France) A few p...

(EN_COMPOUND_ADJECTIVE_INTERNAL)

Comment on lines +6 to +11
for (i = 0; i < hs.length; i++) {
h = hs[i];
if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
a = h.attributes;
while (a.length > 0) h.removeAttribute(a[0].name);
}
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add safety checks and modernize the implementation.

The current implementation has several areas for improvement:

  1. It removes all attributes indiscriminately, which might affect required attributes
  2. Lacks error handling for DOM operations
  3. Could be more concise using modern JavaScript features

Consider this safer and more modern implementation:

-  for (i = 0; i < hs.length; i++) {
-    h = hs[i];
-    if (!/^h[1-6]$/i.test(h.tagName)) continue;  // it should be a header h1-h6
-    a = h.attributes;
-    while (a.length > 0) h.removeAttribute(a[0].name);
-  }
+  try {
+    Array.from(hs)
+      .filter(element => /^h[1-6]$/i.test(element.tagName))
+      .forEach(header => {
+        // Preserve essential attributes if needed
+        const preserveAttrs = ['id', 'role'];
+        Array.from(header.attributes)
+          .filter(attr => !preserveAttrs.includes(attr.name))
+          .forEach(attr => header.removeAttribute(attr.name));
+      });
+  } catch (error) {
+    console.error('Error processing header attributes:', error);
+  }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
for (i = 0; i < hs.length; i++) {
h = hs[i];
if (!/^h[1-6]$/i.test(h.tagName)) continue; // it should be a header h1-h6
a = h.attributes;
while (a.length > 0) h.removeAttribute(a[0].name);
}
try {
Array.from(hs)
.filter(element => /^h[1-6]$/i.test(element.tagName))
.forEach(header => {
// Preserve essential attributes if needed
const preserveAttrs = ['id', 'role'];
Array.from(header.attributes)
.filter(attr => !preserveAttrs.includes(attr.name))
.forEach(attr => header.removeAttribute(attr.name));
});
} catch (error) {
console.error('Error processing header attributes:', error);
}

Comment on lines +37 to +39
<script>
document.getElementById("dummy-slide").remove();
</script>
Copy link
Contributor

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

Add error handling for dummy slide removal.

The script might throw an error if the element doesn't exist. Consider adding a null check.

-document.getElementById("dummy-slide").remove();
+const dummySlide = document.getElementById("dummy-slide");
+if (dummySlide) {
+  dummySlide.remove();
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<script>
document.getElementById("dummy-slide").remove();
</script>
<script>
const dummySlide = document.getElementById("dummy-slide");
if (dummySlide) {
dummySlide.remove();
}
</script>

Comment on lines +47 to +48
<img src="images/noi-sfscon.png"
class="toplogo" style="width: 380px; height: 380px; margin-top: -50px; margin-left: -190px; margin-right: 190px; background-color:transparent;" />
Copy link
Contributor

Choose a reason for hiding this comment

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

💡 Codebase verification

Missing images detected - ensure all presentation assets are available

The verification script has revealed that none of the referenced images exist in the expected images/ directory. This is a critical issue that needs to be addressed before the presentation can be properly rendered.

Key findings:

  • All image references in the presentation are missing from the images/ directory
  • This includes the logo image noi-sfscon.png and all other presentation assets
  • The issue affects all slides that contain image references

Please ensure:

  1. All required images are added to the images/ directory
  2. Image paths are correctly specified relative to the presentation file
  3. Image files match the exact names referenced in the presentation
🔗 Analysis chain

Consider using relative dimensions for images and validating image paths.

Images in the presentation have hardcoded dimensions and relative paths:

  1. Consider using percentage-based dimensions for better scaling.
  2. Validate that all image paths will work when the presentation is deployed.

Also applies to: 126-127, 138-139, 168-169, 220-221, 247-248, 298-299, 312-313, 322-323, 332-333, 344-345, 357-358, 366-367, 388-389, 529-530, 535-536

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify all referenced images exist
echo "Checking image paths..."
rg -o 'src="([^"]+)"' | cut -d'"' -f2 | while read -r img; do
  if [[ "$img" =~ ^images/ ]]; then
    if [ ! -f "$img" ]; then
      echo "Missing image: $img"
    fi
  fi
done

Length of output: 82007

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 0

🧹 Outside diff range and nitpick comments (1)
src/app/pages/landingpage/landingpage.component.html (1)

174-174: Consider making the planned vendor count dynamic.

Instead of hardcoding "10 planned", consider using the vendors array length to ensure the displayed count always matches the actual list of planned vendors.

-                      (mouseleave)="hideTooltip()">10 planned</span>)
+                      (mouseleave)="hideTooltip()">{{vendors.length}} planned</span>)
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Reviewing files that changed from the base of the PR and between 72c2667 and 0c55c8a.

📒 Files selected for processing (2)
  • src/app/pages/landingpage/landingpage.component.html (1 hunks)
  • src/app/pages/landingpage/landingpage.component.ts (2 hunks)
🔇 Additional comments (2)
src/app/pages/landingpage/landingpage.component.ts (2)

31-31: LGTM: Vendor addition follows consistent formatting.

The new UpCloud entry maintains consistent formatting and status indicators with other vendors in the array.


49-54: Verify UI handling of updated metrics & consider adding documentation.

The significant increase in metrics (especially benchmark scores) warrants verification:

  1. Ensure the UI can properly display these larger numbers without layout issues
  2. Consider adding documentation about how these metrics are calculated and updated

Let's verify the UI handling:

Would you like me to help create documentation about the metrics calculation and update frequency?

✅ Verification successful

UI can safely handle the updated metrics

Based on the template implementation (<b> {{item.count}} </b>), there are no width constraints, text truncation, or specific number formatting that would cause layout issues with the larger numbers. The metrics are displayed in a simple, flexible layout that can accommodate the updated values. Other components in the codebase that display numeric values (like GPU counts and region data) use similar unconstrained approaches.

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Check for potential UI layout issues with the new metrics

# Test 1: Look for any width constraints or text truncation in the template
rg -A 2 'count' src/app/pages/landingpage/landingpage.component.html

# Test 2: Check for any existing number formatting or display logic
rg 'pipe.*number|format.*number' src/app/pages/landingpage/

Length of output: 242


Script:

#!/bin/bash
# Let's check for any CSS styles or classes that might affect the metrics display

# Check for any width/size constraints in the component's styles
rg -A 3 'count|metrics|numbers' src/app/pages/landingpage/landingpage.component.scss

# Look for any CSS classes applied to the metrics container
rg -B 2 -A 2 '<div.*metrics|<div.*count' src/app/pages/landingpage/landingpage.component.html

# Check if there's any responsive design handling for these metrics
rg -A 3 '@media' src/app/pages/landingpage/landingpage.component.scss

# Look for any similar metric displays in other components for reference
fd -e html -x rg -l 'count.*text|metrics.*display'

Length of output: 472


Script:

#!/bin/bash
# Let's check how metrics are displayed in other components for reference

# Check server-prices component implementation
rg -A 3 'count|metrics|numbers' src/app/pages/server-prices/server-prices.component.html
rg -A 3 'count|metrics|numbers' src/app/pages/server-prices/server-prices.component.scss

# Check server-listing component implementation
rg -A 3 'count|metrics|numbers' src/app/pages/server-listing/server-listing.component.html
rg -A 3 'count|metrics|numbers' src/app/pages/server-listing/server-listing.component.scss

# Check regions component implementation
rg -A 3 'count|metrics|numbers' src/app/pages/regions/regions.component.html
rg -A 3 'count|metrics|numbers' src/app/pages/regions/regions.component.scss

# Look for any number formatting utilities or services
rg -l 'NumberFormat|formatNumber' src/app/

Length of output: 2832

@daroczig daroczig merged commit 732b79d into main Nov 4, 2024
7 checks passed
@daroczig daroczig deleted the DEV-411 branch November 4, 2024 20:47
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