issue with animations contains text .. throws warnings and list index out of range.

using windows 10, latest miktex with all packages, running on python 3.8.6 -not 3.9.0 because scipy doesn't support it yet-, lastest SoX, latest FFmpeg version.
I installed everything important and having no problem running examples with no texts such as (SquareToCircle), but i get warnings and exceptions when running (WriteStuff) or any other text-containing animation:

I tried everything, reinstalled everything.. added all important paths(SoX,MikTeX,FFmpeg), edited some parts of (tex_mobject.py) and didn't work so stepped back,i did everything and nothing worked, what could be the reason of the issue..?

Hey man.
The code works fine for me. What you want to do:
class TexMobject(SingleStringTexMobject):
    CONFIG = {
        "arg_separator": " ",
        "substrings_to_isolate": [],
        "tex_to_color_map": {},
    }

    def __init__(self, *tex_strings, **kwargs):
        digest_config(self, kwargs)
        tex_strings = self.break_up_tex_strings(tex_strings)
        self.tex_strings = tex_strings
        SingleStringTexMobject.__init__(
            self, self.arg_separator.join(tex_strings), **kwargs
        )
        self.break_up_by_substrings()
        self.set_color_by_tex_to_color_map(self.tex_to_color_map)

        if self.organize_left_to_right:
            self.organize_submobjects_left_to_right()

    def break_up_tex_strings(self, tex_strings):
        substrings_to_isolate = op.add(
            self.substrings_to_isolate,
            list(self.tex_to_color_map.keys())
        )
        split_list = split_string_list_to_isolate_substrings(
            tex_strings, *substrings_to_isolate
        )
        if self.arg_separator == ' ':
            split_list = [str(x).strip() for x in split_list]
        #split_list = list(map(str.strip, split_list))
        split_list = [s for s in split_list if s != '']
        return split_list

    def break_up_by_substrings(self):
        """
        Reorganize existing submojects one layer
        deeper based on the structure of tex_strings (as a list
        of tex_strings)
        """
        new_submobjects = []
        curr_index = 0
        config = dict(self.CONFIG)
        config["alignment"] = ""
        for tex_string in self.tex_strings:
            sub_tex_mob = SingleStringTexMobject(tex_string, **config)
            num_submobs = len(sub_tex_mob.submobjects)
            new_index = curr_index + num_submobs
            if num_submobs == 0:
                # For cases like empty tex_strings, we want the corresponing
                # part of the whole TexMobject to be a VectorizedPoint
                # positioned in the right part of the TexMobject
                sub_tex_mob.submobjects = [VectorizedPoint()]
                last_submob_index = min(curr_index, len(self.submobjects) - 1)
                sub_tex_mob.move_to(self.submobjects[last_submob_index], RIGHT)
            else:
                sub_tex_mob.submobjects = self.submobjects[curr_index:new_index]
            new_submobjects.append(sub_tex_mob)
            curr_index = new_index
        self.submobjects = new_submobjects
        return self

    def get_parts_by_tex(self, tex, substring=True, case_sensitive=True):
        def test(tex1, tex2):
            if not case_sensitive:
                tex1 = tex1.lower()
                tex2 = tex2.lower()
            if substring:
                return tex1 in tex2
            else:
                return tex1 == tex2

        return VGroup(*[m for m in self.submobjects if test(tex, m.get_tex_string())])

    def get_part_by_tex(self, tex, **kwargs):
        all_parts = self.get_parts_by_tex(tex, **kwargs)
        return all_parts[0] if all_parts else None

    def set_color_by_tex(self, tex, color, **kwargs):
        parts_to_color = self.get_parts_by_tex(tex, **kwargs)
        for part in parts_to_color:
            part.set_color(color)
        return self

    def set_color_by_tex_to_color_map(self, texs_to_color_map, **kwargs):
        for texs, color in list(texs_to_color_map.items()):
            try:
                # If the given key behaves like tex_strings
                texs + ''
                self.set_color_by_tex(texs, color, **kwargs)
            except TypeError:
                # If the given key is a tuple
                for tex in texs:
                    self.set_color_by_tex(tex, color, **kwargs)
        return self

    def index_of_part(self, part):
        split_self = self.split()
        if part not in split_self:
            raise Exception("Trying to get index of part not in TexMobject")
        return split_self.index(part)

    def index_of_part_by_tex(self, tex, **kwargs):
        part = self.get_part_by_tex(tex, **kwargs)
        return self.index_of_part(part)

    def sort_alphabetically(self):
        self.submobjects.sort(
            key=lambda m: m.get_tex_string()
        )

Send your implementation of TexMobject. Open the last file in that traceback; that's where it is.

I see something else too.
Your code never made the svg files properly. That explains the UserWarning. It should've looked like:
Writing "\sum_{k=1}^\infty {1 \over k^2} = {\pi^2 \over 6}" to a64c7561bee319ce.tex

Something is very off.

i used an online merging website to compare my TexMobject class with yours, and they are absolutely the same, not a single difference..
note: mine is on the left, yours on the right:

so the problem isn't from TexMobject class, do you have any other suggestions?
and thank you for your reply :D

Oh yes I have quite a number of suggestions.
I've dug a bit deeper into how Manim handles the svg files it produces.
It's not obvious at first but the UserWarnings in g0-84 refer to ids in the svg file. To see what I'm talking about, open the svg file in a web browser and open the source with Ctrl + U.
This is way deeper than I thought. I think I have a quick fix hack that may ruin the working of the code but have that particular bit work. When I understand this code deeper I'll get back to you

