Skip to content

Rebrand#979

Merged
hatemhosny merged 22 commits into
developfrom
rebrand
May 22, 2026
Merged

Rebrand#979
hatemhosny merged 22 commits into
developfrom
rebrand

Conversation

@hatemhosny
Copy link
Copy Markdown
Collaborator

@hatemhosny hatemhosny commented May 22, 2026

This PR introduces a rebrand, with mainly a new logo, and slightly updated UI to be consistent with the styles introduced in the logo

The brackets and slash </> represent code, and the red dot signifies "live" as in broadcasting

This is a comparison between the new and old logos: https://livecodes.io/?x=id/v6tdhbevqs8&mode=result

The design system with brand colors and fonts are documented here: docs/docs/contribution/ui-design-system.mdx

Thanks @draelwakeel for the contribution

Summary by CodeRabbit

  • Documentation

    • Added a full icon proposal page with previews, size gallery, color palette, context mockups, and copyable SVG.
    • Expanded UI design system with brand-token guidance, motifs, loading style notes, and component checklist updates.
  • New Features

    • Added branded web fonts, updated social preview imagery and app manifest casing/branding, new loading artwork, and updated oEmbed thumbnail.
  • Style

    • Rolled out cyan/accent rebrand across UI, modals, toolbar, homepage, 404, and storybook visuals; refreshed loading animations.

Review Change Stack

@netlify
Copy link
Copy Markdown

netlify Bot commented May 22, 2026

Deploy Preview for livecodes ready!

Name Link
🔨 Latest commit f589bc7
🔍 Latest deploy log https://app.netlify.com/projects/livecodes/deploys/6a10c99cdadbb7000840059a
😎 Deploy Preview https://deploy-preview-979--livecodes.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

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

Comment thread docs/docs/contribution/new-logo.html Fixed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 22, 2026

Size Change: +310 B (+0.03%)

Total Size: 1.07 MB

