Accessibility audit

[!NOTE]
Total issues: 42

🟢 Done => 23 issues
🟡 Ongoing (approved, almost ok) => 0 issue
🟠 Ongoing (not reviewed nor approved yet) => 3 issues
🔴 Not started (questions still pending) => 0 issue
🔴🔴 Won't be done (because we can't fix it) => 16 issues (covering 5 topics)

Description
An accessibility audit has been done on the v5.3.3 documentation Boosted website, the 30th of July 2024. Here are the results.

[!IMPORTANT]
Crucial information necessary for users to succeed.

These results are not exhaustive. They are given by way of example, to illustrate the anomalies. It is the responsibility of the project team to apply these corrective measures systematically to all similar cases.
Pages

Homepage
Docs
Examples
Design guidelines
Overview
Brand
Translations
Cookies

Homepage
🟢 issue-0-1

Test: Is the page title appropriate?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-un-titre-aux-pages
Summary: Irrelevant page title
Description: Each page should have a unique title, making it easy to understand its role.
The role "home page" should be integrated into the page title.
Solution: Fill in the <title> element with keywords to help understand the page's role. Information can be ordered from the most specific to the least specific, or vice versa (no rules).
Technical solution: <title>Home - Orange Boosted....</title>
Priority: P1
PR: #2698

🟢 isssue-0-2

Test: Do the images have appropriate text alternatives? (decorative  should have empty alt)
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The ALT of a decorative image is irrelevant
Description: The ALT attribute of a decorative image must be empty, so that the image is ignored by technical aids.
Case of the image "boosted-guidelines.png" with alt="Boosted design guidelines". This image is decorative.
Solution: Enter an empty alt.
Technical solution:
Priority: P0
PR: #2690

🟠 isssue-0-3

Test: Do the images have appropriate text alternatives? (decorative SVGs should be aria-hidden)
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The aria-hidden attribute of a decorative SVG tag is not filled in
Description: A decorative SVG image (tag) must have an aria-hidden="true" attribute and a focusable="false" attribute.
Solution: Add the aria-hidden and focusable attributes to the element's SVG tag.
Technical solution: <svg aria-hidden="true" focusable="false"> ... </svg>. Find out more at https://a11y-guidelines.orange.com/fr/articles/svg-accessibles
Priority: P0
PR:

#2691
https://github.com/twbs/bootstrap/pull/40756 on Bootstrap side

🔴🔴 isssue-0-4

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: Insufficient contrast for links
Description: Links must have a sufficient contrast ratio with surrounding text when hovered over.
Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1
seen with the accessibility team: this is a very important design issue and it can't be changed in all Boosted like this. This needs to be addressed when creating OUDS with a new design for the links.

🔴🔴 isssue-0-5

Test: Is information about the user's location within a page set available?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

🟢 isssue-0-6

Test: If a keyboard shortcut using a single key is available, does it meet one of the conditions below?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-clavier/#rendre-le-parcours-du-focus-sequentiel-et-logique-sans-piege-clavier
Summary: Non-logical focus shift
Description: Focus movement does not follow a logical reading order. Focus on "Copy to clipboard" before content.
Solution: First go over the content, then suggest copying it.
Technical solution:
Priority: P3
PR: #2699

🟢 isssue-0-7

Test: Is the content still understandable after disabling CSS?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/mise-en-page/#separer-le-contenu-de-linteractivite-et-de-la-presentation
Summary: Content carrying information is not preserved
Description: After CSS deactivation, information-bearing content must be preserved. Content generated by CSS should be decorative only. Case of the character "{rows}quot; in the order examples.
Solution: No information should be contained in CSS properties (::before, ::after, content:...).
Technical solution:
Priority: P3
seen with accessibility team: false positive, nothing to do

Docs
🟢 isssue-1-1

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

Some content is visually displayed as headings in the left-hand pane/menu, and should be treated as such.
The title of the right-hand menu "On this page" is visually a heading and should be treated as such.
The headings of the sections in the left-hand menu.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR:

#2705 (for right side menu) (still having some questions for EASE team)
#2727

🟢 isssue-1-2

Test: Is the content semantically structured?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#respecter-la-semantique-html
Summary: Text without semantics
Description: Textual content is not encompassed by a semantic tag. Without appropriate semantics, a text has no meaning in terms of the document's structure for technical aid users.

Incompatibility with Orange Design System... and the link "More information".
Orange Design System recommendation...

Solution: Add the appropriate semantic structure to this textual content, for example, a paragraph
, a quote <q>,
... Note:
 and  are not semantic tags.
Technical solution:
Priority: P2
PR: #2722

🟠 isssue-1-3

Test: Do the images have appropriate text alternatives?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The focusable attribute of a decorative SVG tag is not filled in
Description: A decorative SVG image (tag) must have an aria-hidden="true" attribute and a focusable="false" attribute.
Solution: Add the aria-hidden and focusable attributes to the element's SVG tag.
Technical solution: "<svg aria-hidden="true" focusable="false"> … </svg>.
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The ALT of an image containing text is not filled in or is irrelevant
Description: The ALT attribute of an image containing text must contain the same text as the image.

The image "Hello Boosted and Webpack!" for "your local development server should now look like this:" may be confusing because the ALT indicates "Webpack dev server running".

Solution: At a minimum, report in the ALT the text displayed by the image.
Technical solution:
Priority: P0
PR: #2696

🔴🔴 isssue-1-5

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast between text and background
Description: "Le contraste doit être suffisant pour comprendre l'information portée par tous les textes.
Description: The contrast between the text and the background must be sufficient to ensure that the information is legible.

Links in orange on a white background are not compliant.

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1 (seen with )

🔴🔴 isssue-1-6

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast for unlined links
Description: Unlined links must have a sufficient contrast ratio with surrounding text.

Insufficient contrast for unlined links in the left-hand pane/menu.

Solution: Ensure a minimum contrast of 4.5:1 between an unlined link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1
seen with the accessibility team: this is a very important design issue and it can't be changed in all Boosted like this. This needs to be addressed when creating OUDS with a new design for the links.

🔴🔴 isssue-1-7

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

🟢 isssue-1-8

Test: Is the size of clickable or touch-sensitive areas sufficient?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/mise-en-page/#definir-des-zones-sensibles-de-taille-suffisante
Summary: Overlapping clickable areas
Description: Navigation menu on the right: On this page.
Solution:
Technical solution:
Priority: P2
PR: #2726

Examples
🟠 isssue-2-1

Test: Do the images have appropriate text alternatives? (decorative SVGs missing aria-hidden)
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The aria-hidden attribute of a decorative SVG tag is not filled in
Description: A decorative SVG image (tag) must have an aria-hidden="true" attribute and a focusable="false" attribute.

Decorative icons in the "Starters" section.

Solution: Add the aria-hidden and focusable attributes to the element's SVG tag.
Technical solution: <svg aria-hidden="true" focusable="false"> … </svg>. For more information: https://a11y-guidelines.orange.com/fr/articles/svg-accessibles/
Priority: P0
PR:

#2691
https://github.com/twbs/bootstrap/pull/40756 on Bootstrap side

