how can i update my postmeta without losing old data?

The saving logic should be like this

<?php
global $post;

$get_my_meta    = get_post_meta($post->ID, 'my_meta', true);
$post_meta_name = get_post_meta($post->ID, 'name-en',true);

$meta = [
    'name' => $post_meta_name,
    'chap' => $season['quality_serie']
];

$updatemeta = [
    $get_my_meta,
    $meta
];

add_post_meta($post->ID, 'my_meta', $meta, true);
?>

And the loop logic should be like this

<?php
$first_link = get_post_meta($post->ID, 'my_meta');

if ($first_link) : foreach( $first_link as $season) : 
?>
<ul>
   <li>
    <?php echo $season['chap'];?>
    <?php echo $season['name'];?>
   </li>
</ul>
<?php endforeach; endif; ?>

From your code I think that would work. If it doesn’t, could you add a print_r($first_link) so I could replicate this in my local env for more testing?