📦 View Changed
Filename Size Change
build/404.html 1.45 kB +450 B (+44.87%) 🚨
build/index.html 1.53 kB -934 B (-37.89%) 🎉
build/livecodes/app.css 23.4 kB +794 B (+3.51%)
ℹ️ View Unchanged
Filename Size Change
build/app.html 250 B 0 B
build/livecodes/app.js 113 kB -13 B (-0.01%)
build/livecodes/assets.js 8.63 kB +2 B (+0.02%)
build/livecodes/assets/noop.js 18 B 0 B
build/livecodes/assets/templates/diagrams-starter.html 2.19 kB 0 B
build/livecodes/backup.js 3.74 kB 0 B
build/livecodes/blockly.js 15.1 kB +2 B (+0.01%)
build/livecodes/broadcast.js 1.19 kB 0 B
build/livecodes/bundle-types.js 4.41 kB 0 B
build/livecodes/code-to-image.js 9.14 kB -27 B (-0.29%)
build/livecodes/codejar.js 17.6 kB -5 B (-0.03%)
build/livecodes/codemirror.js 16.1 kB -39 B (-0.24%)
build/livecodes/compile.page.js 2.46 kB +6 B (+0.24%)
build/livecodes/compile.worker.js 15.2 kB -14 B (-0.09%)
build/livecodes/compiler-utils.js 3.17 kB +4 B (+0.13%)
build/livecodes/custom-editor-utils.js 198 B 0 B
build/livecodes/deploy.js 6.92 kB +20 B (+0.29%)
build/livecodes/editor-settings.js 19.4 kB +19 B (+0.1%)
build/livecodes/embed-ui.js 5.51 kB +2 B (+0.04%)
build/livecodes/embed.js 91.2 kB -101 B (-0.11%)
build/livecodes/export.js 3.91 kB 0 B
build/livecodes/firebase.js 22.7 kB 0 B
build/livecodes/format.worker.js 14.5 kB +20 B (+0.14%)
build/livecodes/google-fonts.js 7.12 kB 0 B
build/livecodes/headless.js 79.7 kB +13 B (+0.02%)
build/livecodes/i18n-ar-language-info.json 5.34 kB 0 B
build/livecodes/i18n-ar-translation.json 9.33 kB 0 B
build/livecodes/i18n-bn-language-info.json 5.76 kB 0 B
build/livecodes/i18n-bn-translation.json 9.66 kB 0 B
build/livecodes/i18n-de-language-info.json 5.4 kB 0 B
build/livecodes/i18n-de-translation.json 9.46 kB 0 B
build/livecodes/i18n-en-language-info.json 4.63 kB 0 B
build/livecodes/i18n-en-translation.json 8.06 kB +13 B (+0.16%)
build/livecodes/i18n-es-language-info.json 5.12 kB 0 B
build/livecodes/i18n-es-translation.json 9.19 kB 0 B
build/livecodes/i18n-fa-language-info.json 5.52 kB 0 B
build/livecodes/i18n-fa-translation.json 9.49 kB 0 B
build/livecodes/i18n-fr-language-info.json 5.31 kB 0 B
build/livecodes/i18n-fr-translation.json 9.43 kB 0 B
build/livecodes/i18n-hi-language-info.json 5.93 kB 0 B
build/livecodes/i18n-hi-translation.json 9.98 kB 0 B
build/livecodes/i18n-id-language-info.json 4.87 kB 0 B
build/livecodes/i18n-id-translation.json 8.71 kB 0 B
build/livecodes/i18n-it-language-info.json 5.17 kB 0 B
build/livecodes/i18n-it-translation.json 9.26 kB 0 B
build/livecodes/i18n-ja-language-info.json 5.72 kB 0 B
build/livecodes/i18n-ja-translation.json 9.64 kB 0 B
build/livecodes/i18n-nl-language-info.json 5.07 kB 0 B
build/livecodes/i18n-nl-translation.json 8.91 kB 0 B
build/livecodes/i18n-pt-language-info.json 5.16 kB 0 B
build/livecodes/i18n-pt-translation.json 9.38 kB 0 B
build/livecodes/i18n-ru-language-info.json 5.7 kB 0 B
build/livecodes/i18n-ru-translation.json 10.3 kB 0 B
build/livecodes/i18n-tr-language-info.json 5.3 kB 0 B
build/livecodes/i18n-tr-translation.json 9.28 kB 0 B
build/livecodes/i18n-ur-language-info.json 5.97 kB 0 B
build/livecodes/i18n-ur-translation.json 9.81 kB 0 B
build/livecodes/i18n-zh-CN-language-info.json 5.01 kB 0 B
build/livecodes/i18n-zh-CN-translation.json 8.67 kB 0 B
build/livecodes/i18n.js 20.4 kB +67 B (+0.33%)
build/livecodes/import-src.js 17.9 kB -12 B (-0.07%)
build/livecodes/import.js 16.3 kB -23 B (-0.14%)
build/livecodes/index.js 5.43 kB +2 B (+0.04%)
build/livecodes/lang-art-template-compiler.js 1.68 kB 0 B
build/livecodes/lang-assemblyscript-compiler.js 290 B 0 B
build/livecodes/lang-assemblyscript-script.js 386 B 0 B
build/livecodes/lang-astro-compiler.js 2.37 kB 0 B
build/livecodes/lang-clio-compiler.js 1.58 kB 0 B
build/livecodes/lang-commonlisp-script.js 123 B 0 B
build/livecodes/lang-cpp-script.js 1.96 kB 0 B
build/livecodes/lang-cpp-wasm-script.js 2.88 kB 0 B
build/livecodes/lang-csharp-wasm-script.js 2.21 kB 0 B
build/livecodes/lang-diagrams-compiler-esm.js 5.11 kB 0 B
build/livecodes/lang-dot-compiler.js 1.69 kB 0 B
build/livecodes/lang-ejs-compiler.js 1.66 kB 0 B
build/livecodes/lang-eta-compiler.js 1.68 kB 0 B
build/livecodes/lang-fennel-compiler.js 1.64 kB 0 B
build/livecodes/lang-gleam-compiler.js 3.12 kB 0 B
build/livecodes/lang-go-wasm-script.js 3.29 kB 0 B
build/livecodes/lang-haml-compiler.js 1.69 kB 0 B
build/livecodes/lang-handlebars-compiler.js 1.99 kB 0 B
build/livecodes/lang-imba-compiler.js 147 B 0 B
build/livecodes/lang-java-script.js 4.09 kB 0 B
build/livecodes/lang-jinja-compiler.js 1.67 kB 0 B
build/livecodes/lang-julia-script.js 3.32 kB -1 B (-0.03%)
build/livecodes/lang-liquid-compiler.js 1.71 kB 0 B
build/livecodes/lang-lua-wasm-script.js 205 B 0 B
build/livecodes/lang-malina-compiler.js 2.98 kB 0 B
build/livecodes/lang-markdown-compiler.js 1.7 kB 0 B
build/livecodes/lang-markdown-script.js 1.47 kB 0 B
build/livecodes/lang-minizinc-script.js 2.09 kB 0 B
build/livecodes/lang-mustache-compiler.js 1.68 kB 0 B
build/livecodes/lang-nunjucks-compiler.js 2 kB 0 B
build/livecodes/lang-perl-script.js 268 B 0 B
build/livecodes/lang-php-wasm-script.js 347 B 0 B
build/livecodes/lang-postgresql-compiler-esm.js 1.76 kB 0 B
build/livecodes/lang-prolog-script.js 204 B 0 B
build/livecodes/lang-pug-compiler.js 371 B 0 B
build/livecodes/lang-python-wasm-script.js 1.89 kB 0 B
build/livecodes/lang-r-script-esm.js 2.47 kB 0 B
build/livecodes/lang-rescript-compiler-esm.js 2.19 kB 0 B
build/livecodes/lang-rescript-formatter.js 1.55 kB 0 B
build/livecodes/lang-riot-compiler.js 2.85 kB +2 B (+0.07%)
build/livecodes/lang-ruby-wasm-script.js 1.75 kB 0 B
build/livecodes/lang-scss-compiler.js 1.85 kB 0 B
build/livecodes/lang-solid-compiler.js 263 B 0 B
build/livecodes/lang-sql-compiler.js 1.67 kB -1 B (-0.06%)
build/livecodes/lang-sql-script.js 2.08 kB +5 B (+0.24%)
build/livecodes/lang-svelte-compiler.js 4.72 kB 0 B
build/livecodes/lang-tcl-script.js 1.86 kB 0 B
build/livecodes/lang-teal-compiler.js 1.75 kB 0 B
build/livecodes/lang-twig-compiler.js 1.68 kB 0 B
build/livecodes/lang-vento-compiler.js 1.73 kB 0 B
build/livecodes/lang-vue-compiler.js 6.13 kB 0 B
build/livecodes/lang-vue2-compiler.js 3.5 kB 0 B
build/livecodes/lang-wat-compiler.js 348 B 0 B
build/livecodes/lang-wat-script.js 1.98 kB 0 B
build/livecodes/language-info.js 7.92 kB 0 B
build/livecodes/monaco.js 20 kB +5 B (+0.03%)
build/livecodes/open.js 6.24 kB -4 B (-0.06%)
build/livecodes/processor-lightningcss-compiler.js 1.91 kB 0 B
build/livecodes/processor-postcss-compiler.js 2.06 kB 0 B
build/livecodes/processor-tailwindcss-compiler.js 5.29 kB +1 B (+0.02%)
build/livecodes/processor-unocss-compiler.js 355 B 0 B
build/livecodes/processor-windicss-compiler.js 450 B 0 B
build/livecodes/quill.css 697 B 0 B
build/livecodes/quill.js 5.86 kB 0 B
build/livecodes/resources.js 3.43 kB +1 B (+0.03%)
build/livecodes/result-utils.js 1.17 kB 0 B
build/livecodes/share.js 3.85 kB +1 B (+0.03%)
build/livecodes/snippets.js 6.08 kB +1 B (+0.02%)
build/livecodes/sync-ui.js 3.29 kB +1 B (+0.03%)
build/livecodes/sync.js 3.56 kB 0 B
build/livecodes/sync.worker.js 29.8 kB 0 B
build/livecodes/templates.js 27 kB 0 B
build/sdk/livecodes.js 4.39 kB 0 B
build/sdk/livecodes.umd.js 5.19 kB 0 B
build/sdk/package.json 456 B 0 B
build/sdk/preact.js 4.74 kB 0 B
build/sdk/react.js 4.77 kB 0 B
build/sdk/solid.js 4.91 kB 0 B
build/sdk/svelte.js 4.36 kB 0 B
build/sdk/vue.js 4.77 kB 0 B
build/sdk/web-components.js 5.8 kB 0 B