🔴🔴 isssue-2-2

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast between text and background
Description: The contrast between the text and the background must be sufficient to ensure that the information is legible.

Links in orange on a white or grey background are not compliant (currently font = 18px gives an insufficient contrast ratio).

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1
seen with the accessibility team: this is a very important design issue and it can't be changed in all Boosted like this. This needs to be addressed when creating OUDS with a new design for the links.

🟢 isssue-2-3

Test: Is each link label explicit, at least in its context?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#rendre-les-intitules-des-liens-et-des-boutons-accessibles
Summary: Presence of link labels that are not understandable in their contexts
Description: The target of a link is not understandable even with its direct context (surrounding text).

Links "Edit in StackBlitz" point to different targets.
No information about the link "Edit in StackBlitz" in the same paragraph (context).

Solution: Add a distinctive information in the surrounding text.
Technical solution: The solution depends on the context of use of the element:

element in a paragraph: complete the paragraph text (
[…]
)
element in a list: complete a list item (
,
)
element in a table cell: complete the cell text ([…]	) or complete the direct cell header ([…]	).

Priority: P3
PR: https://github.com/twbs/bootstrap/pull/40766 (merged)

🟢 isssue-2-4

Test: Is each link label explicit, at least in its context?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#rendre-les-intitules-des-liens-et-des-boutons-accessibles
Summary: Presence of link labels that are not understandable in their contexts
Description: Links with identical labels that point to different destinations.

"Bootstrap" in the footer.

Solution: Add a distinctive information in the surrounding text.
Technical solution:
Priority: P3
PR: #2706

🔴🔴 isssue-2-5

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

Design guidelines
🟢 isssue-3-1

Test: Is the content semantically structured?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#respecter-la-semantique-html
Summary: Absence of HTML list semantics
Description: "Les éléments présentés visuellement comme des listes doivent être structurés avec une sémantique de liste.
Description: Elements visually presented as lists must be structured with list semantics.

The elements of "Other platforms in the Orange Design System" are visually list elements.

Solution: Use appropriate list semantics
,
 or
,
 and

Technical solution:
Priority: P2
PR: #2702

🟢 isssue-3-2

Test: Does the accessible name of the interface components contain at least the visible label on the screen?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#rendre-les-intitules-des-liens-et-des-boutons-accessibles
Summary: Absence of visible text in the accessible name
Description: The text of the displayed label (the textual label or the text of the image visible on the screen) must be present (first, if possible) in the (accessible) name of this component.

Visit system.design.orange.com / Design system for web (Link has a title which is different from text content.)

Solution: Modify the accessible name of the element to include the text visible on the screen, if possible first.
Technical solution: Several solutions are possible to redefine the accessible name: aria-labelledby, aria-label, title, hidden accessible text.
Priority: P3
PR: #2703

🔴🔴 isssue-3-3

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

Overview
🟢 isssue-4-1

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

The headings of the sections in the left-hand menu.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR: #2727

🟢 isssue-4-2

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Inappropriate level titles
Description: Headings of different levels must be relevant and accurately describe the content section they present.

h1 for "About" is not precise enough.

Solution: Specify the context.
Technical solution:
About Boosted

Priority: P1
PR: #2720

🔴🔴 isssue-4-3

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast between text and background
Description: The contrast between the text and the background must be sufficient to ensure that the information is legible.

Links in orange on a white background are not compliant.

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1
seen with the accessibility team: this is a very important design issue and it can't be changed in all Boosted like this. This needs to be addressed when creating OUDS with a new design for the links.

🔴🔴 isssue-4-4

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

Brand
🟢 isssue-5-1

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

On this page is visually a heading.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR: #2705

🟢 isssue-5-2

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

The headings of the sections in the left-hand menu.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR: #2727

🟢 isssue-5-3

Test: Do the images have appropriate text alternatives? (figcaption label and structure)
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-non-textuel/#fournir-un-equivalent-textuel-pour-les-images-et-les-cadres
Summary: The ALT of a decorative image is irrelevant
Description: The content of the ALT attribute of an image is not relevant to its context.

Case of the Orange and Orange Business Services logos with captions.

Solution: For a "figcaption", a role="group" must be added to the figure, and an aria-label that repeats the figcaption, in addition to having an alt that describes the image.
Technical solution: Example:

Master Logo

Priority: P0
PR:

#2709 for changing the label...
Discussed with EASE experts: ok for the
/
 as is

🟢 isssue-5-4

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast between text and background (figcaption color in dark mode)
Description: The contrast between the text and the background must be sufficient to ensure that the information is legible.

The contrast ratio of the text in the figcaption of the Orange and Orange Business Services logos is insufficient.

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1
PR: #2697

🔴🔴 isssue-5-5

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

Translations
🟢 isssue-6-1

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

The headings of the sections in the left-hand menu.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR: #2727

🟢 isssue-6-2

Test: Are language changes indicated?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#indiquer-la-langue-principale-et-les-changements-de-langue
Summary: Language change not indicated
Description: Words and expressions in a foreign language must be indicated to users.

Links to Bootstrap in a foreign language.

Solution: Add a lang attribute to content in a foreign language.
Technical solution: Click here
Priority: P3
PR: https://github.com/twbs/bootstrap/pull/40767 and #2708

🔴🔴 isssue-6-3

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast between text and background
Description: The contrast between the text and the background must be sufficient to ensure that the information is legible.

The contrast ratio is insufficient on mouseover between the text and the background for the Bootstrap links in a foreign language.

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1 (questions on links)

🔴🔴 isssue-6-4

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

Cookies
🟢  isssue-7-1

Test: Is each form field labeled?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/formulaires/#rendre-accessibles-les-champs-de-formulaire
Summary: Visually distant label
Description: All form elements must have a visible label nearby.

"Google Tag Manager" on the "Cookies management panel"

Solution: Place a relevant label, visible near each form field.
Technical solution:
Priority: P0
#2695

🟢 isssue-7-2

Test: Is the information structured by the appropriate use of headings? (left menu)
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

The headings of the sections in the left-hand menu.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
PR: #2727

🟢 isssue-7-3

Test: Is the information structured by the appropriate use of headings?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/contenu-textuel/#donner-des-titres-aux-rubriques
Summary: Incomplete hierarchy
Description: The page must be structured using headings of different levels.

"Manage cookies preferences" should be a title.

Solution: All content treated visually as headings must have a title semantics (tags
 to
).
Technical solution:
Priority: P1
seen with accessibility team: false positive, nothing to do

🔴🔴 isssue-7-4

Test: Is there sufficient contrast between the text color and the background color (except for special cases)?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/couleurs-et-contrastes/#assurer-un-contraste-suffisant-entre-les-couleurs-de-premier-plan-et-de-fond
Summary: Insufficient contrast for hovered links
Description: Hovered links must have a sufficient contrast ratio with surrounding text.

Orange on white with insufficient ratio.