So you have an online merging website?
Here's my svg class. Find yours at maminlib\mobject\svg\svg_mobject
class SVGMobject(VMobject):
    CONFIG = {
        "should_center": True,
        "height": 2,
        "width": None,
        # Must be filled in in a subclass, or when called
        "file_name": None,
        "unpack_groups": True,  # if False, creates a hierarchy of VGroups
        "stroke_width": DEFAULT_STROKE_WIDTH,
        "fill_opacity": 1.0,
        # "fill_color" : LIGHT_GREY,
    }

    def __init__(self, file_name=None, **kwargs):
        digest_config(self, kwargs)
        self.file_name = file_name or self.file_name
        self.ensure_valid_file()
        VMobject.__init__(self, **kwargs)
        self.move_into_position()

    def ensure_valid_file(self):
        if self.file_name is None:
            raise Exception("Must specify file for SVGMobject")
        possible_paths = [
            os.path.join(os.path.join("assets", "svg_images"), self.file_name),
            os.path.join(os.path.join("assets", "svg_images"), self.file_name + ".svg"),
            os.path.join(os.path.join("assets", "svg_images"), self.file_name + ".xdv"),
            self.file_name,
        ]
        for path in possible_paths:
            if os.path.exists(path):
                self.file_path = path
                return
        raise IOError("No file matching %s in image directory" %
                      self.file_name)

    def generate_points(self):
        doc = minidom.parse(self.file_path)
        self.ref_to_element = {}
        for svg in doc.getElementsByTagName("svg"):
            mobjects = self.get_mobjects_from(svg)
            if self.unpack_groups:
                self.add(*mobjects)
            else:
                self.add(*mobjects[0].submobjects)
        doc.unlink()

    def get_mobjects_from(self, element):
        result = []
        if not isinstance(element, minidom.Element):
            return result
        if element.tagName == 'defs':
            self.update_ref_to_element(element)
        elif element.tagName == 'style':
            pass  # TODO, handle style
        elif element.tagName in ['g', 'svg', 'symbol']:
            result += it.chain(*[
                self.get_mobjects_from(child)
                for child in element.childNodes
            ])
        elif element.tagName == 'path':
            temp = element.getAttribute('d')
            if temp != '':
                result.append(self.path_string_to_mobject(temp))
        elif element.tagName == 'use':
            result += self.use_to_mobjects(element)
        elif element.tagName == 'rect':
            result.append(self.rect_to_mobject(element))
        elif element.tagName == 'circle':
            result.append(self.circle_to_mobject(element))
        elif element.tagName == 'ellipse':
            result.append(self.ellipse_to_mobject(element))
        elif element.tagName in ['polygon', 'polyline']:
            result.append(self.polygon_to_mobject(element))
        else:
            pass  # TODO
            # warnings.warn("Unknown element type: " + element.tagName)
        result = [m for m in result if m is not None]
        self.handle_transforms(element, VGroup(*result))
        if len(result) > 1 and not self.unpack_groups:
            result = [VGroup(*result)]

        return result

    def g_to_mobjects(self, g_element):
        mob = VGroup(*self.get_mobjects_from(g_element))
        self.handle_transforms(g_element, mob)
        return mob.submobjects

    def path_string_to_mobject(self, path_string):
        return VMobjectFromSVGPathstring(path_string)

    def use_to_mobjects(self, use_element):
        # Remove initial "#" character
        ref = use_element.getAttribute("xlink:href")[1:]
        print("Did anyone call this method? Guys?")
        if ref not in self.ref_to_element:
            warnings.warn("%s not recognized" % ref)
            return VGroup()
        return self.get_mobjects_from(
            self.ref_to_element[ref]
        )

    def attribute_to_float(self, attr):
        stripped_attr = "".join([
            char for char in attr
            if char in string.digits + "." + "-"
        ])
        return float(stripped_attr)

    def polygon_to_mobject(self, polygon_element):
        # TODO, This seems hacky...
        path_string = polygon_element.getAttribute("points")
        for digit in string.digits:
            path_string = path_string.replace(" " + digit, " L" + digit)
        path_string = "M" + path_string
        return self.path_string_to_mobject(path_string)

    # <circle class="st1" cx="143.8" cy="268" r="22.6"/>

    def circle_to_mobject(self, circle_element):
        x, y, r = [
            self.attribute_to_float(
                circle_element.getAttribute(key)
            )
            if circle_element.hasAttribute(key)
            else 0.0
            for key in ("cx", "cy", "r")
        ]
        return Circle(radius=r).shift(x * RIGHT + y * DOWN)

    def ellipse_to_mobject(self, circle_element):
        x, y, rx, ry = [
            self.attribute_to_float(
                circle_element.getAttribute(key)
            )
            if circle_element.hasAttribute(key)
            else 0.0
            for key in ("cx", "cy", "rx", "ry")
        ]
        return Circle().scale(rx * RIGHT + ry * UP).shift(x * RIGHT + y * DOWN)

    def rect_to_mobject(self, rect_element):
        fill_color = rect_element.getAttribute("fill")
        stroke_color = rect_element.getAttribute("stroke")
        stroke_width = rect_element.getAttribute("stroke-width")
        corner_radius = rect_element.getAttribute("rx")

        # input preprocessing
        if fill_color in ["", "none", "#FFF", "#FFFFFF"] or Color(fill_color) == Color(WHITE):
            opacity = 0
            fill_color = BLACK  # shdn't be necessary but avoids error msgs
        if fill_color in ["#000", "#000000"]:
            fill_color = WHITE
        if stroke_color in ["", "none", "#FFF", "#FFFFFF"] or Color(stroke_color) == Color(WHITE):
            stroke_width = 0
            stroke_color = BLACK
        if stroke_color in ["#000", "#000000"]:
            stroke_color = WHITE
        if stroke_width in ["", "none", "0"]:
            stroke_width = 0

        if corner_radius in ["", "0", "none"]:
            corner_radius = 0

        corner_radius = float(corner_radius)

        if corner_radius == 0:
            mob = Rectangle(
                width=self.attribute_to_float(
                    rect_element.getAttribute("width")
                ),
                height=self.attribute_to_float(
                    rect_element.getAttribute("height")
                ),
                stroke_width=stroke_width,
                stroke_color=stroke_color,
                fill_color=fill_color,
                fill_opacity=opacity
            )
        else:
            mob = RoundedRectangle(
                width=self.attribute_to_float(
                    rect_element.getAttribute("width")
                ),
                height=self.attribute_to_float(
                    rect_element.getAttribute("height")
                ),
                stroke_width=stroke_width,
                stroke_color=stroke_color,
                fill_color=fill_color,
                fill_opacity=opacity,
                corner_radius=corner_radius
            )

        mob.shift(mob.get_center() - mob.get_corner(UP + LEFT))
        return mob

    def handle_transforms(self, element, mobject):
        x, y = 0, 0
        try:
            x = self.attribute_to_float(element.getAttribute('x'))
            # Flip y
            y = -self.attribute_to_float(element.getAttribute('y'))
            mobject.shift(x * RIGHT + y * UP)
        except:
            pass

        transform = element.getAttribute('transform')

        try:  # transform matrix
            prefix = "matrix("
            suffix = ")"
            if not transform.startswith(prefix) or not transform.endswith(suffix):
                raise Exception()
            transform = transform[len(prefix):-len(suffix)]
            transform = string_to_numbers(transform)
            transform = np.array(transform).reshape([3, 2])
            x = transform[2][0]
            y = -transform[2][1]
            matrix = np.identity(self.dim)
            matrix[:2, :2] = transform[:2, :]
            matrix[1] *= -1
            matrix[:, 1] *= -1

            for mob in mobject.family_members_with_points():
                mob.points = np.dot(mob.points, matrix)
            mobject.shift(x * RIGHT + y * UP)
        except:
            pass

        try:  # transform scale
            prefix = "scale("
            suffix = ")"
            if not transform.startswith(prefix) or not transform.endswith(suffix):
                raise Exception()
            transform = transform[len(prefix):-len(suffix)]
            scale_values = string_to_numbers(transform)
            if len(scale_values) == 2:
                scale_x, scale_y = scale_values
                mobject.scale(np.array([scale_x, scale_y, 1]), about_point=ORIGIN)
            elif len(scale_values) == 1:
                scale = scale_values[0]
                mobject.scale(np.array([scale, scale, 1]), about_point=ORIGIN)
        except:
            pass

        try:  # transform translate
            prefix = "translate("
            suffix = ")"
            if not transform.startswith(prefix) or not transform.endswith(suffix):
                raise Exception()
            transform = transform[len(prefix):-len(suffix)]
            x, y = string_to_numbers(transform)
            mobject.shift(x * RIGHT + y * DOWN)
        except:
            pass
        # TODO, ...

    def flatten(self, input_list):
        output_list = []
        for i in input_list:
            if isinstance(i, list):
                output_list.extend(self.flatten(i))
            else:
                output_list.append(i)
        return output_list

    def get_all_childNodes_have_id(self, element):
        all_childNodes_have_id = []
        if not isinstance(element, minidom.Element):
            return
        if element.hasAttribute('id'):
            return [element]
        for e in element.childNodes:
            all_childNodes_have_id.append(self.get_all_childNodes_have_id(e))
        return self.flatten([e for e in all_childNodes_have_id if e])

    def update_ref_to_element(self, defs):
        new_refs = dict([(e.getAttribute('id'), e) for e in self.get_all_childNodes_have_id(defs)])
        self.ref_to_element.update(new_refs)

    def move_into_position(self):
        if self.should_center:
            self.center()
        if self.height is not None:
            self.set_height(self.height)
        if self.width is not None:
            self.set_width(self.width)

If these are the same then I'm all out, for now.

hmm, interesting..
actually there is a single print statement in your code that doesn't have any meaning at all haha, this is it, mine is on the right, yours on the left:

but everything else is the same.. :(
but could the problem be from any other class in svg_mobject.py file?

Well it is possible, considering from SVGMobject there's only three levels of inheritance higher. Except it does its own thing with generate_points so I think our issues all line up here.
I have two and a half debugging options for you. In a Python REPL in a working directory that can access manimlib:
>>> from xml.dom import minidom
>>> from manimlib.imports import TextMobject, YELLOW
>>> import os
>>> os.chdir("media\\Tex")
>>> text2 = TextMobject("This is some text",
...                     tex_to_color_map={"text": YELLOW})
Writing "\centering This is some text" to b29a846aa3cb7f8b.tex
Writing "This is some" to 0f84d11d97ba78b5.tex
>>> os.path.exists("b29a846aa3cb7f8b.svg")
True
>>> os.path.abspath("b29a846aa3cb7f8b.svg")
'C:\\Manim\\media\\Tex\\b29a846aa3cb7f8b.svg'        # <--- I copied this path to open in a browser.
>>> text2.show()     #<--- This line should show you a non-blank picture
>>>

This should look as it is, except obviously for the paths. If not you can use minidom to view the elements and tag names and the attribute tex.ref_to_element and checking all tag names in there, or something.

Use code.interact:

    def use_to_mobjects(self, use_element):
        # Remove initial "#" character
        ref = use_element.getAttribute("xlink:href")[1:]
        if ref not in self.ref_to_element:
            warnings.warn("%s not recognized" % ref)       # <---- Where the error is
            from code import interact
            interact(banner="Entering console now\n",
                         local={"element": element,
                                    "minidom: minidom,
                                    "expectations": self.ref_to_element})
            return VGroup()
        return self.get_mobjects_from(
            self.ref_to_element[ref]
        )

If you run either the REPL or the python file it will open that small interactive console where you can see what went wrong. You can see in that case where the reference is not found a VGroup is returned hence the emptiness resulting in the index error.

Set up a debugging session.
I use Visual Studio Code so this is relatively easy for me. As the debugger goes through SVGMobject make a watch for self.ref_to_element and see whether the reference is actually added.

That's just about it. I'm also trying to improve my understanding of this code so the answers are as vague to me too.

Yes! I have the cheat!
from xml.dom import minidom
import os
from manimlib.imports import TextMobject, YELLOW

class CheatedTextMobject(TextMobject):
    def generate_points(self):
        doc = minidom.parse(self.file_path)
        self.ref_to_element = dict((element.getAttribute("id"), element)
                                    for element in doc.getElementsByTagName("path"))
        for svg in doc.getElementsByTagName("svg"):
            mobjects = self.get_mobjects_from(svg)
            if self.unpack_groups:
                self.add(*mobjects)
            else:
                self.add(*mobjects[0].submobjects)
        doc.unlink()

os.chdir("media\\Tex")
text2 = CheatedTextMobject("This is some text",
                           tex_to_color_map={"text": YELLOW})
text2.show()

Hope for both our sakes that this works. If it does, yay.

This is your error right?
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-84 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-104 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-105 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-115 not recognized
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-111 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-109 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-101 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-116 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Allan Muruha\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-120 not recognized
  warnings.warn("%s not recognized" % ref)

ok there is alot of information you have said but sorry i'm lost!, firstly where is this code located? its not in svg_mobject.py nor text_mobject.py:

>>> from xml.dom import minidom
>>> from manimlib.imports import TextMobject, YELLOW
>>> import os
>>> os.chdir("media\\Tex")
>>> text2 = TextMobject("This is some text",
...                     tex_to_color_map={"text": YELLOW})
Writing "\centering This is some text" to b29a846aa3cb7f8b.tex
Writing "This is some" to 0f84d11d97ba78b5.tex
>>> os.path.exists("b29a846aa3cb7f8b.svg")
True
>>> os.path.abspath("b29a846aa3cb7f8b.svg")
'C:\\Manim\\media\\Tex\\b29a846aa3cb7f8b.svg'        # <--- I copied this path to open in a browser.
>>> text2.show()     #<--- This line should show you a non-blank picture
>>>

secondly i've tried to use (code.interact) but i get a syntax error like this:

and even if i close the quotation i get another syntax error:

and thirdly i can't even start a debugging session in svg_mobject.py, i'm unable to define the reason for that! but this is what i get if i start a debugging session:

and i also the class (CheatedTextMobject), i couldn't find a method named (generate_points) inside the class ( TextMobject) to edit it the way you did, all i could found similar to your implementation of  generate_points was in (SVGMobject) class, and if you wanted me to add the whole class -CheatedTextMobject-, can you tell me exactly where to add it and how to run it with svg_mobject.py code? :(
thank you.

This is your error right?
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-84 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-104 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-105 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-115 not recognized
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-111 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-109 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-101 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-116 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-120 not recognized
  warnings.warn("%s not recognized" % ref)

yes exactly.. and yesterday i came across an article said that this is caused by miktex, how could that be possible? and how does manim communicate with miktex?

Let me start with the easy answer.
Interactive console was my bad. The dictionary wasn't typed well.
Yes, I was making a dictionary. The one that would send global attributes to the interactive console.
            interact(banner="Entering console now\n",
                         local={"element": element,
                                "minidom": minidom,
                                "expectations": self.ref_to_element})

Let's see, next point.
>>> from xml.dom import minidom
>>> from manimlib.imports import TextMobject, YELLOW
>>> import os
>>> os.chdir("media\\Tex")
>>> text2 = TextMobject("This is some text",
...                     tex_to_color_map={"text": YELLOW})
Writing "\centering This is some text" to b29a846aa3cb7f8b.tex
Writing "This is some" to 0f84d11d97ba78b5.tex
>>> os.path.exists("b29a846aa3cb7f8b.svg")
True
>>> os.path.abspath("b29a846aa3cb7f8b.svg")
'C:\\Manim\\media\\Tex\\b29a846aa3cb7f8b.svg'        # <--- I copied this path to open in a browser.
>>> text2.show()     #<--- This line should show you a non-blank picture
>>>
>>> "This is my own madness, not in any file on Manim."
>>> "I find it better to treat Manim like Python instead of the other way around"
>>> "I took elements from svg_mobject to make that"
>>> "Also, that's the result of running python.exe in a terminal. It's just Python really."

And as for Pycharm, I can't pretend to understand how debugging works over there. I see you got the breakpoint, but for the rest join the club and embrace StackOverflow as your new best friend.
Lastly, about generate_points, um...

Python inheritance 101:
>>> from manimlib.imports import TextMobject
>>> from pprint import pprint as pp
>>> pp(TextMobject.mro())
[<class 'manimlib.mobject.svg.tex_mobject.TextMobject'>,
 <class 'manimlib.mobject.svg.tex_mobject.TexMobject'>,
 <class 'manimlib.mobject.svg.tex_mobject.SingleStringTexMobject'>,
 <class 'manimlib.mobject.svg.svg_mobject.SVGMobject'>,
 <class 'manimlib.mobject.types.vectorized_mobject.VMobject'>,
 <class 'manimlib.mobject.mobject.Mobject'>,
 <class 'manimlib.container.container.Container'>,
 <class 'object'>]

That's how far implementation of inherited classes goes. Inherited classes share code from their parent classes due to similarity, but can override instance methods for specificity e.g Square feeds Manim cardinal points and VMobject a list of points.
Every class in Manim that has Mobject in its family tree has that generate_points method that actually draws stuff on the screen. Or more specifically, see the text.show() method I called? That image depends on the points contained in the class objects. This is a bit of an overload so if it doesn't make immediate sense; I've been there too.
The reason why I made the separate inheritance class CheatedTextMobject was because I was unsure how it would work from the beginning. For now it does, but my shining talent of not solving problems in the general case will show itself soon. Honestly I don't know yet why the element logic in SVGMobject is as it is yet, so I don't want to touch it now.
As for how you'd use it: Simple answer, take that class and shove it in example_scenes.py. Then create the example_text as an instance of that class instead of the other one.

ok, sorry for late answer, i've been testing your codes and trying to grasp how this thing work the past 4 hours but nothing worked..
i've tested CheatedTextMobject and it gave me the same errors, and i tested interact and found somethings that i don't know if they are useful or not:
the variable element isn't defined:

the attributes list is empty:

and self is referencing to nothing:

but man i'm pretty sure it is not a code problem because i downloaded manim again just to make sure that everything is as it supposed to be.. it must be from one of the programs manim needs, isn't my conclusion right?

ok.. seriously nothing worked with me.. i'm really disappointed because i've been trying for days before i post this.. bro if you understood the problem i would gladly allow you to enter my pc with through a sharing application called anyDisk, it will allow u to control my desktop and do what ever u want..

ok, sorry for late answer, i've been testing your codes and trying to grasp how this thing work the past 4 hours but nothing worked..
i've tested CheatedTextMobject and it gave me the same errors, and i tested interact and found somethings that i don't know if they are useful or not:
the variable element isn't defined:

the attributes list is empty:

and self is referencing to nothing:

but man i'm pretty sure it is not a code problem because i downloaded manim again just to make sure that everything is as it supposed to be.. it must be from one of the programs manim needs, isn't my conclusion right?

Okay that's off-putting. Thought I had it with that one.
In code.interact, it should've been use_element instead of element. Wow I make so many slipups.
If the hack didn't work, then it's the svg we're missing. I have one very last solution for you before I genuinely give up. Let me figure out how to get it to you first.

<?xml version='1.0' encoding='UTF-8'?>
<!--  Then in a REPL or anywhere run this:
>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

If this don't work we move on to the programs, which I really don't want to do due to underinformation. This very last test will confirm whether any svg files in the future you'll use will be rendered in Manim.

This is your error right?
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-84 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-104 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-105 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-115 not recognized
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-111 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Users\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-109 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-101 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-116 not recognized
  warnings.warn("%s not recognized" % ref)
C:\Manim\manimlib\mobject\svg\svg_mobject.py:119: UserWarning: g0-120 not recognized
  warnings.warn("%s not recognized" % ref)

yes exactly.. and yesterday i came across an article said that this is caused by miktex, how could that be possible? and how does manim communicate with miktex?

Manim uses MikTex programs to do file conversions internally, from .tex to .dvi to .svg. That's why you needed the MikTex bin in your path variable.

<?xml version='1.0' encoding='UTF-8'?>
<!--  Then in a REPL or anywhere run this:
>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

If this don't work we move on to the programs, which I really don't want to do due to underinformation. This very last test will confirm whether any svg files in the future you'll use will be rendered in Manim.

ok listen to what i did to see if it is correct or not, i made a text file inside manim folder and pasted the dvisvgm text, the long text, then i saved it as (tex_test.svg), then i made a python file with your code inside it, the 5 lines code, in manim folder too, but the problem is there is an invalid syntax error and its preventing me from running it:

but firstly, are my steps correct?

Yes, your steps are correct. But I believe to treat this confusion once and for all I must show you what my output usually looks like.
I didn't think you'd take it literally.

I run python in a terminal for majority of my testing. Anything that isn't preceded by these ">>>" is the output of the execution of the line before it. Eg:
>>> 1 + 1
2
>>> print("Tom\nHardy")
Tom
Hardy

But for the most part, you got the syntax right. If I must be fully candid, here's the full unambiguous detail.
from manimlib.imports import SVGMobject
svg = SVGMobject(file_name="tex_test.svg")
svg.scale(0.5)
svg.show()

Which should pop up an image if done correctly.

Yes, your steps are correct. But I believe to treat this confusion once and for all I must show you what my output usually looks like.
I didn't think you'd take it literally.

I run python in a terminal for majority of my testing. Anything that isn't preceded by these ">>>" is the output of the execution of the line before it. Eg:
>>> 1 + 1
2
>>> print("Tom\nHardy")
Tom
Hardy

But for the most part, you got the syntax right. If I must be fully candid, here's the full unambiguous detail.
from manimlib.imports import SVGMobject
svg = SVGMobject(file_name="tex_test.svg")
svg.scale(0.5)
svg.show()

Which should pop up an image if done correctly.

yes actually this is my first time dealing with terminal commands and libraries files so i'm quite lost, i mean alot... thats why i took your codes as literals haha,
but YES!, it actually popped up an image! what does this indicate to?

It means your programs are generating suspect svg files. Yep, it's a programming issue.
Also, sorry if I assumed you were an intermediate like me. Just that learning Manim minus Python is a recipe for disaster.
Let me see the system commands Manim uses and get back to you soon.

It means your programs are generating suspect svg files. Yep, it's a programming issue.
Also, sorry if I assumed you were an intermediate like me. Just that learning Manim minus Python is a recipe for disaster.
Let me see the system commands Manim uses and get back to you soon.

it very weird to be a programming issue since my manim files are the most recent uploads! they are about 10 days old maybe, does this mean that 3b1b uploaded a corrupted version of manim mistakely?

I highly doubt that. Then again, I use the June version and simply add new features from newer Manim versions and ManimCommunity to my .py files so I wouldn't know.

Okay I think I got it. And you'll actually get to use the terminal, yay!
Open command prompt by searching 'cmd' in the Start Menu.
Go to the Manim directory by using this command:
cd "D:\Programs\ManimProgs\manim-master". I read the file path from those images.
 Let's say tex_test.tex
Now you're going to run two commands in the command prompt you just opened. One after the other. Paste the command and press Enter.

latex -interaction=batchmode -halt-on-error -output-directory="" tex_test.tex
dvisvgm tex_test.dvi -n -v 0 -o tex_test.svg

These commands will generate a number of files in the current folder. Don't worry, you can delete them later.
Now use the produced tex_test.svg the way you did just now. If that gives a blank image or raises an error, we can safely blame the programs.

Okay I think I got it. And you'll actually get to use the terminal, yay!
Open command prompt by searching 'cmd' in the Start Menu.
Go to the Manim directory by using this command:
cd "D:\Programs\ManimProgs\manim-master". I read the file path from those images.
 Let's say tex_test.tex
Now you're going to run two commands in the command prompt you just opened. One after the other. Paste the command and press Enter.

latex -interaction=batchmode -halt-on-error -output-directory="" tex_test.tex
dvisvgm tex_test.dvi -n -v 0 -o tex_test.svg

These commands will generate a number of files in the current folder. Don't worry, you can delete them later.
Now use the produced tex_test.svg the way you did just now. If that gives a blank image or raises an error, we can safely blame the programs.

yaaay used the terminal with no errors nor cursing lol.. ok i did it and it worked and produced the same image as before but with different name:

but just to notify, i can't edit the photo with functions like (Crop) unless i save it in my device, and i noticed another thing too.. just for a second when i was resizing the window of the photo, it turned into blank like there was no photo, when i resized it back, it came back to a normal photo.. i tried to compile your code once again to see if this happens once again but it never did.. so i think it is a bug from the photos app it self..
soo what are the conclusions now?

Yeah that photo app can get bothersome sometimes. I use Snip and Sketch to open .png files by default.
As for the rest, I'm very confused right now. The commands in Manim are still similar to the ones in my files, but yours acts differently for some reason. What if you try using that svg in a scene, does that affect anything?

Yeah that photo app can get bothersome sometimes. I use Snip and Sketch to open .png files by default.
As for the rest, I'm very confused right now. The commands in Manim are still similar to the ones in my files, but yours acts differently for some reason. What if you try using that svg in a scene, does that affect anything?

if you mean make your svg a video, yes it affect everything since my main problem is for a video shows a mathematical formula (WriteStuff example), but i'm curious to see if your code will run as a video, can you provide me with instructions to make it a video?

At least you can reproduce the svg yourself when the error comes by again. Just copy the .tex file produced and run those two commands on it.
As for using the svg to make a video, it would be more optimistic to have the attributes rendered from TextMobject and TexMobject since they produce better results. The svg version is kind of raw and you have to use indexing to achieve the same result as in TextMobject e.g coloring the last word yellow like this:
>>> svg[-4:].set_color(YELLOW)
<manimlib.mobject.types.vectorized_mobject.VGroup object at 0x...>  # Ellipsis stands for some hexadecimal number you'd expect

And as for the svg, I meant this:
class WriteStuff(Scene):
    def construct(self):
        example_text = SVGMobject(file_name="tex_test.svg")
        example_text[-4:].set_color(YELLOW)
        example_tex = TexMobject("\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}")
        group = VGroup(example_text, example_tex)
        group.arrange(DOWN)
        group.set_width(FRAME_WIDTH - 2 * LARGE_BUFF)

        self.play(Write(example_text))
        self.play(Write(example_tex))
        self.wait()

Try running that in actual Manim.

At least you can reproduce the svg yourself when the error comes by again. Just copy the .tex file produced and run those two commands on it.
As for using the svg to make a video, it would be more optimistic to have the attributes rendered from TextMobject and TexMobject since they produce better results. The svg version is kind of raw and you have to use indexing to achieve the same result as in TextMobject e.g coloring the last word yellow like this:
>>> svg[-4:].set_color(YELLOW)
<manimlib.mobject.types.vectorized_mobject.VGroup object at 0x...>  # Ellipsis stands for some hexadecimal number you'd expect

And as for the svg, I meant this:
class WriteStuff(Scene):
    def construct(self):
        example_text = SVGMobject(file_name="tex_test.svg")
        example_text[-4:].set_color(YELLOW)
        example_tex = TexMobject("\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}")
        group = VGroup(example_text, example_tex)
        group.arrange(DOWN)
        group.set_width(FRAME_WIDTH - 2 * LARGE_BUFF)

        self.play(Write(example_text))
        self.play(Write(example_tex))
        self.wait()

Try running that in actual Manim.

it actually worked and produced a video like this:

why did your svg work but the ones in (Example_Scenes) didn't?

I really don't know for sure. What you can do: run the one in example_scenes then, error or not, paste the contents of the svg produced here so I can compare with mine.

I really don't know for sure. What you can do: run the one in example_scenes then, error or not, paste the contents of the svg produced here so I can compare with mine.

it worked in a sudden :)))))))))))