compressed-size-action

@cloudflare-workers-and-pages
Copy link
Copy Markdown

cloudflare-workers-and-pages Bot commented May 22, 2026

Deploying livecodes with  Cloudflare Pages  Cloudflare Pages

Latest commit: f589bc7
Status: ✅  Deploy successful!
Preview URL: https://b4ec6afc.livecodes.pages.dev
Branch Preview URL: https://rebrand.livecodes.pages.dev

View logs

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 22, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: b53ae71f-5203-446f-b790-fe5904d2be80

📥 Commits

Reviewing files that changed from the base of the PR and between 3cc1eb9 and f589bc7.

⛔ Files ignored due to path filters (8)
  • src/livecodes/assets/images/livecodes-logo-animation.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-draw-animation-loop-nobg.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-draw-animation-loop.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-flat-nobg.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-flat.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-glowing-dot.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-src.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-text-logo-colored.svg is excluded by !**/*.svg
📒 Files selected for processing (2)
  • src/livecodes/i18n/locales/en/translation.lokalise.json
  • src/livecodes/i18n/locales/en/translation.ts
✅ Files skipped from review due to trivial changes (2)
  • src/livecodes/i18n/locales/en/translation.lokalise.json
  • src/livecodes/i18n/locales/en/translation.ts

Walkthrough

This PR implements a comprehensive 2026 visual rebrand for LiveCodes: fixed brand tokens, updated fonts, refreshed component and page styling, a new icon proposal page, and updated marketing/metadata assets.

Changes

2026 Brand Rebrand

Layer / File(s) Summary
Design tokens and icon proposal
docs/docs/contribution/ui-design-system.mdx, docs/docs/contribution/new-logo.html, docs/src/css/custom.css
Introduces the two-layer brand token identity (--brand-* plus user-theme tokens), light/dark overrides, loading/motif keyframes, and adds a full icon proposal page with comparisons, sizing, contexts, palette, and copyable SVG.
Homepage & Storybook marketing updates
docs/src/components/HomepageFeatures.module.css, docs/src/components/HomepageFeatures.tsx, docs/src/components/LiveCodes.tsx, storybook/index.html, docs/src/css/custom.css
Updates Docusaurus primary palette and code highlight backgrounds, homepage feature visuals and example snippet color (#00c8ff), LiveCodes sample theme color and inline glow, and Storybook font/header/logo/card visuals with new SVG logo.
Typography and vendor fonts
src/livecodes/vendors.ts, src/livecodes/core.ts, storybook/index.html
Adds/export DM Sans vendor URL, extends vendor font imports, and conditionally loads DM Sans and JetBrains Mono in non-lite mode; wires --font-ui/--font-mono tokens.
Core brand token system and CSS foundation
src/livecodes/styles/app.scss, src/livecodes/styles/inc-light.scss, src/livecodes/styles/index.css
Defines dark-theme brand tokens (backgrounds, borders, glows, dot-pattern), recalculates --rs radius, adds typography tokens and light-theme brand overrides, updates base typography/smoothing, and replaces loading animations.
Application component styling and modal/forms
src/livecodes/styles/app.scss, src/livecodes/styles/inc-modal.scss
Restyles buttons, toolbar, logo, menus, drawer, modal, forms, previews, and other UI pieces to consume brand tokens; adds explicit 180ms transitions and cyan focus/hover glow visuals; updates modal/tab/button interactions and form focus styles.
Loading screen, index page, and 404 presentation
src/livecodes/styles/index.css, src/index.html, src/404.html
Applies dark-theme branding to loading and site metadata, replaces loading SVG/artwork and animations, updates social preview image references and theme-color meta, and refreshes the 404 page layout and styles.
Assets, manifest, and references
src/livecodes/html/app.html, src/livecodes/assets/site.webmanifest, functions/oembed.ts, src/livecodes/html/about.html, src/livecodes/i18n/locales/en/*
Switches toolbar logo to transparent variant, changes manifest name/short_name casing and theme_color/background_color to dark, updates oEmbed thumbnail and open-graph image references, adjusts About modal logo sizing and copyright years.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

  • live-codes/livecodes#978: Updates image/asset references (open-graph/oembed/512×512 SVG) related to branding changes.

Suggested reviewers

  • sharno
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Rebrand' is vague and generic, using a non-descriptive term that doesn't convey specific information about the changes in the changeset. Use a more specific title that captures the main change, such as 'Rebrand logo and update UI theme' or 'Add new LiveCodes logo and brand design system'.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch rebrand

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
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: 4

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/livecodes/styles/app.scss (1)

1-2323: ⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Fix Prettier formatting drift in this file.

CI is failing because this file does not match Prettier output. Please run Prettier on src/livecodes/styles/app.scss and commit the formatted result.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/livecodes/styles/app.scss` around lines 1 - 2323, Prettier formatting has
drifted in the large SCSS file (the one starting with :root and many --variable
declarations and meta.load-css includes); run Prettier (using the repo's
configured Prettier settings) against that stylesheet to reformat it, stage the
updated file, and commit the changes so the file matches Prettier output and CI
passes. Ensure you only change formatting (no semantic edits) and include the
reformatted file in the commit.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/docs/contribution/new-logo.html`:
- Around line 1-2: The file starts with a <head> element and is missing the
required document type and root <html> element; add the HTML5 doctype
declaration (<!doctype html>) followed by an opening <html lang="en"> before the
existing <head> tag and ensure a matching closing </html> at the end of the
document so the file has a proper root and avoids quirks mode (locate the
existing <head> / <meta charset> lines and wrap them with the new doctype and
html tags).

In `@src/404.html`:
- Around line 139-150: The .error-tag style uses low-opacity background and
muted red text which reduces contrast for small text; update the .error-tag rule
to increase text/background contrast by darkening the color (e.g., stronger red
hex or higher alpha), increasing background opacity, or increasing
font-weight/font-size so small text meets contrast; modify the .error-tag
selector in the stylesheet (look for .error-tag with font-size: 0.9rem and
color: `#ff4a5a` and background: rgba(255, 74, 90, 0.05)) to use a higher-contrast
color or background alpha and/or slightly larger font-weight/size to satisfy
accessibility contrast requirements.

In `@src/livecodes/styles/inc-light.scss`:
- Around line 79-98: The inc-light.scss brand token block (variables like
--brand-bg-deep, --brand-bg-elevated, --brand-cyan, --brand-dot-pattern, etc.)
is failing CI due to Prettier formatting drift; fix it by running your project's
Prettier formatter (e.g., npm run format or npx prettier --write
src/livecodes/styles/inc-light.scss), verify the token block is normalized
(spacing, trailing newline, consistent semicolons), and commit the formatted
file so CI passes.

In `@storybook/index.html`:
- Around line 99-102: The badge styling in storybook/index.html uses background:
rgba(0,200,255,0.1), border: rgba(0,200,255,0.25), color: `#00c8ff` and font-size:
0.7rem which produces insufficient contrast for small text; update the badge CSS
(the rules that set background, border, color, font-size) so the
foreground/background meet at least WCAG AA contrast for small text (4.5:1) —
e.g., darken the text color and/or increase background opacity (or switch to a
darker text like `#007a99` or a darker background rgba with higher alpha) and keep
the 0.7rem size or increase it if needed; ensure the border color is adjusted to
match the new palette and re-test contrast with an accessibility checker.

---

Outside diff comments:
In `@src/livecodes/styles/app.scss`:
- Around line 1-2323: Prettier formatting has drifted in the large SCSS file
(the one starting with :root and many --variable declarations and meta.load-css
includes); run Prettier (using the repo's configured Prettier settings) against
that stylesheet to reformat it, stage the updated file, and commit the changes
so the file matches Prettier output and CI passes. Ensure you only change
formatting (no semantic edits) and include the reformatted file in the commit.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: fe86aa26-b04d-4df3-9060-569b43882c79

📥 Commits

Reviewing files that changed from the base of the PR and between a272478 and 2985f1d.

⛔ Files ignored due to path filters (83)
  • docs/static/img/favicon.ico is excluded by !**/*.ico
  • docs/static/img/livecodes-logo-transparent.svg is excluded by !**/*.svg
  • docs/static/img/livecodes-logo.svg is excluded by !**/*.svg
  • docs/static/img/logo.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-animation.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-border.png is excluded by !**/*.png
  • images/logo/livecodes-logo-border.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-draw-animation-loop-nobg.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-draw-animation-loop.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-draw-animation-mono.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-draw-animation.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-flat-nobg.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-flat.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-glowing-dot.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-icon-border.png is excluded by !**/*.png
  • images/logo/livecodes-logo-mono-dark.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-mono-light.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-mono-nobg-dark.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-mono-nobg-light.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-nobg.png is excluded by !**/*.png
  • images/logo/livecodes-logo-nobg.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-single-path.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-src.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-text.png is excluded by !**/*.png
  • images/logo/livecodes-logo-text.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo-transparent.svg is excluded by !**/*.svg
  • images/logo/livecodes-logo.png is excluded by !**/*.png
  • images/logo/livecodes-logo.svg is excluded by !**/*.svg
  • images/logo/livecodes-text-logo-border.png is excluded by !**/*.png
  • images/logo/livecodes-text-logo-border.svg is excluded by !**/*.svg
  • images/logo/livecodes-text-logo-colored.svg is excluded by !**/*.svg
  • images/logo/livecodes-text-logo-flat-light.svg is excluded by !**/*.svg
  • images/logo/livecodes-text-logo-light.svg is excluded by !**/*.svg
  • src/favicon.ico is excluded by !**/*.ico
  • src/livecodes/assets/images/404.c5e490f0fd3e35509fd80c37ce93c3d4.png is excluded by !**/*.png
  • src/livecodes/assets/images/404.png is excluded by !**/*.png
  • src/livecodes/assets/images/android-chrome-192x192.png is excluded by !**/*.png
  • src/livecodes/assets/images/android-chrome-512x512.png is excluded by !**/*.png
  • src/livecodes/assets/images/apple-touch-icon.png is excluded by !**/*.png
  • src/livecodes/assets/images/edit-in-livecodes-button-dark.png is excluded by !**/*.png
  • src/livecodes/assets/images/edit-in-livecodes-button-dark.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/edit-in-livecodes-button.png is excluded by !**/*.png
  • src/livecodes/assets/images/edit-in-livecodes-button.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/edit-in-livecodes-dark.png is excluded by !**/*.png
  • src/livecodes/assets/images/edit-in-livecodes-dark.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/edit-in-livecodes.png is excluded by !**/*.png
  • src/livecodes/assets/images/edit-in-livecodes.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/favicon-16x16.png is excluded by !**/*.png
  • src/livecodes/assets/images/favicon-32x32.png is excluded by !**/*.png
  • src/livecodes/assets/images/favicon-96x96.png is excluded by !**/*.png
  • src/livecodes/assets/images/favicon.ico is excluded by !**/*.ico
  • src/livecodes/assets/images/favicon.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-nobg.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-logo-nobg.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo-small.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-logo-transparent.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-logo.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-logo.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-og.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-text-logo-nowrap-light.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-text-logo-nowrap-light.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-text-logo-nowrap.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-text-logo-nowrap.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/livecodes-text-logo.png is excluded by !**/*.png
  • src/livecodes/assets/images/livecodes-text-logo.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/mstile-144x144.png is excluded by !**/*.png
  • src/livecodes/assets/images/mstile-150x150.png is excluded by !**/*.png
  • src/livecodes/assets/images/mstile-310x150.png is excluded by !**/*.png
  • src/livecodes/assets/images/mstile-310x310.png is excluded by !**/*.png
  • src/livecodes/assets/images/mstile-70x70.png is excluded by !**/*.png
  • src/livecodes/assets/images/oembed.png is excluded by !**/*.png
  • src/livecodes/assets/images/oembed2.png is excluded by !**/*.png
  • src/livecodes/assets/images/open-graph.png is excluded by !**/*.png
  • src/livecodes/assets/images/try-in-livecodes-button-dark.png is excluded by !**/*.png
  • src/livecodes/assets/images/try-in-livecodes-button-dark.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/try-in-livecodes-button.png is excluded by !**/*.png
  • src/livecodes/assets/images/try-in-livecodes-button.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/try-in-livecodes-dark.png is excluded by !**/*.png
  • src/livecodes/assets/images/try-in-livecodes-dark.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/try-in-livecodes.png is excluded by !**/*.png
  • src/livecodes/assets/images/try-in-livecodes.svg is excluded by !**/*.svg
  • src/livecodes/assets/images/web-app-manifest-192x192.png is excluded by !**/*.png
  • src/livecodes/assets/images/web-app-manifest-512x512.png is excluded by !**/*.png