Solution: Ensure a minimum contrast of 4.5:1 between a link and surrounding text of normal sizes (less than 24px CSS and 19px bold CSS). Ensure a minimum contrast of 3:1 between an unlined link and surrounding text of large sizes (greater than 24px CSS and 19px bold CSS).
Technical solution:
Priority: P1 (questions on links)

🔴🔴 isssue-7-5

Test: Are status messages correctly rendered?
Recommendation: https://a11y-guidelines.orange.com/fr/web/developper/navigation-generale/#permettre-de-connaitre-le-resultat-dune-interaction-utilisateur-a-laide-de-messages-contextuels
Summary: No ARIA roles (status, alert, alertdialog...) or dynamic aria-live regions
Description: Alert messages are not perceived from a screen reader. Case of the search result.
Solution: Apply an ARIA role ("status", "alert", "alertdialog", etc...) or "aria-live" attribute to the alert message so that it is automatically vocalized. Examples:

 […]

[...]

Technical solution:
Priority: P2 (This comes from a tool and cannot be changed)

🔴🔴 Bonus

See https://github.com/Orange-OpenSource/Orange-Boosted-Bootstrap/pull/2695#issuecomment-2345354812
We checked how to fix it from outside, and it's not possible right now as we should recreate the focus trap from scratch

@hannahiss I think we can close it as completed.


Updating go version.

Go version 1.7 -> 1.9

@krzysied - format enforce by "go lint" changed between those versions.
You need to run:
hack/update-gofmt.sh
to fix that.
[Though please make the output of that as a separate commit of this PR.]

/lgtm


Feat: Prometheus exporter

This PR adds a prometheus exporter and wires it up to the node behind the prometheus feature flag. No metrics are currently implemented to avoid conflicts with ongoing work.

rebased.

Rebased.

Rebased.