i'm not sure how the F%$# this worked out but listen to what i did: i ran the WriteStuff from example and an error appeared as u see in (1), i went to medie->Tex to see the svg produced but there was many files from other examples, so i deleted all and tried to run WriteStuff again to see the svg for that example, and it worked!!!!!
can you please explain to me how could sub-products like the files in Tex folder prevent the example from working?!!!

idk what happened but something from the things you asked me to do fixed it.. dude you have been more patient and useful than most of the people i know in my life lol.. thank you :D..
but one last thing, did you dive deep deep into manim by your self or used some kind of reference? if you have any references i would be thankful if you provide me with em :D..

I am just as confused as you, my friend. Your laptop just wanted you to feel pain.

idk what happened but something from the things you asked me to do fixed it.. dude you have been more patient and useful than most of the people i know in my life lol.. thank you :D..
but one last thing, did you dive deep deep into manim by your self or used some kind of reference? if you have any references i would be thankful if you provide me with em :D..

Hey, I'm just passing on a favor someone did for me in the past. Ok in that case we never really fixed the problem but I just started using another laptop that didn't have it and that was that. Speaking of which, test some audio and make sure it works. That road can get real messy if it doesn't.
As for learning reference, I did follow the content of Theorem of Beethoven from YouTube and that got me started. But with so many questions and so few answers available online I snapped and decided to learn how to work around everything on my own.  The guys who make pull requests all the time have studied the code more than me, but I can do 95% of anything I can think of doing and/or fixing so that's a big win.
My advice for you, learn how Python works. That's the best way to understand what happens in the videos you make. We're all lucky this is Python and not something like C++ or else the noob status would've ended us.

Oh yeah and study the OG's code. He who made it knows it best.

I have a good deal of experience in other languages such as C# and c++, java, but i never needed to touch a single terminal haha, when i came across manim and found it uses python, i learned it's syntax but needed practice, so i decided to practice on manim while i learn it! 😂.. but seems like this is a mistake and i must learn the terminal commands for python :)..
And for OG u mean open graphs right?

Hold on, how did you run executables in C++ then? Didn't that require some terminal to operate?
And Python is usually best described as a scripting language. Logic is closer to English and way easier to learn. Terminal logic is another story, especially if we start on Powershell.
By OG I meant 3blue1brown. The code in that folder? Open graphs what😂

Now use the produced tex_test.svg the way you did just now. If that gives a blank image or raises an error, we can safely blame the programs.

Hello. I'm having the same problem and got everything right until this part, but with the code I get this error:

I would really appreciate any help you could provide me.
Just to clarify, this is my first encounter with python (and a very frustrating one).

Hold on, how did you run executables in C++ then? Didn't that require some terminal to operate?
And Python is usually best described as a scripting language. Logic is closer to English and way easier to learn. Terminal logic is another story, especially if we start on Powershell.
By OG I meant 3blue1brown. The code in that folder? Open graphs what😂

I used an IDE, So all i had to do is to press ctrl+f5 🌚

Oh welcome.

Now use the produced tex_test.svg the way you did just now. If that gives a blank image or raises an error, we can safely blame the programs.

Hello. I'm having the same problem and got everything right until this part, but with the code I get this error:

I would really appreciate any help you could provide me.
Just to clarify, this is my first encounter with python (and a very frustrating one).

You say this is your first encounter with Python. And you're using Manim? You ain't seen frustration yet!
The deal is simple. Me and the other brother figured out something so we'll just go with that.

Throw this detail in a .tex file, probably in the main folder. Let's say text.tex

\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}
\linespread{1}

\begin{document}

\centering This is some text

\end{document}

Run three very simple commands in Powershell or Command Prompt, whichever you open.

a) cd "C:\path\to\saved\tex\file". Slashes the other way for UNIX.
b) latex -interaction=batchmode -halt-on-error -output-directory="" text.tex
c) dvisvgm text.dvi -n -v 0 -o text.svg
``

Use the svg something like this:

>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

That's how Manim produces the svg files it uses for TextMobject. Producing the svg manually should tell you if your programs are running as they should.

Hold on, how did you run executables in C++ then? Didn't that require some terminal to operate?
And Python is usually best described as a scripting language. Logic is closer to English and way easier to learn. Terminal logic is another story, especially if we start on Powershell.
By OG I meant 3blue1brown. The code in that folder? Open graphs what😂

I used an IDE, So all i had to do is to press ctrl+f5 🌚

Fair enough. I use Pluralsight courses so command line arguments were inevitable from my perspective.

Use the svg something like this:
>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

Yep, I tried that and got this error:

That's how Manim produces the svg files it uses for TextMobject. Producing the svg manually should tell you if your programs are running as they should.

So... why it didn't work? I'd already reinstalled manim and MikTek.

Use the svg something like this:
>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

Yep, I tried that and got this error:

That's how Manim produces the svg files it uses for TextMobject. Producing the svg manually should tell you if your programs are running as they should.

So... why it didn't work? I'd already reinstalled manim and MikTek.

I really have no idea at this point. Mainly cause we never really fixed whatever existing problem that was there, or just because I was pulling educated guesses this whole time.
Just to be sure it's the programs, and just to give you the satisfaction of a working svg file, do this:

<?xml version='1.0' encoding='UTF-8'?>
<!--  Then in a REPL or anywhere run this:
>>> from manimlib.imports import SVGMobject
>>> svg = SVGMobject(file_name="tex_test.svg")
>>> svg.scale(0.5)
<manimlib.mobject.svg.svg_mobject.SVGMobject object at 0x...>
>>> svg.show()

If this don't work we move on to the programs, which I really don't want to do due to underinformation. This very last test will confirm whether any svg files in the future you'll use will be rendered in Manim.

Just to be sure it's the programs, and just to give you the satisfaction of a working svg file, do this:

That worked.

I think I'll have to reinstall everything. Thanks!

Throw this detail in a .tex file, probably in the main folder. Let's say text.tex

\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amssymb}
\linespread{1}

\begin{document}

\centering This is some text

\end{document}

Run three very simple commands in Powershell or Command Prompt, whichever you open.

a) cd "C:\path\to\saved\tex\file". Slashes the other way for UNIX.
b) latex -interaction=batchmode -halt-on-error -output-directory="" text.tex
c) dvisvgm text.dvi -n -v 0 -o text.svg

Hello, I have the same problem. I tried that and I compared the contents of the .svg file. mine is on the right, yours on the left:

There is no <defs> in my tex_test.svg file, I think that's the problem, but I don't have the ability to solve it

Yes, that is the exact problem. Paths are indicated to but not defined.
How many LaTeX packages have you installed by now

There is no <defs> in my tex_test.svg file, I think that's the problem, but I don't have the ability to solve it

Yep, the same is happening with mine.

Yes, that is the exact problem. Paths are indicated to but not defined.
How many LaTeX packages have you installed by now

