pub fn add_new_hidden(&mut self, label: &str) -> Option<TagId> {
        if self.get_hidden_by_label(label).is_none() {
            // hidden tags are numbered descending from the highest possible number
            // to prevent conflicts with IDs of normal tags
            let next_id = usize::MAX - self.hidden.len();
            let tag = Tag {
                id: next_id,
                label: label.to_string(),
                hidden: true,
            };
            let id = tag.id;
            self.hidden.push(tag);
            Some(id)
        } else {
            tracing::error!(
                "Tried creating a hidden tag with label {}, but a hidden tag with the same label already exists",
                label
            );
            None
        }
    }
Create a new hidden tag with the provided label,
and append it to the list of hidden tags.
The ID will be assigned automatically and returned.

## Non unique label
May not create a new tag if a hidden tag with the same label already exists,
this is indicated by the return value of `None`.
leftwm-core/src/models/tag.rs