Build(deps-dev): Bump lint-staged from 13.0.0 to 13.0.1 (#3602)

Pull request opened by the merge tool on behalf of #3602

Merged in ed469d494cbcb0b1d8e88d8c797b4077b33feb8d


store.dispatch(action) returns undefined with redux-promise-middleware 2.2.4

Hi,
It seems that with the last version of redux-promise-middleware (2.2.4) the function store.dispatch(action) returns undefined.
I don't know why but it throws errors when refreshing "Todos" page and when logging on "Me" page.

it also happens with 2.1.1 which is in current este, but works in 2.0.0

It works in 2.2.3

Thank you for info. I will take a look today.

What do you expect from the return value of store.dispatch and how is it used in a way that breaks your implementation?
Originally the redux-promise-middleware was retuning a promise which went against the API of store.dispatch as described in redux -- where it should be returning the dispatched action!
I'm hoping to change this soon, to return the originally dispatched action containing a promise for the payload.

I expect a promise that is always fullfilled (when the provided promise is fullfilled or rejected) and returns the action that may have an error property as described in Flux Standard Action.
I can use it like that :
store.dispatch(requestPosts)
.then(action => {
    if (action.error)
        console.log(action.error);
});

The API for store.dispatch is to expect an action object, not a promise object.
http://redux.js.org/docs/api/Store.html#dispatch

Returns
(Object†): The dispatched action.

So you should be changing this code anyway, it might be more reliable to perform the error logging in the action creator that creates the promise itself.
I'll be making a PR so that redux-promise-middleware returns the dispatched action as documented when I'm free, but you'll need to change your code to:
try {
  const action = store.dispatch(requestPosts)
  const resolvedValue = await action.payload.promise;
  ...
} catch(error) {
  console.log(error)
}

You will no longer be able to get at the _FULFILLED or _REJECTED actions from the original dispatch call as redux-middleware now triggers new dispatches internally to increase composition with other middleware.

https://github.com/pburtchaell/redux-promise-middleware/pull/38

OK. I Agree that respecting the Redux API for store.dispatch is the best solution.

cc @grabbou

I have the same case I am not sure if returning action is a good move though. Even redux-thunk by gaeron returns promise, so you can write stuff like:
Promise.all([
        dispatch(makeASandwichWithSecretSauce('Me')),
        dispatch(makeASandwichWithSecretSauce('My wife'))
      ])

or
return function (dispatch) {
    return fetchSecretSauce().then(
      sauce => dispatch(makeASandwich(forPerson, sauce)),
      error => dispatch(apologize('The Sandwich Shop', forPerson, error))
    );
  };

quite easily.

Redux-thunk doesn't return a promise -- it returns the action!
https://github.com/gaearon/redux-thunk/blob/master/src/index.js#L4
You can easily do:
Promise.all(_.pluck([
    dispatch(makeASandwichWithSecretSauce('Me')),
    dispatch(makeASandwichWithSecretSauce('My wife'))
], 'payload.promise'))

Yeah, my bad, I meant https://github.com/acdlite/redux-promise/blob/master/src/tests/promiseMiddleware-test.js#L30-L33

I can understand your point of view: working with a promise directly would be more convenient for some use cases. However, the docs are not explicit about how "flexible" this API for store.dispatch is, and I think it's most appropriate to respect the intended API. I understand that some other middleware may deviate from this API, but I think it would be better if the ecosystem was more consistent.
So right now, we're returning the full action that has been initially dispatched through the store (also containing the promise).  This gives full flexibility to any user, as they can work with both the starting action (containing any optimistic update data, meta and the action.type) as well as the promise that will resolve to one of the second actions... There is no loss in functionality here and the docs are respected. The only down side, for your use case, is that working with the promise requires a little more verbosity (2 words or a condition over action.error).

So I released the current implementation (which returns the action object and not the promise) by @tomatau as version 2.3.0. I have opened an issue on https://github.com/pburtchaell/redux-promise-middleware/issues/39 for anyone who wants to continue the discussion of returning the promise v. returning the action.

Nice discussion, thank you guys. I agree with @tomatau, and going to update Este now.

fixed


Ionic Build Failure with AdMob Plugin

Hello - I'm running into an error when building my Android app with AdMob Simple......I had a successful build 28 days ago and things were working just fine. Now I'm trying to build and I get the error:

I'm building with Ionic and using the latest build stack there. I had no issues building with iOS, only with Android so I'm very confused. Is there a new version of the plugin that I need? Please help.
Any advice or help you can give is greatly appreciated.

Hello - is this plugin still supported? It will no longer build with Android due to a Java error on build.....please help?


Motion Sensor on Floodlights no longer available as sensor/entity

On previous versions prior to 4.0 both floodlights showed a motion. Currently on 4.0.2 both sensor now show unavailable. I am only showing sensor.garage_floodlight_info(battery %) and light.garage_floodlight_light.

@jeffgraham-hub Thanks for the logs, I see a couple of errors in there.  Let me see if I can code up a fix.

Just pushed 4.0.3 with what I believe should fix this.  Honestly can't even figure out how that happened, it was missing two lines completely.  There was actually another minor issue as well, but it was mostly cosmetic so thanks again for the logs.  Let me know if somehow this doesn't correct the issue.

The sensors are now available but I'm not getting any motion events. I am still showing errors iso I have attached new logs but I am not sure if it is related.

-------------------------------------------------------
| Ring Devices via MQTT                               |
| Add-on for Home Assistant                           |
|                                                     |
| Report issues at:                                   |
| https://github.com/tsightler/ring-mqtt-ha-addon     |
-------------------------------------------------------
ring-mqtt.js version 4.0.3
Node version v12.18.3
NPM version 6.14.6
git version 2.26.2
-------------------------------------------------------
Running "npm audit fix" to update packages with any vulnerabilities...
up to date in 10.337s
25 packages are looking for funding
  run `npm fund` for details
fixed 0 of 1 vulnerability in 420 scanned packages
  1 vulnerability required manual review and could not be updated
-------------------------------------------------------
Using discovered MQTT Host: core-mosquitto
Using discovered MQTT Port: 1883
Using discovered MQTT User: addons
Using discovered MQTT password: <hidden>
-------------------------------------------------------
Running ring-mqtt...
2020-09-09T13:25:26.443Z ring-mqtt Using configuration file: /data/options.json
2020-09-09T13:25:26.450Z ring-mqtt Reading latest data from state file: /data/ring-state.json
2020-09-09T13:25:26.710Z ring-mqtt Attempting connection to Ring API using saved refresh token.
2020-09-09T13:25:28.369Z ring-mqtt Connection to Ring API successful
2020-09-09T13:25:28.372Z ring-mqtt Starting connection to MQTT broker...
2020-09-09T13:25:28.728Z ring-mqtt File /data/ring-state.json saved with updated refresh token.
2020-09-09T13:25:28.791Z ring-mqtt MQTT connection established, processing locations...
2020-09-09T13:25:29.808Z ring-mqtt --------------------------------------------------------------------------------
2020-09-09T13:25:29.809Z ring-mqtt Found new location Home with id fdd273b5-7916-4ae3-84fc-7d06510776ba
2020-09-09T13:25:30.743Z ring-mqtt   New device of type: group.light-group.beams
2020-09-09T13:25:30.744Z ring-mqtt   New device of type: switch.multilevel.beams
2020-09-09T13:25:30.747Z ring-mqtt   New device of type: switch.multilevel.beams
2020-09-09T13:25:30.748Z ring-mqtt   New device of type: security-panel
2020-09-09T13:25:30.750Z ring-mqtt   New device of type: hub.redsky
2020-09-09T13:25:30.751Z ring-mqtt   New device of type: security-keypad
2020-09-09T13:25:30.752Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.753Z ring-mqtt   New device of type: sensor.motion
2020-09-09T13:25:30.754Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.754Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.755Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.755Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.756Z ring-mqtt   New device of type: sensor.motion
2020-09-09T13:25:30.757Z ring-mqtt   New device of type: alarm.smoke
2020-09-09T13:25:30.758Z ring-mqtt   New device of type: alarm.co
2020-09-09T13:25:30.758Z ring-mqtt   New device of type: alarm.smoke
2020-09-09T13:25:30.759Z ring-mqtt   New device of type: alarm.co
2020-09-09T13:25:30.759Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.760Z ring-mqtt   New device of type: sensor.contact
2020-09-09T13:25:30.761Z ring-mqtt   Unsupported device of type: adapter.ringnet
2020-09-09T13:25:30.761Z ring-mqtt   Unsupported device of type: access-code
2020-09-09T13:25:30.762Z ring-mqtt   Unsupported device of type: access-code.vault
2020-09-09T13:25:30.762Z ring-mqtt   Unsupported device of type: adapter.zigbee
2020-09-09T13:25:30.763Z ring-mqtt   Unsupported device of type: adapter.zwave
2020-09-09T13:25:30.763Z ring-mqtt   Unsupported device of type: range-extender.zwave
2020-09-09T13:25:30.764Z ring-mqtt --------------------------------------------------------------------------------
2020-09-09T13:25:30.764Z ring-mqtt Ring location/device data updated, sleeping for 5 seconds.
2020-09-09T13:25:35.766Z ring-mqtt Websocket for location id fdd273b5-7916-4ae3-84fc-7d06510776ba is connected
2020-09-09T13:25:35.775Z ring-mqtt Publishing new device id: 6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39
2020-09-09T13:25:35.775Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/config
2020-09-09T13:25:35.782Z ring-mqtt {
  name: 'Front Floodlights Motion',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:25:35.786Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/config
2020-09-09T13:25:35.787Z ring-mqtt {
  name: 'Front Floodlights Light',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/light/command',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:25:35.790Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_info/config
2020-09-09T13:25:35.791Z ring-mqtt {
  name: 'Front Floodlights Info',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:25:35.791Z ring-mqtt Publishing new device id: 0aafeae3-f4ba-4dd3-9724-b4087726f67b
2020-09-09T13:25:35.791Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b/config
2020-09-09T13:25:35.795Z ring-mqtt {
  name: 'Driveway Floodlight Motion',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:25:35.795Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b/config
2020-09-09T13:25:35.796Z ring-mqtt {
  name: 'Driveway Floodlight Light',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/light/command',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:25:35.796Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b_info/config
2020-09-09T13:25:35.797Z ring-mqtt {
  name: 'Driveway Floodlight Info',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/0aafeae3-f4ba-4dd3-9724-b4087726f67b/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/0aafeae3-f4ba-4dd3-9724-b4087726f67b/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:25:35.797Z ring-mqtt Publishing new device id: 1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83
2020-09-09T13:25:35.797Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/config
2020-09-09T13:25:35.798Z ring-mqtt {
  name: 'Garage Floodlight Motion',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:25:35.798Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/config
2020-09-09T13:25:35.798Z ring-mqtt {
  name: 'Garage Floodlight Light',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/light/command',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:25:35.803Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_info/config
2020-09-09T13:25:35.803Z ring-mqtt {
  name: 'Garage Floodlight Info',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}

2020-09-09T13:25:37.793Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/motion/state OFF
2020-09-09T13:25:37.793Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/light/state OFF
(node:6) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'resubscribe' of undefined
    at MqttClient.subscribe (/ring-mqtt/node_modules/mqtt/lib/client.js:574:25)
    at Beam.publish (/ring-mqtt/devices/beam.js:44:56)
(node:6) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:6) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
2020-09-09T13:25:37.807Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/motion/state OFF
2020-09-09T13:25:37.808Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/light/state OFF
2020-09-09T13:25:37.811Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/0aafeae3-f4ba-4dd3-9724-b4087726f67b/info/state {"batteryLevel":100,"batteryStatus":"charged","commStatus":"ok","lastUpdate":"2020-09-09T13:00:27.448Z","serialNumber":"RBFS12013KV000773","tamperStatus":"ok"}
(node:6) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'resubscribe' of undefined
    at MqttClient.subscribe (/ring-mqtt/node_modules/mqtt/lib/client.js:574:25)
    at Beam.publish (/ring-mqtt/devices/beam.js:44:56)
    at runNextTicks (internal/process/task_queues.js:62:5)
    at listOnTimeout (internal/timers.js:518:9)
    at processTimers (internal/timers.js:492:7)
(node:6) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
2020-09-09T13:25:37.818Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/motion/state OFF
2020-09-09T13:25:37.819Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/light/state OFF
2020-09-09T13:25:37.820Z ring-mqtt ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/info/state {"batteryLevel":100,"batteryStatus":"charged","commStatus":"ok","lastUpdate":"2020-09-09T13:06:08.689Z","serialNumber":"RBFS12013KV000853","tamperStatus":"ok"}
(node:6) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'resubscribe' of undefined
    at MqttClient.subscribe (/ring-mqtt/node_modules/mqtt/lib/client.js:574:25)
    at Beam.publish (/ring-mqtt/devices/beam.js:44:56)
(node:6) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 3)

2020-09-09T13:26:05.782Z ring-mqtt Republishing existing device id: 6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39
2020-09-09T13:26:05.783Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/config
2020-09-09T13:26:05.784Z ring-mqtt {
  name: 'Front Floodlights Motion',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:26:05.787Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/config
2020-09-09T13:26:05.788Z ring-mqtt {
  name: 'Front Floodlights Light',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/light/command',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:26:05.788Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_info/config
2020-09-09T13:26:05.789Z ring-mqtt {
  name: 'Front Floodlights Info',
  unique_id: '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '6ff59d00-e1d7-4a65-aa7d-1e87ecabcf39' ],
    name: 'Front Floodlights',
    mf: 'Ring',
    mdl: 'group.light-group.beams'
  }
}
2020-09-09T13:26:05.790Z ring-mqtt Republishing existing device id: 0aafeae3-f4ba-4dd3-9724-b4087726f67b
2020-09-09T13:26:05.791Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b/config
2020-09-09T13:26:05.791Z ring-mqtt {
  name: 'Driveway Floodlight Motion',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:26:05.792Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b/config
2020-09-09T13:26:05.793Z ring-mqtt {
  name: 'Driveway Floodlight Light',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/light/command',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:26:05.793Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/0aafeae3-f4ba-4dd3-9724-b4087726f67b_info/config
2020-09-09T13:26:05.794Z ring-mqtt {
  name: 'Driveway Floodlight Info',
  unique_id: '0aafeae3-f4ba-4dd3-9724-b4087726f67b_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/0aafeae3-f4ba-4dd3-9724-b4087726f67b/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/0aafeae3-f4ba-4dd3-9724-b4087726f67b/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/0aafeae3-f4ba-4dd3-9724-b4087726f67b/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '0aafeae3-f4ba-4dd3-9724-b4087726f67b' ],
    name: 'Driveway Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:26:05.795Z ring-mqtt Republishing existing device id: 1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83
2020-09-09T13:26:05.795Z ring-mqtt HASS config topic: homeassistant/binary_sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/config
2020-09-09T13:26:05.796Z ring-mqtt {
  name: 'Garage Floodlight Motion',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_motion',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/motion/state',
  device_class: 'motion',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:26:05.798Z ring-mqtt HASS config topic: homeassistant/light/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/config
2020-09-09T13:26:05.798Z ring-mqtt {
  name: 'Garage Floodlight Light',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_light',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/light/state',
  command_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/light/command',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}
2020-09-09T13:26:05.799Z ring-mqtt HASS config topic: homeassistant/sensor/fdd273b5-7916-4ae3-84fc-7d06510776ba/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_info/config
2020-09-09T13:26:05.799Z ring-mqtt {
  name: 'Garage Floodlight Info',
  unique_id: '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83_info',
  availability_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/smart_lighting/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/status',
  payload_available: 'online',
  payload_not_available: 'offline',
  state_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/info/state',
  json_attributes_topic: 'ring/fdd273b5-7916-4ae3-84fc-7d06510776ba/alarm/1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83/info/state',
  icon: 'mdi:information-outline',
  value_template: '{{value_json["batteryLevel"]}}',
  unit_of_measurement: '%',
  device: {
    ids: [ '1fdb99cd-2cae-4dde-abfa-f3fa2dba6d83' ],
    name: 'Garage Floodlight',
    mf: 'Ring',
    mdl: 'switch.multilevel.beams'
  }
}

Thanks for testing and the logs.  I don't actually have any Ring smart lighting devices so logs are the only way for me to see what's going on for these devices.  The code is really simple and saw limited changes from prior versions so I'm not sure what's going on with this though.  I'll try to dig through these tonight and track it down.

FYI, I looked at the ring app this morning and it doesn't show any motion events for the flood lights since installing 4.0.3 last night even though I triggered them while testing. The errors may not be the cause behind the lost motion events. I will need to do more testing this evening.

Thanks for that, I've been racking my brain trying to figure out what would have broken motion detection.  I did find one more small error, although I couldn't see any way it would have caused motion state reporting to fail.
The error messages you are seeing appear to be related to some behavior with the MQTT libraries.  These don't appear fatal and also shouldn't be the cause of motions not working as it appears related to resubscribing to an already subscribed topic, which I'm pretty sure previously always worked with no messages.  Even so, I've put in a fix for that behavior (the resubscribe behavior) since it was already in my backlog of work to move more functions to common code.
Your logs also made me realize that I never fixed the smart lighting code to give the devices friendly names for the device model so I can fix that too.

I did push 4.0.4 with some fixes that would hopefully remove those error messages even though I don't believe they are causing any issues.

I will give 4.0.4 a try this evening and let you know if I still see the errors. They are not related to the motion as you stated. I  was able to get the motion sensors working again after resetting the lights.

No more errors in the log and everything seems to be working correctly. Thank you for the support.

Great!  Thanks for the bug report and the testing, I'm going to close this issue now.   I deleted your logs from the issue for safety purposes.


New package: SimonG4ELI.SDR-Radio version 3.2

[ ] Have you signed the Contributor License Agreement?
[ ] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] This PR only modifies one (1) manifest
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[ ] Does your manifest conform to the 1.4 schema?

Note: <path> is the name of the directory containing the manifest you're submitting.

Even with the dependency, it still prompts:

Even with the dependency, it still prompts:

Interactive Only

I have created a thread about this in the Bugs section of the official forums. So, hopefully this issue will get fixed.

I have created a thread about this in the Bugs section of the official forums. So, hopefully this issue will get fixed.

https://forum.sdr-radio.com:4499/viewtopic.php?f=71&t=2044

The "Interactive Only" issue was fixed in latest 3.3 beta build and will be available when a stable 3.3 build gets released. :-)


Fail on purpose if mapping is incomplete

As it is, Orika is pretty loose with mappings, using a best-effort strategy to map fields. This makes it easy to start using it and get good results.
In more complex scenarios, it would be beneficial to have some form of "strict mode" that would require that all fields to be mapped unless explicitly marked as "ignored" or "optional". Obviously, this mode would be opt-in to preserve compatibility. When enabled, mapper generation would throw if the mapping is incomplete.
I believe this would be a major safety enhancement as it would allow catching otherwise insidious bugs introduced by contract changes or refactoring.
Note, if this is already possible, it should be documented better as I scoured trough the manual and couldn't find it.

Also, if combined with compile-time generation as suggested in #245, this would allow compile-time validation of mapping completeness.

Actually there was a feature like this in the past and has been dropped (due to the initial implementation that needed a lot of work for the developer using Orika) the main objective of this project is help get past too much ceremonies related to mapping.
I agree with you that in some scenario it can be very useful to enforce policies. This is possible but need  to provide a custom ClassMapBuilder that validate it self against (list of properties from Class A & B) to verify if any field has been left behind (using the collection of the field maps)

👍


Flutter Web: TextFormField OR InputDecoration using an RTL language (e.g. Hebrew) is getting stuck after trying to erase after space character, and the cursor is not on the right spot

The TextFormField is not working as expected at Flutter web...
The LTR and RTL is not working for me as it should be... I saw on others issues that this problem was fixed, but, at least on flutter web i can't see this working...
So i did a special Statefull Widget that detects the language typed and change manually from LTR to RTL.
LIke so im having 2 issues:
1: the cursor on hebrew is not on the correct place.
2: the backspace is not working after erasing one word.
Here is my flutter doctor -v:
[√] Flutter (Channel dev, 1.18.0-13.0.pre, on Microsoft Windows [Version 10.0.18362.778], locale en-US)
    • Flutter version 1.18.0-13.0.pre at C:\Program Files\flutter
    • Framework revision 8fbfe1cfbf (5 days ago), 2020-05-06 17:36:01 -0700
    • Engine revision d6aa099de7
    • Dart version 2.9.0 (build 2.9.0-5.0.dev 4da5b40fb6)

[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at C:\Users\danie\AppData\Local\Android\sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[√] Chrome - develop for the web
    • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

[√] Android Studio (version 3.6)
    • Android Studio at C:\Program Files\Android\Android Studio
    • Flutter plugin version 45.1.1
    • Dart plugin version 192.7761
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)

[√] IntelliJ IDEA Community Edition (version 2019.3)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2019.3.3
    • Flutter plugin version 45.1.2
    • Dart plugin version 193.6911.31

[√] VS Code (version 1.45.0)
    • VS Code at C:\Users\danie\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.10.1

[√] Connected device (2 available)
    • Web Server • web-server • web-javascript • Flutter Tools
    • Chrome     • chrome     • web-javascript • Google Chrome 81.0.4044.138```

Hi @Vofchuk
can you please provide your  and flutter run -d Chrome --verbose?
Also, to better address the issue, would be helpful if you could post a minimal code sample to reproduce the problem
Thank you

flutter run -d Chrome --verbose:
flutter run -d Chrome --verbose [  +11 ms] executing: [C:\Program Files\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H [  +76 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H [ +104 ms] 8fbfe1cfbf6ac5c5c23930556e1019385005bf81 [   +3 ms] executing: [C:\Program Files\flutter/] git tag --contains HEAD [ +498 ms] Exit code 0 from: git tag --contains HEAD [  +13 ms] 1.18.0-13.0.pre [ +246 ms] executing: [C:\Program Files\flutter/] git rev-parse --abbrev-ref --symbolic @{u} [ +263 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u} [ +357 ms] origin/dev [  +54 ms] executing: [C:\Program Files\flutter/] git ls-remote --get-url origin [ +217 ms] Exit code 0 from: git ls-remote --get-url origin [ +147 ms] https://github.com/flutter/flutter.git [ +338 ms] executing: [C:\Program Files\flutter/] git rev-parse --abbrev-ref HEAD [ +230 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD [ +156 ms] dev [  +57 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update. [ +373 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [ +337 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [  +22 ms] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [ +230 ms] Artifact Instance of 'FlutterWebSdk' is not required, skipping update. [ +231 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ +227 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [   +1 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [  +28 ms] executing: C:\Users\danie\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l [ +258 ms] List of devices attached                     59d184ad               device product:OnePlus6T model:ONEPLUS_A6010 device:OnePlus6T transport_id:7 [ +205 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update. [ +215 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update. [   +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update. [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update. [   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update. [ +375 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update. [ +399 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update. [   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update. [   +1 ms] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update. [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update. [ +345 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\ [ +271 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\ [ +266 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\ [ +345 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\ [ +229 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\ [ +491 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\ [ +330 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\ [ +514 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\ [  +77 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\ [ +273 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\ [ +319 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\ [  +31 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\ [ +324 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\ [   +6 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\ [ +890 ms] Generating S:\Flutter\beezee_stores_dashboard\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java [ +341 ms] Launching lib\main.dart on Chrome in debug mode... [ +278 ms] Updating assets [ +783 ms] Syncing files to device Chrome... [  +18 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\ [ +277 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\ [   +2 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\ [   +2 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\ [   +6 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\ [ +816 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\ [ +939 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\ [ +511 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\ [ +355 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\ [   +2 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\ [   +2 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\ [   +4 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\ [ +328 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\ [ +348 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\ [  +34 ms] Generating S:\Flutter\beezee_stores_dashboard\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java [ +736 ms] <- reset [  +46 ms] C:\Program Files\flutter\bin\cache\dart-sdk\bin\dart.exe C:\Program Files\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root C:\Program Files\flutter\bin\cache\flutter_web_sdk/ --incremental --target=dartdevc --debugger-module-names -Ddart.developer.causal_async_stacks=true --output-dill C:\Users\danie\AppData\Local\Temp\flutter_tool.fcea1cc7-945f-11ea-89c0-0c5b8f279a64\app.dill --libraries-spec file:///C:/Program%20Files/flutter/bin/cache/flutter_web_sdk/libraries.json --packages        .packages -Ddart.vm.profile=false -Ddart.vm.product=false --bytecode-options=source-positions,local-var-info,debugger-stops,instance-field-initializers,keep-unreachable-code,avoid-closure-call-instructions --enable-asserts --track-widget-creation --filesystem-root C:\Users\danie\AppData\Local\Temp\flutter_tools.fcea1cc8-945f-11ea-89c0-0c5b8f279a64 --filesystem-scheme org-dartlang-app --initialize-from-dill build\cache.dill --platform file:///C:/Program%20Files/flutter/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk.dill [+1396 ms] <- compile org-dartlang-app:/web_entrypoint.dart
You can understand better here the problem:
https://gyazo.com/a6dd2dcbe85a80a117355284285d2a29

the cursor is not on the right spot, and I can't pick a certain letter or area of the text to add something on the middle:
https://gyazo.com/5229786c95909c76346d95c184ca3633

the code is basically this:
(on the Text Field)
TextFormField(                     textDirection:                         isHebrew ? TextDirection.rtl : TextDirection.ltr,
(isHebrew is a boolean that holds if the text being typed is in Hebrew)
hope that now is more clear!

flutter run -d Chrome --verbose:
[  +11 ms] executing: [C:\Program Files\flutter/] git -c log.showSignature=false log -n 1 --pretty=format:%H
[  +76 ms] Exit code 0 from: git -c log.showSignature=false log -n 1 --pretty=format:%H
[ +104 ms] 8fbfe1cfbf6ac5c5c23930556e1019385005bf81
[   +3 ms] executing: [C:\Program Files\flutter/] git tag --contains HEAD
[ +498 ms] Exit code 0 from: git tag --contains HEAD
[  +13 ms] 1.18.0-13.0.pre
[ +246 ms] executing: [C:\Program Files\flutter/] git rev-parse --abbrev-ref --symbolic @{u}
[ +263 ms] Exit code 0 from: git rev-parse --abbrev-ref --symbolic @{u}
[ +357 ms] origin/dev
[  +54 ms] executing: [C:\Program Files\flutter/] git ls-remote --get-url origin
[ +217 ms] Exit code 0 from: git ls-remote --get-url origin
[ +147 ms] https://github.com/flutter/flutter.git
[ +338 ms] executing: [C:\Program Files\flutter/] git rev-parse --abbrev-ref HEAD
[ +230 ms] Exit code 0 from: git rev-parse --abbrev-ref HEAD
[ +156 ms] dev
[  +57 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[ +373 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[ +337 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[  +22 ms] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[ +230 ms] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[ +231 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[ +227 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +28 ms] executing: C:\Users\danie\AppData\Local\Android\sdk\platform-tools\adb.exe devices -l
[ +258 ms] List of devices attached
                    59d184ad               device product:OnePlus6T model:ONEPLUS_A6010 device:OnePlus6T transport_id:7
[ +205 ms] Artifact Instance of 'AndroidMavenArtifacts' is not required, skipping update.
[ +215 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[   +3 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[ +375 ms] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[ +399 ms] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[   +1 ms] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[ +345 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\
[ +271 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\
[ +266 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\
[ +345 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\
[ +229 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\
[ +491 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\
[ +330 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\
[ +514 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\
[  +77 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\
[ +273 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\
[ +319 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\
[  +31 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\
[ +324 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\
[   +6 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\
[ +890 ms] Generating S:\Flutter\beezee_stores_dashboard\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[ +341 ms] Launching lib\main.dart on Chrome in debug mode...
[ +278 ms] Updating assets
[ +783 ms] Syncing files to device Chrome...
[  +18 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\
[ +277 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\
[   +2 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\
[   +2 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\
[   +6 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\
[ +816 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\
[ +939 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\
[ +511 ms] Found plugin firebase_auth at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.15.5+3\
[ +355 ms] Found plugin firebase_auth_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_auth_web-0.1.2\
[   +2 ms] Found plugin firebase_core at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core-0.4.4+3\
[   +2 ms] Found plugin firebase_core_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\firebase_core_web-0.1.1+2\
[   +4 ms] Found plugin location at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location-3.0.2\
[ +328 ms] Found plugin location_web at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\location_web-1.0.0\
[ +348 ms] Found plugin path_provider at C:\Program Files\flutter\.pub-cache\hosted\pub.dartlang.org\path_provider-0.5.0+1\
[  +34 ms] Generating S:\Flutter\beezee_stores_dashboard\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[ +736 ms] <- reset
[  +46 ms] C:\Program Files\flutter\bin\cache\dart-sdk\bin\dart.exe C:\Program Files\flutter\bin\cache\artifacts\engine\windows-x64\frontend_server.dart.snapshot --sdk-root C:\Program
Files\flutter\bin\cache\flutter_web_sdk/ --incremental --target=dartdevc --debugger-module-names -Ddart.developer.causal_async_stacks=true --output-dill
C:\Users\danie\AppData\Local\Temp\flutter_tool.fcea1cc7-945f-11ea-89c0-0c5b8f279a64\app.dill --libraries-spec file:///C:/Program%20Files/flutter/bin/cache/flutter_web_sdk/libraries.json --packages
.packages -Ddart.vm.profile=false -Ddart.vm.product=false
--bytecode-options=source-positions,local-var-info,debugger-stops,instance-field-initializers,keep-unreachable-code,avoid-closure-call-instructions --enable-asserts --track-widget-creation
--filesystem-root C:\Users\danie\AppData\Local\Temp\flutter_tools.fcea1cc8-945f-11ea-89c0-0c5b8f279a64 --filesystem-scheme org-dartlang-app --initialize-from-dill build\cache.dill --platform
file:///C:/Program%20Files/flutter/bin/cache/flutter_web_sdk/kernel/flutter_ddc_sdk.dill
[+1396 ms] <- compile org-dartlang-app:/web_entrypoint.dart```

Closing as duplicate of #47745


[Feature]: supporting MllamaForCausalLM

🚀 The feature, motivation and pitch
MllamaForConditionalGeneration models (such as, meta-llama/Llama-3.2-90B-Vision-Instruct, meta-llama/Llama-3.2-11B-Vision, etc.) are composed of MllamaVisionModel andMllamaForCausalLM.
I want to use only MllamaForCausualLM and this for, i can load model using code below.
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3.2-11B-Vision-Instruct")

But at vllm, this feature is not supported.
Is it possible to support these new function for MllamaForCausalLM for people like me who want to use only the text layer part of the MllamaForConditionalGeneration model, without using the vision layer?
Alternatives
No response
Additional context
No response
Before submitting a new issue...

[X] Make sure you already searched for relevant issues, and asked the chatbot living at the bottom right corner of the documentation page, which can answer lots of frequently asked questions.

@DarkLight1337 How to only use the language part of other multi-modality models? And what is the user interface? (Note that the language part of this model is not a standard llama)

@DarkLight1337 How to only use the language part of other multi-modality models? And what is the user interface? (Note that the language part of this model is not a standard llama)

I think what OP wants is to use the language-only variants of Llama 3.2 without having to load the vision model. This isn't really a thing for the other multi-modality models as they are typically built on top of standard language models (e.g. Llama, Gemma), so you might as well just use the original HF repo for those language models if you only want to use the language part.

I think we just have to make sure MllamaForCausalLM is added to the model registry, just like for a regular language model. Also, the model should implement load_weights.

By the way, there should be no need to set HF-specific attributes in vLLM such as config_class, base_model_prefix and _no_split_modules.

But how should the users use this MllamaForCausalLM class? When calling LLM(model='meta-llama/Llama-3.2-11B-Vision'), we should return the MllamaForConditionalGeneration class.

That is a good point. Perhaps for now, users can fork the model repository with the architecture field set to MllamaForCausalLM. Later we can work on a PR to let users override the architecture name, which is similar to the case for rope_scaling and rope_theta.

Actually, I just found that the text-only variants of Llama-3.2 use the regular LlamaForCausalLM architecture (e.g. https://huggingface.co/meta-llama/Llama-3.2-1B/blob/main/config.json). @Se-Hun is this not sufficient for you?

@DarkLight1337 MllamaForConditionalGeneration has additional text layers. For instance, meta-llama/Llama-3.2-11B-Vision-Instruct(e.g. https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct) model includes additional 9.7B text layers (unlike the meta-llama/Llama-3.1-8B-Instruct).
Therefore, I believe MllamaForCausalLM derived from MllamaForConditionalGeneration is different from LlamaForCausalLM. Is it possible to make MllamaForCausalLM available for these cases?

That is a good point. Perhaps for now, users can fork the model repository with the architecture field set to MllamaForCausalLM. Later we can work on a PR to let users override the architecture name in vLLM, which we already support for rope_scaling and rope_theta.

Does this workaround sound good to you?

Umm, sorry. I didn't understand your workaround. Can i get some examples ?

Umm, sorry. I didn't understand your workaround. Can i get some examples ?

I mean that we can create a PR to register MllamaForCausalLM to vLLM. Afterwards, you can edit your local copy of the Llama-3.2 repository (or fork from it) and edit the architectures field of config.json to use MllamaForCausalLM.

OK, It seems like that would work.
After your implementation, i will edit config and weights of Llama-3.2-vision models (e.g. meta-llama/Llama-3.2-11B-Vision-Instruct).

@heheda12345 can you help with this? Thanks!

It is still unclear for me on how the user interface is like. In addition to normal text input, we also need the cross attention state which is the image embedding, and several masks. Therefore, even after registering MllamaForCausalLM, I'm not sure how to allow users to use them. Current MllamaForCausalLM.forward interface in vllm is like
        input_ids: torch.LongTensor,
        positions: Optional[torch.LongTensor],
        cross_attention_states: Optional[torch.LongTensor],
        cross_attention_mask: Optional[torch.LongTensor],
        kv_range_for_decode: Optional[List[Tuple[int, int]]],
        full_text_row_masked_out_mask: Optional[Tuple[torch.Tensor,
                                                      torch.Tensor]],
        kv_caches: List[torch.Tensor],
        attn_metadata: AttentionMetadata,
        skip_cross_attention: bool,

It is still unclear for me on how the user interface is like. In addition to normal text input, we also need the cross attention state which is the image embedding, and several masks. Therefore, even after registering MllamaForCausalLM, I'm not sure how to allow users to use them. Current MllamaForCausalLM.forward interface in vllm is like
        input_ids: torch.LongTensor,
        positions: Optional[torch.LongTensor],
        cross_attention_states: Optional[torch.LongTensor],
        cross_attention_mask: Optional[torch.LongTensor],
        kv_range_for_decode: Optional[List[Tuple[int, int]]],
        full_text_row_masked_out_mask: Optional[Tuple[torch.Tensor,
                                                      torch.Tensor]],
        kv_caches: List[torch.Tensor],
        attn_metadata: AttentionMetadata,
        skip_cross_attention: bool,

I think for direct use of MllamaForCausalLM, we can assume that no multi-modal data is being inputted, We can update MllamaForCausalLM.forward to have same interface as MllamaForConditionalGeneration.forward (except that multi-modal inputs is not allowed), while MllamaForConditionalGeneration.forward can call MllamaForCausalLM.model.forward directly with the cross-attention information.

If no multi-modal input is allowed, all cross attention layers are skipped and it becomes a standard llama. (Not sure whether it uses the same weight as llama). In that case, why not using the standard llama text model?

@DarkLight1337 MllamaForConditionalGeneration has additional text layers. For instance, meta-llama/Llama-3.2-11B-Vision-Instruct(e.g. https://huggingface.co/meta-llama/Llama-3.2-11B-Vision-Instruct) model includes additional 9.7B text layers (unlike meta-llama/Llama-3.1-8B-Instruct).
Therefore, I believe MllamaForCausalLM derived from MllamaForConditionalGeneration is different from LlamaForCausalLM. Is it possible to make MllamaForCausalLM available for these cases?

OP mentioned that they wanted to use the model because of its larger size. (see above quote)

The 40 layers of llama 3.2 vision are 32 text layers (same as llama3.18b) and 8 cross attention layers(skipped if no multi-modality input). What is the "additional text layers" in your context? and what is the additional 9.7B parameters?

@heheda12345
Oh, that is a good point. I didn't know 8 cross attention layers are not used. So, the additional 9.7B parameters are missing. Thank you. I appreciate your excellent point and the effort you've put into our discussion. (@DarkLight1337)


Compile error running tests on Ubuntu

swift test
Building for debugging...
error: emit-module command failed with exit code 1 (use -v to see invocation)
/******/Tests/geometrizeTests/BitmapDiffing.swift:7:17: error: initializers in structs are not marked with 'convenience'
    convenience init(bitmap: Bitmap) {
    ~~~~~~~~~~~~^

/******/Tests/geometrizeTests/BitmapDiffing.swift:7:17: error: initializers in structs are not marked with 'convenience'
    convenience init(bitmap: Bitmap) {
    ~~~~~~~~~~~~^

/******/Tests/geometrizeTests/BitmapDiffing.swift:32:27: error: value of type 'XCTAttachment' has no member 'name'
            oldAttachment.name = "reference"
            ~~~~~~~~~~~~~ ^~~~
/******/Tests/geometrizeTests/BitmapDiffing.swift:7:17: error: initializers in structs are not marked with 'convenience'
    convenience init(bitmap: Bitmap) {
    ~~~~~~~~~~~~^

/******/Tests/geometrizeTests/BitmapDiffing.swift:32:27: error: value of type 'XCTAttachment' has no member 'name'
            oldAttachment.name = "reference"
            ~~~~~~~~~~~~~ ^~~~
/******/Tests/geometrizeTests/ImageRunnerTests.swift:12:9: warning: code after 'throw' will never be executed
        let url = Bundle.module.url(forResource: "kris", withExtension: "png")!
        ^
/******/Tests/geometrizeTests/ImageRunnerTests.swift:12:9: warning: code after 'throw' will never be executed
        let url = Bundle.module.url(forResource: "kris", withExtension: "png")!
        ^
error: fatalError

error: fatalError

Fixed with #126


After deleting the workbook, the file is damaged when the Excel file is opened, and the file can be opened after the point is repaired, but the content is less.

I use this library to write dozens of Sheet, and then delete several of the Sheet.
If len (members) > 0 {
Xlsx.DeleteSheet ("Sheet1")
Xlsx.UpdateLinkedValue ()
ErrDelSheet1: = xlsx.Save ()
If errDelSheet1! = nil {{
Logs.Error (errDelSheet1)
}
Xlsx.DeleteSheet ("Sheet2")
ErrDelSheet2: = xlsx.Save ()
If errDelSheet2! = nil {{
Logs.Error (errDelSheet2)
}
}
Then open the Excel file, suggesting that some of the contents of Excel are not readable. Whether or not to repair it. I can open the file after I fix it.
If the above is not called

contact me: +86<PHONE_NUMBER>3      or  QQ:273217031   or<EMAIL_ADDRESS>

if len(members) > 0 {
xlsx.DeleteSheet("Sheet1")
errDelSheet1 := xlsx.Save()
if errDelSheet1 != nil {
logs.Error(errDelSheet1)
}
xlsx.DeleteSheet("Sheet2")
errDelSheet2 := xlsx.Save()
if errDelSheet2 != nil {
logs.Error(errDelSheet2)
}
}
如果这段删除Sheet的代码没有调用。文件打开正常。

I've also meet this problem.

@hwf452 Thanks for your issue. I have fixed this issue by changing the activeTab tag calculation method of the workbook. Please try upgrade library to the last version by go get -u github.com/360EntSecGroup-Skylar/excelize.

Hello, yesterday I just made the bug you quickly completed the repair, I have verified this afternoon, your efficiency is very fast. Like for you.