📒 Files selected for processing (18)
  • docs/docs/contribution/new-logo.html
  • docs/docs/contribution/ui-design-system.mdx
  • docs/src/components/HomepageFeatures.module.css
  • docs/src/components/HomepageFeatures.tsx
  • docs/src/components/LiveCodes.tsx
  • docs/src/css/custom.css
  • functions/oembed.ts
  • src/404.html
  • src/index.html
  • src/livecodes/assets/site.webmanifest
  • src/livecodes/core.ts
  • src/livecodes/html/app.html
  • src/livecodes/styles/app.scss
  • src/livecodes/styles/inc-light.scss
  • src/livecodes/styles/inc-modal.scss
  • src/livecodes/styles/index.css
  • src/livecodes/vendors.ts
  • storybook/index.html

Comment thread docs/docs/contribution/new-logo.html Outdated
Comment thread src/404.html
Comment on lines +139 to +150
.error-tag {
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 4px;
color: #ff4a5a;
font-weight: 600;
border: 1px solid rgba(255, 74, 90, 0.3);
padding: 4px 12px;
border-radius: 20px;
margin-top: 10px;
background: rgba(255, 74, 90, 0.05);
box-shadow: 0 0 15px rgba(255, 74, 90, 0.1);
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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Increase .error-tag text contrast for readability.

Line 149 uses a very low-opacity background with muted red text, which can drop below contrast requirements for small text.

Suggested fix
 .error-tag {
   font-size: 0.9rem;
   text-transform: uppercase;
   letter-spacing: 4px;
-  color: `#ff4a5a`;
+  color: `#ff8a95`;
   font-weight: 600;
-  border: 1px solid rgba(255, 74, 90, 0.3);
+  border: 1px solid rgba(255, 138, 149, 0.45);
   padding: 4px 12px;
   border-radius: 20px;
   margin-top: 10px;
-  background: rgba(255, 74, 90, 0.05);
+  background: rgba(255, 74, 90, 0.12);
   box-shadow: 0 0 15px rgba(255, 74, 90, 0.1);
 }
📝 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
.error-tag {
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 4px;
color: #ff4a5a;
font-weight: 600;
border: 1px solid rgba(255, 74, 90, 0.3);
padding: 4px 12px;
border-radius: 20px;
margin-top: 10px;
background: rgba(255, 74, 90, 0.05);
box-shadow: 0 0 15px rgba(255, 74, 90, 0.1);
.error-tag {
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 4px;
color: `#ff8a95`;
font-weight: 600;
border: 1px solid rgba(255, 138, 149, 0.45);
padding: 4px 12px;
border-radius: 20px;
margin-top: 10px;
background: rgba(255, 74, 90, 0.12);
box-shadow: 0 0 15px rgba(255, 74, 90, 0.1);
🧰 Tools
🪛 GitHub Check: SonarCloud Code Analysis

[warning] 149-149: Text does not meet the minimal contrast requirement with its background.

See more on https://sonarcloud.io/project/issues?id=live-codes_livecodes&issues=AZ5N8vkxjNg73_MRrZG2&open=AZ5N8vkxjNg73_MRrZG2&pullRequest=979

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/404.html` around lines 139 - 150, The .error-tag style uses low-opacity
background and muted red text which reduces contrast for small text; update the
.error-tag rule to increase text/background contrast by darkening the color
(e.g., stronger red hex or higher alpha), increasing background opacity, or
increasing font-weight/font-size so small text meets contrast; modify the
.error-tag selector in the stylesheet (look for .error-tag with font-size:
0.9rem and color: `#ff4a5a` and background: rgba(255, 74, 90, 0.05)) to use a
higher-contrast color or background alpha and/or slightly larger
font-weight/size to satisfy accessibility contrast requirements.

Comment thread src/livecodes/styles/inc-light.scss
Comment thread storybook/index.html
Comment on lines +99 to 102
background: rgba(0, 200, 255, 0.1);
border: 1px solid rgba(0, 200, 255, 0.25);
color: #00c8ff;
font-size: 0.7rem;
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.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Increase badge text contrast against its background.

The badge foreground/background combo appears below minimum contrast for small text, which hurts readability/accessibility.

Suggested fix
 .badge {
   display: inline-block;
-  background: rgba(0, 200, 255, 0.1);
+  background: rgba(0, 200, 255, 0.18);
   border: 1px solid rgba(0, 200, 255, 0.25);
-  color: `#00c8ff`;
+  color: `#007aa3`;
   font-size: 0.7rem;
   font-weight: 600;
📝 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
background: rgba(0, 200, 255, 0.1);
border: 1px solid rgba(0, 200, 255, 0.25);
color: #00c8ff;
font-size: 0.7rem;
background: rgba(0, 200, 255, 0.18);
border: 1px solid rgba(0, 200, 255, 0.25);
color: `#007aa3`;
font-size: 0.7rem;
🧰 Tools
🪛 GitHub Check: SonarCloud Code Analysis

[warning] 101-101: Text does not meet the minimal contrast requirement with its background.

See more on https://sonarcloud.io/project/issues?id=live-codes_livecodes&issues=AZ5N8vhXjNg73_MRrZG1&open=AZ5N8vhXjNg73_MRrZG1&pullRequest=979

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@storybook/index.html` around lines 99 - 102, The badge styling in
storybook/index.html uses background: rgba(0,200,255,0.1), border:
rgba(0,200,255,0.25), color: `#00c8ff` and font-size: 0.7rem which produces
insufficient contrast for small text; update the badge CSS (the rules that set
background, border, color, font-size) so the foreground/background meet at least
WCAG AA contrast for small text (4.5:1) — e.g., darken the text color and/or
increase background opacity (or switch to a darker text like `#007a99` or a darker
background rgba with higher alpha) and keep the 0.7rem size or increase it if
needed; ensure the border color is adjusted to match the new palette and re-test
contrast with an accessibility checker.

Copy link
Copy Markdown
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: 1

🧹 Nitpick comments (2)
docs/docs/contribution/new-logo.html (1)

481-524: ⚖️ Poor tradeoff

Consider extracting repeated SVG icon into a reusable symbol.

The icon SVG is duplicated ~9 times throughout the page (at different sizes) with nearly identical markup except for filter IDs. This creates significant markup repetition (~3KB+).

While the current approach works, you could optimize by:

  1. Defining the icon once in an SVG <defs><symbol> block at the top
  2. Using <use> references with size/filter overrides
  3. Or externalizing to a single SVG file with width/height set via CSS

The current approach is valid for a static demo page, but the optimization would reduce file size and improve maintainability.

Also applies to: 652-689, 713-749, 755-787, 793-826, 831-863, 869-901, 913-945, 990-1022

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/docs/contribution/new-logo.html` around lines 481 - 524, Extract the
repeated SVG markup into a single reusable symbol (e.g., create a top-level
<defs><symbol id="livecodes-icon"> containing the rects, polylines, circle and
the shared defs like linearGradient id="bgG", pattern id="dotP", filter ids "gG"
and "dG"), then replace each duplicated SVG instance with a lightweight <svg
width="..." height="..." role="img" aria-label="..."><use href="`#livecodes-icon`"
/></svg> (or reference the external SVG file if you prefer). Ensure the symbol’s
internal ids remain unique site-wide (keep the filters/gradients inside the
single defs) or rename them consistently so no duplicate IDs occur; adjust sizes
via the outer <svg> attributes or CSS and remove the duplicated markup present
in the locations that currently use ids bgG, dotP, gG, and dG.
src/livecodes/styles/inc-modal.scss (1)

439-439: 💤 Low value

Document the magic number in the margin calculation.

The calc(1rem - 6px) adjustment uses a magic number (-6px) without explanation. Adding a comment would clarify why this specific offset is needed (e.g., "Compensate for X border/padding" or "Align with Y element").

📝 Suggested comment
       img {
         margin-bottom: 1rem;
-        margin-inline-start: calc(1rem - 6px);
+        margin-inline-start: calc(1rem - 6px); // Offset to align with container edge
       }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/livecodes/styles/inc-modal.scss` at line 439, The declaration
"margin-inline-start: calc(1rem - 6px)" uses a magic offset (-6px) without
context; add a concise comment immediately above this declaration explaining why
6px is subtracted (e.g., "Compensates for X border/padding" or "Aligns with Y
element baseline") so future readers know the exact layout rationale and can
safely adjust or remove it.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@src/livecodes/styles/inc-modal.scss`:
- Line 256: Remove the unused commented rule and add a clarifying comment:
delete the commented-out "// overflow: auto;" inside the .modal-container block
(scrolling is already handled by `#modal-container` { overflow: scroll; }), and
add a short inline comment next to the .about-logo img rule (the one with
margin-inline-start: calc(1rem - 6px);) explaining that the "-6px" compensates
for the logo's built-in padding/edge offset to visually align the image with
surrounding text.

---

Nitpick comments:
In `@docs/docs/contribution/new-logo.html`:
- Around line 481-524: Extract the repeated SVG markup into a single reusable
symbol (e.g., create a top-level <defs><symbol id="livecodes-icon"> containing
the rects, polylines, circle and the shared defs like linearGradient id="bgG",
pattern id="dotP", filter ids "gG" and "dG"), then replace each duplicated SVG
instance with a lightweight <svg width="..." height="..." role="img"
aria-label="..."><use href="`#livecodes-icon`" /></svg> (or reference the external
SVG file if you prefer). Ensure the symbol’s internal ids remain unique
site-wide (keep the filters/gradients inside the single defs) or rename them
consistently so no duplicate IDs occur; adjust sizes via the outer <svg>
attributes or CSS and remove the duplicated markup present in the locations that
currently use ids bgG, dotP, gG, and dG.

In `@src/livecodes/styles/inc-modal.scss`:
- Line 439: The declaration "margin-inline-start: calc(1rem - 6px)" uses a magic
offset (-6px) without context; add a concise comment immediately above this
declaration explaining why 6px is subtracted (e.g., "Compensates for X
border/padding" or "Aligns with Y element baseline") so future readers know the
exact layout rationale and can safely adjust or remove it.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c46a3de2-7e21-489a-8076-0181e12179f9

📥 Commits

Reviewing files that changed from the base of the PR and between 457d888 and 3cc1eb9.

📒 Files selected for processing (3)
  • docs/docs/contribution/new-logo.html
  • src/livecodes/html/about.html
  • src/livecodes/styles/inc-modal.scss
✅ Files skipped from review due to trivial changes (1)
  • src/livecodes/html/about.html

height: 100%;
margin: 0 auto;
overflow: auto;
// overflow: auto;
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.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
# Check if .modal-container has overflow handling in child elements or if parent `#modal` handles it
rg -n -A5 '\.modal-container' src/livecodes/styles/ | rg 'overflow'
rg -n -B3 -A3 '`#modal-container`' src/livecodes/styles/ | rg 'overflow'

Repository: live-codes/livecodes

Length of output: 188


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="src/livecodes/styles/inc-modal.scss"

echo "== Context around line 256 =="
nl -ba "$FILE" | sed -n '235,275p'

echo
echo "== Find modal-container blocks and nearby overflow =="
rg -n --fixed-string ".modal-container" "$FILE" || true
rg -n -C2 "overflow" "$FILE" || true
rg -n -C3 --fixed-string "`#modal-container`" "$FILE" || true

echo
echo "== Show any overflow occurrences with surrounding lines =="
rg -n -A4 -B2 "overflow" "$FILE" || true

Repository: live-codes/livecodes

Length of output: 155


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="src/livecodes/styles/inc-modal.scss"

echo "== Context around line 256 =="
cat -n "$FILE" | sed -n '240,270p'

echo
echo "== Find modal-container blocks and nearby overflow =="
rg -n --fixed-string ".modal-container" "$FILE" || true
rg -n -C2 "overflow" "$FILE" || true
rg -n -C3 --fixed-string "`#modal-container`" "$FILE" || true

echo
echo "== Show any overflow occurrences with surrounding lines =="
rg -n -A4 -B2 "overflow" "$FILE" || true

Repository: live-codes/livecodes

Length of output: 8017


🏁 Script executed:

#!/bin/bash
set -euo pipefail

FILE="src/livecodes/styles/inc-modal.scss"

echo "== Lines mentioning modal-container / `#modal` =="
rg -n --fixed-strings ".modal-container" "`#modal`" "$FILE" || true

echo
echo "== Context around .modal-container (80 lines around 252) =="
cat -n "$FILE" | sed -n '215,310p'

echo
echo "== Context around overflow: scroll (~line 77) =="
cat -n "$FILE" | sed -n '40,110p'

echo
echo "== Context around overflow-y: auto (~line 414) =="
cat -n "$FILE" | sed -n '380,460p'

echo
echo "== Context around .about-logo img (~line 439) =="
cat -n "$FILE" | sed -n '420,460p'

Repository: live-codes/livecodes

Length of output: 7744


Remove/comment explanation for disabled overflow rule

  • In src/livecodes/styles/inc-modal.scss, delete the commented-out // overflow: auto; in .modal-container (the file already sets scrolling via #modal-container { overflow: scroll; }, so the rationale for keeping it commented is unclear).
  • Add a short comment for .about-logo img { margin-inline-start: calc(1rem - 6px); } explaining the -6px offset.
🧰 Tools
🪛 GitHub Check: SonarCloud Code Analysis

[warning] 256-256: Remove this commented out code.

See more on https://sonarcloud.io/project/issues?id=live-codes_livecodes&issues=AZ5RgU-dl4NYYaBjvAyI&open=AZ5RgU-dl4NYYaBjvAyI&pullRequest=979

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/livecodes/styles/inc-modal.scss` at line 256, Remove the unused commented
rule and add a clarifying comment: delete the commented-out "// overflow: auto;"
inside the .modal-container block (scrolling is already handled by
`#modal-container` { overflow: scroll; }), and add a short inline comment next to
the .about-logo img rule (the one with margin-inline-start: calc(1rem - 6px);)
explaining that the "-6px" compensates for the logo's built-in padding/edge
offset to visually align the image with surrounding text.

@sonarqubecloud
Copy link
Copy Markdown

@hatemhosny hatemhosny merged commit 1865085 into develop May 22, 2026
20 checks passed
@livecodes-ci
Copy link
Copy Markdown
Contributor

livecodes-ci Bot commented May 22, 2026

i18n Actions

Source PR has been merged into the default branch.

Maintainers can comment .i18n-update-push to trigger the i18n update workflow and push the changes to Lokalise.

@hatemhosny
Copy link
Copy Markdown
Collaborator Author

.i18n-update-push

@livecodes-ci
Copy link
Copy Markdown
Contributor

livecodes-ci Bot commented May 22, 2026

i18n Actions: .i18n-update-push

Localization updated and pushed to Lokalise.

Name Description
New Branch for i18n i18n/live-codes/rebrand
Last Commit SHA 1865085

Maintainers can comment .i18n-update-pull after translation is done to trigger the i18n pull workflow and pull the changes back to Github.

@hatemhosny
Copy link
Copy Markdown
Collaborator Author

.i18n-update-pull

@livecodes-ci
Copy link
Copy Markdown
Contributor

livecodes-ci Bot commented May 22, 2026

i18n Actions: .i18n-update-pull

Localization pulled from Lokalise.

Name Description
i18n Branch i18n/live-codes/rebrand
Last Commit SHA 0c05382
i18n PR #981

@livecodes-ci livecodes-ci Bot mentioned this pull request May 22, 2026
12 tasks
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