Wdym? Are we missing some LaTeX packages?

Assuming you installed Miktex, there's this big list of packages that you must click on to actually install.
This is just a guesstimate from me but what if the packages can't be identified by the LaTeX compiler so the svg doesn't come out right

Sorry for late answer.

How many LaTeX packages have you installed by now

In the figure below, these are the LaTex packages all I have .

This is just a guesstimate from me but what if the packages can't be identified by the LaTeX compiler so the svg doesn't come out right

BTW, I run the code python -m manim example_scenes.py UpdatersExample -pl. It generated a lot of .tex files in .\media\Tex and I opened one of them at random. It looks like it has <defs>.
<?xml version='1.0' encoding='UTF-8'?>
<!-- This file was generated by dvisvgm 2.8.2 -->
<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='11.623024pt' height='1.051612pt' viewBox='166.044022 -1.051612 11.623024 1.051612'>
<defs>
<path id='g0-58' d='M1.912827-.52802C1.912827-.816936 1.673724-1.05604 1.384807-1.05604S.856787-.816936 .856787-.52802S1.09589 0 1.384807 0S1.912827-.239103 1.912827-.52802Z'/>
</defs>
<g id='page1'>
<use x='166.044022' y='0' xlink:href='#g0-58'/>
<use x='170.47183' y='0' xlink:href='#g0-58'/>
<use x='174.899638' y='0' xlink:href='#g0-58'/>
</g>
</svg>

Hey I have a theory. Just to be sure.
Do the same three instructions from before, but using this shorter one. I think I have something.
\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage{amsmath}

\begin{document}

\centering This is some text

\end{document}

Hey I have a theory. Just to be sure.
Do the same three instructions from before, but using this shorter one. I think I have something.
\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage{amsmath}

\begin{document}

\centering This is some text

\end{document}

This worked for me. What did you have in mind?

Hey I have a theory. Just to be sure.
Do the same three instructions from before, but using this shorter one. I think I have something.
\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage{amsmath}

\begin{document}

\centering This is some text

\end{document}

This worked for me, too! This is the generated .svg file.
<?xml version='1.0' encoding='UTF-8'?>
<!--  I was right!
Go open MikTex and install the rest of the packages. Like check for updates then install what's not there. Everything should be about 4000 packages so that's going to take time, but in order to make Manim at least work you need the ones in  the ctex template in the root folder, or somewhere. Just search for it, you can't miss it.
 Haha.
Now I'm gonna have some fun.

Wow I am so smart

Thank you very much ! After installing 3600 packages, it works! :))))

You're welcome guys. What do you think, edit that UserWarning to make it more user friendly?
Also there are like four other issues mentioning this very thing so I have to tell them they can stop repeatedly reinstalling MikTex

Hey man, sorry for being a bit late but I've got the same error. Manim used perfectly well on my previous laptop, but not on this one apparently. Could you just give me the final solution. Thanks!

Hey man, sorry for being a bit late but I've got the same error. Manim worked perfectly well on my previous laptop, but not on this one apparently. Could you just give me the final solution. Thanks! Also all the packages are installed in miktex.

I was getting the error even after installing all the packages. Then, I just deleted the media folder and everything worked.
I am not sure if it wil continue working, but I am not getting any errors for the moment.

It came down to install all the MikTex packages left. Then run the three commands I referenced and see if that works
Final detail should be this:

Throw this detail in a .tex file, probably in the main folder. Let's say text.tex

Run three very simple commands in Powershell or Command Prompt, whichever you open.

a) cd "C:\path\to\saved\tex\file". Slashes the other way for UNIX.
b) latex -interaction=batchmode -halt-on-error -output-directory="" text.tex
c) dvisvgm text.dvi -n -o text.svg

Hey I have a theory. Just to be sure.
Do the same three instructions from before, but using this shorter one. I think I have something.
\documentclass[preview]{standalone}

\usepackage[english]{babel}
\usepackage{amsmath}

\begin{document}

\centering This is some text

\end{document}

Using this shorter version of the same. Just to confirm it's just a matter of missing packages.

What if you try the three commands from earlier. Does the svg produced have path elements in it

For some reasons all the animations excluding text and tex animations are working, also I tried to execute your steps but got lost :"), it would be great if you could help me again. Should I try re installing MikTex?

Hey man, sorry for being a bit late but I've got the same error. Manim worked perfectly well on my previous laptop, but not on this one apparently. Could you just give me the final solution. Thanks! Also all the packages are installed in miktex.

I was getting the error even after installing all the packages. Then, I just deleted the media folder and everything worked.
I am not sure if it wil continue working, but I am not getting any errors for the moment.

Unfortunately, not working

For some reasons all the animations excluding text and tex animations are working, also I tried to execute your steps but got lost :"), it would be great if you could help me again. Should I try re installing MikTex?

I can't pretend to have good authority on whether that's a good idea. Keep in mind I've been guessing my way through the guidelines the entire time. But if it's the cross check you need, let me get it for you

Hey I don't know if this will be helpful, but I was able to narrow it down to this package causing my problem.
Once I removed this package, everything worked fine.
Removed \usepackage[T1]{fontenc}

Thank you, this solved it for me.
I had to erase fontenc  from the tex_template.tex file

Hey I don't know if this will be helpful, but I was able to narrow it down to this package causing my problem.
Once I removed \usepackage[T1]{fontenc}, everything worked fine. I'm on Windows 10 and using Miktex. I was unable to find fontenc in Miktex package manager, but I do see it in my C:\Program Files\MiKTeX\tex\latex\base\fontenc.

Hey I don't know if this will be helpful, but I was able to narrow it down to this package causing my problem.
Once I removed \usepackage[T1]{fontenc}, everything worked fine. I'm on Windows 10 and using Miktex. I was unable to find fontenc in Miktex package manager, but I do see it in my C:\Program Files\MiKTeX\tex\latex\base\fontenc.

Thank you so much for finding this. I'm just starting out with manim, and this fixed the issue for me.

Thank you so much, everyone! Just to reiterate...
Comment out \usepackage[T1]{fontenc} from tex_template.tex

I had the same problem on Linux Ubuntu 20.04. The solution that worked for me was to comment out the line \usepackage[T1]{fontenc} from manimlib/tex_template.tex
You can do it by adding a % before it:
%\usepackage[T1]{fontenc}
Apparently, installing the missing packages wasn't an issue, since MiKTeX does it automatically on Linux. However, I was also getting a broken SVG file right on using the commands latex -interaction=batchmode -halt-on-error -output-directory="" tex_test.tex and dvisvgm tex_test.dvi -n -v 0 -o tex_test.svg.
when this line was included.
Thank you everyone! Great job!

OMG THIS JUST WORKED. I am new to manim but I was also having the same problem , found this thread, removed the \usepackage[T1]{fontenc}  thing and it finally worked (I am on windows 10). GOD. I have no idea how you guys figured it out, like I can't imagine figuring this weirdly specific thing hack out. Thanks guys. Idk how much more time I could have wasted on this . OOOOF . I Am SHwo Hawpppyy

OMG THIS JUST WORKED. I am new to manim but I was also having the same problem , found this thread, removed the \usepackage[T1]{fontenc}  thing and it finally worked (I am on windows 10). GOD. I have no idea how you guys figured it out, like I can't imagine figuring this weirdly specific thing hack out. Thanks guys. Idk how much more time I could have wasted on this . OOOOF . I Am SHwo Hawpppyy

OMG THIS JUST WORKED. I am new to manim but I was also having the same problem , found this thread, removed the \usepackage[T1]{fontenc} thing and it finally worked (I am on windows 10). GOD. I have no idea how you guys figured it out, like I can't imagine figuring this weirdly specific thing hack out. Thanks guys. Idk how much more time I could have wasted on this . OOOOF . I Am SHwo Hawpppyy

Haha, package dependency issues are very common in libraries. I started by tracing the error down to the root cause line and spent some time understanding what it was trying to do and had a hutch to check the latex packages. Then it was just matter of trial and error disabling packages to figure out, which one was causing the failure.

OMG THIS JUST WORKED. I am new to manim but I was also having the same problem , found this thread, removed the \usepackage[T1]{fontenc} thing and it finally worked (I am on windows 10). GOD. I have no idea how you guys figured it out, like I can't imagine figuring this weirdly specific thing hack out. Thanks guys. Idk how much more time I could have wasted on this . OOOOF . I Am SHwo Hawpppyy

Haha, package dependency issues are very common in libraries. I started by tracing the error down to the root cause line and spent some time understanding what it was trying to do and had a hutch to check the latex packages. Then it was just matter of trial and error disabling packages to figure out, which one was causing the failure.

Rhetorical question: is it really a good idea to comment out packages just to brute force a solution? At least without knowing why it was put there to begin with

Rhetorical question: is it really a good idea to comment out packages just to brute force a solution? At least without knowing why it was put there to begin with

@NeoPlato
Not really a good idea, just a temporary workaround.
If removing the package allows the library to be functional, then I assume the package was only there only for some specific purpose, for who knows what.
I'm not an expert in LaTex package management, but I suspect that the Latex dependencies in manim library weren't meant to be compatible on all operating systems, given the different Latex package managers out there.
The correct solution would be to figure out why this particular package isn't working for some machines and what requirements are missing. Perhaps, some folks already have some transient Latex setup that solves this issue vs someone who is setting up Latex for the first time just for this project.

@NeoPlato
Not really a good idea, just a temporary workaround.
If removing the package allows the library to be functional, then I assume the package was only there only for some specific purpose, for who knows what.
I'm not an expert in LaTex package management, but I suspect that the Latex dependencies in manim library weren't meant to be compatible on all operating systems, given the different Latex package managers out there.
The correct solution would be to figure out why this particular package isn't working for some machines and what requirements are missing. Perhaps, some folks already have some transient Latex setup that solves this issue vs someone who is setting up Latex for the first time just for this project.

After spending 3-4 days on this issue I gave up and got busy with some new technology, today I came here back after a while, thank you so much for the solution, it works now.

After spending 3-4 days on this issue I gave up and got busy with some new technology, today I came here back after a while, thank you so much for the solution, it works now.

Ok. I just spent an evening debugging and may have some input on this, at least for the Windows 10 install using MiKTeX.
Short solution if you do not wish to remove or comment out \usepackage[T1]{fontenc}, try installing the package cm-super using the MiKTeX console. If you have an ongoing manim project, you may also have to delete the svg-files in the media/Tex folder to force manim to recreate these.
Long story... The \usepackage[T1]{fontenc} changes the font (encoding) used by LaTeX to a font that contains, among others, accented characters which are needed in many languages other than English. It does not do much for English text, but if you for example have accented characters it makes the typesetting slightly nicer as LaTeX does not have to build those extra characters itself but are instead is told by the font how these glyphs should look. The LaTeX companion recommends to always use \usepackage[T1]{fontenc} unless there are legacy reasons not to do so. However, MiKTeX does not in the basic default installation include the vectorized Type 1 fonts for this. These are included in the cm-super package. What happens without the right type of fonts is that dvisvgm fails to include the vectorized descriptions of the characters (glyphs) when converting the dvi file to the svg file, and this is what causes the "UserWarning: g0-65 not recognized" from manim when it cannot find the path attribute (essentially a set of Bézier curves that describe the character like all manim mobjects) for that particular character in the svg file. Installing cm-super (and the Type 1 fonts therein) solves the issue and lets dvisvgm generate the path attribute.

Ok. I just spent an evening debugging and may have some input on this, at least for the Windows 10 install using MiKTeX.
Short solution if you do not wish to remove or comment out \usepackage[T1]{fontenc}, try installing the package cm-super using the MiKTeX console. If you have an ongoing manim project, you may also have to delete the svg-files in the media/Tex folder to force manim to recreate these.
Long story... The \usepackage[T1]{fontenc} changes the font (encoding) used by LaTeX to a font that contains, among others, accented characters which are needed in many languages other than English. It does not do much for English text, but if you for example have accented characters it makes the typesetting slightly nicer as LaTeX does not have to build those extra characters itself but are instead is told by the font how these glyphs should look. The LaTeX companion recommends to always use \usepackage[T1]{fontenc} unless there are legacy reasons not to do so. However, MiKTeX does not in the basic default installation include the vectorized Type 1 fonts for this. These are included in the cm-super package. What happens without the right type of fonts is that dvisvgm fails to include the vectorized descriptions of the characters (glyphs) when converting the dvi file to the svg file, and this is what causes the "UserWarning: g0-65 not recognized" from manim when it cannot find the path attribute (essentially a set of Bézier curves that describe the character like all manim mobjects) for that particular character in the svg file. Installing cm-super (and the Type 1 fonts therein) solves the issue and lets dvisvgm generate the path attribute.

Some additions to this issue. It seems like I was not 100% correct above. It is still true that installing cm-super resolves the issue by installing proper Type 1 vectorized fronts for T1, but in case this package is not installed, there is a program included in MiKTeX called METAFONT that is supposed to recreate vectorized frons by tracing bitmapped fonts, and this program fails to do so (at least on my installation with MiKTeX 20.12 and METAFONT, Version 2.7182818. Thus, in a sense, installing cm-super only solves the issue by avoiding the call to METAFONT, although I would still argue that it is better to use vectorized fronts, to begin with, and not have to trace bitmapped fonts. I think I reached the limits of my LaTeX, DVI and SVG knowledge, so I post the full output of the (verbose) dvisvgm output and the METAFONT log file in case someone else can take this further. Anyhow, these are the errors (when cm-super is not installed) that cascades to the manim warning in the end.
dvisvgm output
>dvisvgm f805ccf86c658da6.dvi -n -v 7 -o "f805ccf86c658da6.svg"

pre-processing DVI file (format version 2)
processing page 1
  computing extents based on data set by preview package (version 12.3)
  width=4.998779pt, height=4.304504pt, depth=0pt
  graphic size: 4.998779pt x 4.304504pt (1.75687mm x 1.51286mm)
  running Metafont for ecrm1000
  WARNING: failed to create ecrm1000.gf
  output written to f805ccf86c658da6.svg
1 of 1 page converted in 0.365 seconds

This is METAFONT, Version 2.7182818 (MiKTeX 20.12) (preloaded base=mf 2021.1.4)  5 JAN 2021 08:46
**mode_setup; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ecrm100
0

! Emergency stop.
<*> mode_setup
              ; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ec...
*** (job aborted, file error in nonstop mode)

METAFONT mfput.log
This is METAFONT, Version 2.7182818 (MiKTeX 20.12) (preloaded base=mf 2021.1.4)  5 JAN 2021 08:46
**mode_setup; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ecrm100
0

! Emergency stop.
<*> mode_setup
              ; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ec...
*** (job aborted, file error in nonstop mode)

Some additions to this issue. It seems like I was not 100% correct above. It is still true that installing cm-super resolves the issue by installing proper Type 1 vectorized fronts for T1, but in case this package is not installed, there is a program included in MiKTeX called METAFONT that is supposed to recreate vectorized frons by tracing bitmapped fonts, and this program fails to do so (at least on my installation with MiKTeX 20.12 and METAFONT, Version 2.7182818. Thus, in a sense, installing cm-super only solves the issue by avoiding the call to METAFONT, although I would still argue that it is better to use vectorized fronts, to begin with, and not have to trace bitmapped fonts. I think I reached the limits of my LaTeX, DVI and SVG knowledge, so I post the full output of the (verbose) dvisvgm output and the METAFONT log file in case someone else can take this further. Anyhow, these are the errors (when cm-super is not installed) that cascades to the manim warning in the end.
dvisvgm output
>dvisvgm f805ccf86c658da6.dvi -n -v 7 -o "f805ccf86c658da6.svg"

pre-processing DVI file (format version 2)
processing page 1
  computing extents based on data set by preview package (version 12.3)
  width=4.998779pt, height=4.304504pt, depth=0pt
  graphic size: 4.998779pt x 4.304504pt (1.75687mm x 1.51286mm)
  running Metafont for ecrm1000
  WARNING: failed to create ecrm1000.gf
  output written to f805ccf86c658da6.svg
1 of 1 page converted in 0.365 seconds

This is METAFONT, Version 2.7182818 (MiKTeX 20.12) (preloaded base=mf 2021.1.4)  5 JAN 2021 08:46
**mode_setup; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ecrm100
0

! Emergency stop.
<*> mode_setup
              ; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ec...
*** (job aborted, file error in nonstop mode)

METAFONT mfput.log
This is METAFONT, Version 2.7182818 (MiKTeX 20.12) (preloaded base=mf 2021.1.4)  5 JAN 2021 08:46
**mode_setup; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ecrm100
0

! Emergency stop.
<*> mode_setup
              ; mag:=4.000000; show pixels_per_inch*mag; batchmode; input ec...
*** (job aborted, file error in nonstop mode)

Finally, here is an example that shows the benefits of the T1 encoding and a font built for this for someone who, like me, sometimes will have to use Swedish characters...

Finally, here is an example that shows the benefits of the T1 encoding and a font built for this for someone who, like me, sometimes will have to use Swedish characters...

set constant TEX_USE_CTEX True and install ctex

set constant TEX_USE_CTEX True and install ctex

At least you can reproduce the svg yourself when the error comes by again. Just copy the .tex file produced and run those two commands on it.
As for using the svg to make a video, it would be more optimistic to have the attributes rendered from TextMobject and TexMobject since they produce better results. The svg version is kind of raw and you have to use indexing to achieve the same result as in TextMobject e.g coloring the last word yellow like this:
>>> svg[-4:].set_color(YELLOW)
<manimlib.mobject.types.vectorized_mobject.VGroup object at 0x...>  # Ellipsis stands for some hexadecimal number you'd expect

And as for the svg, I meant this:
class WriteStuff(Scene):
    def construct(self):
        example_text = SVGMobject(file_name="tex_test.svg")
        example_text[-4:].set_color(YELLOW)
        example_tex = TexMobject("\\sum_{k=1}^\\infty {1 \\over k^2} = {\\pi^2 \\over 6}")
        group = VGroup(example_text, example_tex)
        group.arrange(DOWN)
        group.set_width(FRAME_WIDTH - 2 * LARGE_BUFF)

        self.play(Write(example_text))
        self.play(Write(example_tex))
        self.wait()

Try running that in actual Manim.

Seems like this code produces an error. The output of the code is given below -->
$ manim -pql Ipython.py
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-84 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-104 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-105 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-115 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-111 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-109 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-101 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-116 not recognized
warnings.warn("%s not recognized" % ref)
c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\mobject\svg\svg_mobject.py:125: UserWarning: g0-120 not recognized
warnings.warn("%s not recognized" % ref)
Traceback (most recent call last):
File "c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\extract_scene.py", line 155, in main
scene = SceneClass(**scene_kwargs)
File "c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\scene\scene.py", line 75, in init
self.construct()
File "C:\Users\ashra\Downloads\manim_cairo\Ipython.py", line 12, in construct
self.play(Write(example_text))
File "c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\animation\creation.py", line 111, in init
self.set_default_config_from_length(mobject)
File "c:\users\ashra\appdata\local\programs\python\python39\lib\site-packages\manimlib\animation\creation.py", line 122, in set_default_config_from_length
self.lag_ratio = min(4.0 / length, 0.2)
ZeroDivisionError: float division by zero
Media will be written to C:\Users\ashra\Downloads\manim_cairo\media. You can change this behavior with the --media_dir flag.
What am I supposed to do now?

Ok. I just spent an evening debugging and may have some input on this, at least for the Windows 10 install using MiKTeX.
Short solution: If you do not wish to remove or comment out \usepackage[T1]{fontenc}, try installing the package cm-super using the MiKTeX console (which I assume you can also do by installing the 3600 packages :). If you have an ongoing manim project, you may also have to delete the svg-files in the media/Tex folder to force manim to recreate these.
Long story: The \usepackage[T1]{fontenc} changes the font (encoding) used by LaTeX to a font that contains, among others, accented characters which are needed in many languages other than English. It does not do much for English text, but if you for example have accented characters it makes the typesetting slightly nicer as LaTeX does not have to build those extra characters itself but are instead is told by the font how these glyphs should look. The LaTeX companion recommends to always use \usepackage[T1]{fontenc} unless there are legacy reasons not to do so. However, MiKTeX does not in the basic default installation include the vectorized Type 1 fonts for this. These are included in the cm-super package. What happens without the right type of fonts is that dvisvgm fails to include the vectorized descriptions of the characters (glyphs) when converting the dvi file to the svg file, and this is what causes the "UserWarning: g0-65 not recognized" from manim when it cannot find the path attribute (essentially a set of Bézier curves that describe the character like all manim mobjects) for that particular character in the svg file. Installing cm-super (and the Type 1 fonts therein) solves the issue and lets dvisvgm generate the path attribute.

Followed the instructions to install the cm-super MikTeX package.  Not sure where to find the svg-files in the media/Tex folder though.  However after trying a bunch of the solutions posted here, I still have the error pop up when attempting to run the Manim example

Followed the instructions to install the cm-super MikTeX package. Not sure where to find the svg-files in the media/Tex folder though. However after trying a bunch of the solutions posted here, I still have the error pop up when attempting to run the Manim example.

The media folder is the one containing the subfolder for your video files. There should be a subfolder called Tex as well. There is a default for media (probably the project folder) and it can be set with the —media_dir flag. One of the first things manim outputs when running is ”Media will be written to…” and that is where you will find it.

After re-installing manim and running the example again, it works now.  However during the first run, the MikTeX console had multiple popups to install missing libraries.  Works well now.  Thank you.


better readme with project features

can we add a feature list for this repo?

Yes, this is a problem, and we will take some time to sort it out as soon as possible


Bluesky Logo (Social Network)

Describe the requested icon(s)
Bluesky  Logo (butterfly)

References
https://bsky.app/

Additional context
For use in share buttons or social media items

Closing as duplicate of #446. Give a 👍 over there to show your support!


What is you don't want to use all the syntaxt and rules

When you have alternative or language features that are not ready for use if might be helpful to be able to enable and disable features.

Closing. If you still want an answer, reopen and we will try to respond. I am really sorry we didn't do so before, but the project ops structure was in a very bad state and we are only now going through everything and trying to set up a system to make sure all questions are answered.

Closing. If you still want an answer, reopen and we will try to respond. I am really sorry we didn't do so before, but the project ops structure was in a very bad state and we are only now going through everything and trying to set up a system to make sure all questions are answered.


Filled fields in additional pages do not render in Acrobat, but work fine in chrome.

What were you trying to do?
I have a one page fillable PDF document (a roster list) that I use PDF-LIB to fill in with the list of people that have RSVPd. No problem.  Sometimes I need multiple pages if there are more than x number of people.  Since I only have one template document, I create multiple pdf-lib documents and fill in each one separately.  Then I create a new blank master document and merge all the individual pages into the master using copyPages.
When viewed in Chrome based browsers, the document is as expected.
When viewed in Adobe Reader, the first page is filled out, the rest of the pages, the PDF is there, but all the fields are blank.
How did you attempt to do it?
Overall approach was:

create multiple PDF-LIB objects from the single template.
Fill in the fields for each PDF
Create a new blank master PDF
Merge all the pages into the master document
Have the user download it and view in whatever reader that have available. Sometimes that's directly in the browser, sometimes that is Adobe, sometimes it's Foxit, etc.

What actually happened?
The code works. It generates a PDF.  But the PDF renders differently in Adobe than other readers.
In Chrome and Foxit, the PDF has all pages and all fields on all pages are properly filled
In Adobe, the first page has a fully filled PDF, but any additional pages have the original template PDF, but none of the field data is displayed.
What did you expect to happen?
I expected the PDF to show all the fields on all readers.
How can we reproduce the issue?
Some simplified pseudo code.
var { PDFLib } = globalThis;
const response = await fetch(url);    // URL of template PDF
const blob = await response.blob();
const arrayBuffer = await new Response(blob).arrayBuffer();
const templateByteArray = new Uint8Array(arrayBuffer);     // store it for later

// [determine the number of pages I need]
// for each page needed
 {
     pdfDocArray[pageNumIndx] = await PDFLib.PDFDocument.load(templateByteArray);
     formArray[pageNumIndx] = pdfDocArray[pageNumIndx].getForm();

     // fill in the fields
     formArray[pageNumIndx].getTextField('Location').setText("somewhere");
     ...
}

// merge them together
const pdfDocMaster = await PDFLib.PDFDocument.create()

// for each page added
{
     const pdfBytes1 = await pdfDocArray[pageNumIndx].save();
     const pdfDoc2 = await PDFLib.PDFDocument.load(pdfBytes1);
     pdfDocArray[pageNumIndx] = pdfDoc2;

     const [TmpPage] = await pdfDocMaster.copyPages(pdfDocArray[pageNumIndx], [0]);	// copy the filled in page to the new doc
     await pdfDocMaster.addPage(TmpPage);
     pageNumIndx++;
}

Version
1.17.1
What environment are you running pdf-lib in?
Browser
Checklist

[X] My report includes a Short, Self Contained, Correct (Compilable) Example.
[X] I have attached all PDFs, images, and other files needed to run my SSCCE.

Additional Notes
No response

Note, up until recently, my work around for this was to Rename the Form Fields on each page to include the page number.
Page 1 Field "Name" => renamed to Name1
Page 2 Field "Name" => Name2
Rename is done before the copy over.
Note: This has issues with radio buttons.
Note 2: Recent Edge PDF reader update, now doesn't display field data. Not sure if related, still troubleshooting

Follow up:
With the new Edge Acrobat Reader, one hack that was working is to "copy field by field" and place new field in the same location with the value set. This worked for base 1 page form becoming multi-page form.  I am still working through this to do Multi-Page forms to Mega-Multipage form.
Note: If you use the edge Acrobat Reader to Print to pdf/printer, entries are there.
Also, Flatting the form also makes it work (not the solution, but a possible workaround)

So found a solution that covers 1 page form into multi-page form and multi=>multi
I built a "Copy Form" Function

It goes through each form field in the source
Get's the Form field's rectangle
     const sourceAnnotation = PDFAnnotation.fromDict(field.acroField.dict); const sourceRect = sourceAnnotation.getRectangle();
Creates a new Field in the new form and update the Rect of the new field
       const newField = toForm.createTextField(name);        newField.addToPage(destPage, {          x: sourceRect.x,          y: sourceRect.y,          width: sourceRect.width,          height: sourceRect.height,          textColor: rgb(0, 0, 0)        });        const currentAnnotation = PDFAnnotation.fromDict(newField.acroField.dict);        currentAnnotation.setRectangle(sourceRect);        newField.setText(value);
Note: you must manage copying to the correct page outside of this.

I have only tested this with text fields.
Hopefully, this will help someone


missing sleep_for in std::this_thread when building on arch linux

Error when building on linux gcc 12.2.0-1:
/home/keanu/Programs/EonTimer/src/services/TimerService.cpp: In member function ‘std::chrono::microseconds service::TimerService::runStage(std::chrono::microseconds, std::chrono::microseconds)’:
/home/keanu/Programs/EonTimer/src/services/TimerService.cpp:105:31: error: ‘sleep_for’ is not a member of ‘std::this_thread’
  105 |             std::this_thread::sleep_for(adjustedPeriod);
      |                               ^~~~~~~~~
make[2]: *** [CMakeFiles/EonTimer.dir/build.make:374: CMakeFiles/EonTimer.dir/src/services/TimerService.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/Makefile2:84: CMakeFiles/EonTimer.dir/all] Error 2
make: *** [Makefile:91: all] Error 2

This is fixed by adding #include <thread> to TimerService.h

Can confirm that this bug occurs, and also that this PR fixes it.

@KeanuGh @Brod8362 I'm going to close this since it's no longer relevant. I recently rewrote the application in python with PySide6. You can find the alpha release artifacts here


Added option to directly edit the project title from header

Fixes #1808
Describe the changes you have made in this PR -

Added option to directly edit the project title from the header itself.

Screenshots of the changes (If any) -
Initial State

On Change
(Changes are synced automatically between both of the project title inputs)

Coverage remained the same at 87.962% when pulling 6e44fd06b75617ee5699ca4e9ddfadde41ab1e0e on dipanshparmar:header-title-input#1808 into 7b3ecb4e6141c681cebf0c1533176fc2bb7e2ce9 on CircuitVerse:new_UI.

Works nicely but please fix conflicts and the changes requested.

@satu0king working on this!

@satu0king please have a look now.

@satu0king closing the PR as it is related to new_UI branch and making a new one for master.


Recommended args for masif-search are not correct

Should be ./compute_descriptors.sh -l lists/testing.txt.

Even with this changed compute_descriptors.sh command does nothing: the items from the input list never get used (eval_list).

It is weird because I have been using it and they do get used:
if len(eval_list) > 0 and ppi_pair_id not in eval_list:
    continue

I added a small explanation for compute_descriptors.sh


feat: add Card component

[!WARNING]
This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

#233  👈
#231
#229
#228
#227
main

This stack of pull requests is managed by Graphite. Learn more about stacking.

Join @connorlindsey and the rest of your teammates on  Graphite


SSR Hydration mismatch error message on class is unhelpful

Vue version
3.4.7
Link to minimal reproduction
https://stackblitz.com/edit/vue-ssr-example-suhfbu?file=server.js
Steps to reproduce

Have a hydration mismatch on an element's class property (maybe others as well?)
View the error in the console

What is expected?
The error conveys the mismatch between the server in client by displaying the class values on both the client and server.
What is actually happening?
The error, shown below, does not pretty print the class value, so it is output as [object Set]. This makes it more difficult to debug and resolve hydration mismatches.
[Vue warn]: Hydration class mismatch on
<div class="0.1731338173">

  - rendered on server: class="[object Set]"
  - expected on client: class="[object Set]"
  Note: this mismatch is check-only. The DOM will not be rectified in production due to performance overhead.
  You should fix the source of the mismatch.
  at <App> vue.esm-browser.js:1587:13

System Info
No response
Any additional comments?
This bug can be pretty frustrating when working with poppers and other components that depend on unique identifiers in css classes.

I know I had the same issue, Math.random() is being called twice hence you get different results.


dex: move SwapExecutions to NV storage

Close #4084, please do not merge.

This is ready to review and receive ACKs, but we should not merge it.


Feature/dynamic version

// TODO: Take this value from package.json

@marcosmol204 Awesome! 🛰 This can definitely save future mismatches, short and elegant
@all-contributors please add @marcosmol204  for code

@marcosmol204 Awesome! 🛰 This can definitely save future mismatches, short and elegant
@all-contributors please add @marcosmol204 for code

Thanks!
For this PR I need to add something?

@goldbergyoni
Thanks!
For this PR I need to add something?

@marcosmol204 No, I'm merging now. Congrats, your first PR here is inside the code 🤩


Refactor dashboard and settings tabs into routes

Pull Request Description

Close https://github.com/enso-org/cloud-v2/issues/1410

Enables links in the future to link directory to e.g. a specific settings page

Deep links do not support these new links yet, however it would be simple enough to add support

Allow "settings" icon in Category Switcher to do navigate('/settings/local') rather than requiring a workaround
Remove obsolete searchParamsState hooks

Important Notes

When navigating, the URL search parameters are lost (and so they are missing by the time GUI reads them).

GUI team should review whether this is an issue for the time being
We should probably rethink how CLI parameters should be passed to GUI (if at all)

Testing instructions
Apart from testing all pages (all settings pages, all drive categories, editor tab):

Make sure you stay on the same page (including settings subpages and drive categories) after a reload
Test opening and closing projects and switching tabs with projects open
Make sure that projects are still reopened after reload (and do not magically appear after reload if closed
Make sure settings tab shows as selected after reload (because the active tab is done by adding a clip mask to the darker background behind it, so if there is a race condition then it may get out of sync)

Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:

[x] The documentation has been updated, if necessary.
[x] Screenshots/screencasts have been attached, if there are any visual changes. For interactive or animated visual changes, a screencast is preferred.
[x] All code follows the
Scala,
Java,
TypeScript,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
[x] Unit tests have been written where possible.

Remove obsolete searchParamsState hooks

Disagree it's obsolete. It's a very simple state manager on top of the query parameters.

Also, I'm not sure that this PR is worth time spending on:

React router is about to be released (I assume it will be public in the next 2 months)
Tanstack router has it out of the box
When we'll start the transition from the react-router to tanstack, we'll probably remove this code completely

It's a very simple state manager on top of the query parameters.

yes, but this PR replaces query params with routes (query params are lost on navigation so i'm not sure they're useful)

tanstack router is about to be released

the point of this PR is to refactor the URLs in the app, the idea is the same regardless of the underlying framework

When we'll start the transition from the react-router to tanstack, we'll probably remove this code completely

again no, we will need URLs in some form, see the point above

yes, but this PR replaces query params with routes (query params are lost when navigating away so i'm not sure they're useful anymore)

It's okay, it's the lifecycle of this kind of state. It has its own advantages and disadvantages, e.g. it's preserved in history, restores on navigating back & forth, you can set this state outside (by navigating using these parameters), and users can share this state with others. None of the existing stores have these abilities.

fair enough

the point of this PR is to refactor the URLs in the app, the idea is the same regardless of the underlying framework

So let's then put settings under the /pages/ folder?
And it's not the same. In this particular case, the route structure will be drastically different compared to the current solution:

We'll use nested routes to represent sections, see: https://tanstack.com/router/latest/docs/framework/react/guide/route-trees
We'll inline paths into the route configuration and colocate config parts with the according routes, thus appUtis might be even removed.
React aria components lib supports tanstack router out of the box: https://react-spectrum.adobe.com/react-aria/routing.html#tanstack-router
Since I joined enso we haven't faced issues with the current navigation, which means that this part changes less often than the other(thus requiring less immediate effort to spend) -> typing won't make things much better as well and won't solve anything.
The main purpose of migration to tanstack router is: easier to work with (react-router API is unobvious and hard to debug), support for context in loaders(we'll use it to prefetch queries), ease of adding guards and paywalls on top of the tanstack API.

So the tanstack solution will be drastically different from the current one and that's why I'm saying that it's not a good idea to invest our time into improving the ergonomics of the current API.

So let's then put settings under the /pages/ folder?

good point, i guess Drive and Editor belong there too

We'll use nested routes to represent sections

react router can do that as well, no? so if you have issues with the current structure then that can probably be changed even before the move to tanstack router

appUtils might be even removed

that is not a problem, appUtils is simply a means to an end

typing won't make things much better

correct, it exists mostly for autocomplete. i'm just not a fan of having to import the paths everywhere.
and again, i cannot stress this enough, but the main point of this PR is to actually use paths for our pages, the other stuff like the type refactors are secondary. if you have issues with the added types i can revert it to the old list of constants

it's not a good idea to invest our time

except the time has already been spent

good point, i guess Drive and Editor belong there too

Definetely

react router can do that as well, no? so if you have issues with the current structure then that can probably be changed even before the move to tanstack router

Yes, and I had a few attempts to migrate, but I concluded that it'd be better to spend that effort on migration to tanstack router.

tl;dr: the main point of this PR is the paths (feedback on the path structure is welcome of course)
this also means the rest of the refactors:
a) are only done because i just prefer things that way over the current structure. i could have left things as they were, but i just like that now i can just navigate() and the path will be autocompleted for me
b) i'm happy to change if you have better alternatives

except the time has already been spent

Yes, and you left me no other choice rather to approve that. I just want to share my thoughts and the way I think about changes like these, the priorities, and the other stuff. Just want to be with you on the same page.

no other choice rather to approve that

i don't think it's a big loss to lose less than a day of work fwiw, and again i have to point out that the main change is switching from http://localhost:8080/?cloud-ide_page=%22settings%22&cloud-ide_SettingsTab=%22organization%22 to http://localhost:8080/settings/organization so that the settings page can be navigated to without weird workarounds

trying to improve the current solution

(again see above, the point of this PR is not to improve DX)
tl;dr:

the main point of this PR is to change the paths. all other refactors don't matter, they can be changed or reverted easily enough
this PR represents an option that we have. i guess i just assumed that this would be a sensible solution to the workaround that is currently in develop to navigate to /settings/local

When navigating, the URL search parameters are lost (and so they are missing by the time GUI reads them).
 -  GUI team should review whether this is an issue for the time being
 -  We should probably rethink how CLI parameters should be passed to GUI (if at all)

I agree that we should modify this. GUI doesn't really have any need to read parameters directly now. Looks like all that we care about is carried through config provided by the dashboard. You can check all config usages by looking for provideGuiConfig and injectGuiConfig. There aren't many. We should simplify that whole config object to just simple props object, and remove all that complicated config reading logic. The dasboard would then fully own the URL through its router.

for posterity, the GUI config options are here:
https://github.com/enso-org/enso/blob/e609b1cff89cbaf0b2593601534fd55020ade066/app/gui2/src/config.json
going through each category:

startup: passed manually by dashboard
engine: passed manually by dashboard
authentication: unused (auth is handled by dashboard)
window:

topBarOffset: obsolete after the new redesign that switches from buttons to switch pages, to a tab bar. in the current develop, the GUI top bar and the tab bar are separate so there is no offset required to avoid overlap.
vibrancy: unused (should be handled by dashboard)

so i believe there should be no problem with omitting the URL search params then

So something isn't right here. Tried to open local project and got.. Lemme know how time consuming fixing this might be.. is this PR very crucial for us right now?

yeah it's not very crucial, will look into that issue though

worth noting though that that seems to be a WASM parser issue so i assume it shouldn't be caused by changes in this PR, is it consistently reproducible? (and consistently not reproducible on develop?)
couldn't repro in dev mode but i'm building the app rn to test the built appimage

huh nvm, i can repro in the built app, will investigate

worth noting though that that seems to be a WASM parser issue so i assume it shouldn't be caused by changes in this PR, is it consistently reproducible? (and consistently not reproducible on develop?)
couldn't repro in dev mode but i'm building the app rn to test the built appimage

Absolutely wild guess: something to do with the app path being matched incorrectly or modified incorrectly, then when the app tries to init the WASM bundle it makes a network request to the wrong location and thus can't fetch it and run it.

It works fine on develop so we probably missed some places with the old logic?

Absolutely wild guess: something to do with the app path being matched incorrectly or modified incorrectly

that doesn't seem to be it:

looks the wasm is being fetched correctly and instead it seems to be a race condition when fetching the wasm (the JS is trying to use the WASM before the module is ready). but... it's not like it's being fetched multiple times so not sure what might be going wrong here

seems like @indiv0 found the issue... @PabloBuchu should be ready for further testing now

Absolutely wild guess: something to do with the app path being matched incorrectly or modified incorrectly

that doesn't seem to be it:

looks the wasm is being fetched correctly and instead it seems to be a race condition when fetching the wasm (the JS is trying to use the WASM before the module is ready). but... it's not like it's being fetched multiple times so not sure what might be going wrong here

dumb question... is that WASM actually WASM? 605K seems small

yeah - the only thing in rust WASM now is the parser

never mind! it seems like it is indeed a GUI issue:

https://github.com/enso-org/enso/pull/10688

@PabloBuchu merged latest develop so hopefully the issue will be gone now

can confirm that the issue launching local projects is fixed after merge

This is how it behaves when you try to switch between opened project and local dashboard (ugly visible redirect). @somebody1234 this change seems much more unstable than we think. Do we really need to merge it before September release?

https://github.com/user-attachments/assets/2869cdbe-6279-4013-9379-cb1e2bae46bb

closing as it's a (relatively minor) logic change


move LatestSupportedVersion to 4.13

4.13 branch has occured and we need to update

/lgtm

/lgtm