MaP always 0. Using Yolov8

I am trying to train the https://public.roboflow.com/object-detection/self-driving-car/3 dataset with YOLOv8 using Keras (I used the example from [https://keras.io/examples/vision/yolov8/Keras and Yolov8](https://keras.io/examples/vision/yolov8/)):
"""# Setup"""

import os
from tqdm.auto import tqdm
import xml.etree.ElementTree as ET

import tensorflow as tf
from tensorflow import keras
import requests
import zipfile

import keras_cv
from keras_cv import bounding_box
from keras_cv import visualization
import cv2
import numpy as np

# Download dataset.
def download_file(url, save_name):
    if not os.path.exists(save_name):
        print(f"Downloading file")
        file = requests.get(url, stream=True)
        total_size = int(file.headers.get('content-length', 0))
        block_size = 1024
        progress_bar = tqdm(
            total=total_size,
            unit='iB',
            unit_scale=True
        )
        with open(os.path.join(save_name), 'wb') as f:
            for data in file.iter_content(block_size):
                progress_bar.update(len(data))
                f.write(data)
        progress_bar.close()
    else:
        print('File already present')

download_file(
    'https://app.roboflow.com/...',
    'cars.zip'
)

# Unzip the data file
def unzip(zip_file=None):
    try:
        with zipfile.ZipFile(zip_file) as z:
            z.extractall("./")
            print("Extracted all")
    except:
        print("Invalid file")

unzip('cars.zip')

"""# Hyperparameters"""

SPLIT_RATIO = 0.2
BATCH_SIZE = 4
LEARNING_RATE = 0.001
EPOCH = 5
GLOBAL_CLIPNORM = 10.0

# check if an image is grayscale
def is_grayscale(image_path):
    img = cv2.imread(image_path)
    if len(img.shape) < 3: return True
    if img.shape[2]  == 1: return True
    b,g,r = img[:,:,0], img[:,:,1], img[:,:,2]
    if (b==g).all() and (b==r).all(): return True
    return False

class_ids = [
    "car",
    "pedestrian",
    "trafficLight-Red",
    "trafficLight-Gree",
    "truck",
    "trafficLight",
    "biker",
    "trafficLight-RedLeft",
    "trafficLight-GreenLeft",
    "trafficLight-Yellow",
    "trafficLight-YellowLeft"
]
class_mapping = dict(zip(range(len(class_ids)), class_ids))

# Path to images and annotations
path_images = "../content/train/"
path_annot = "../content/train/"

# Get all XML file paths in path_annot and sort them
xml_files = sorted(
    [
        os.path.join(path_annot, file_name)
        for file_name in os.listdir(path_annot)
        if file_name.endswith(".xml")
    ]
)

# Get all JPEG image file paths in path_images and sort them
jpg_files = sorted(
    [
        os.path.join(path_images, file_name)
        for file_name in os.listdir(path_images)
        if file_name.endswith(".jpg") and not is_grayscale(os.path.join(path_images,     file_name))
    ]
)

def parse_annotation(xml_file):
    tree = ET.parse(xml_file)
    root = tree.getroot()

    image_name = root.find("filename").text
    image_path = os.path.join(path_images, image_name)

    boxes = []
    classes = []
    for obj in root.iter("object"):
        cls = obj.find("name").text
        classes.append(cls)

        bbox = obj.find("bndbox")
        xmin = float(bbox.find("xmin").text)
        ymin = float(bbox.find("ymin").text)
        xmax = float(bbox.find("xmax").text)
        ymax = float(bbox.find("ymax").text)
        boxes.append([xmin, ymin, xmax, ymax])

    class_ids = [
        list(class_mapping.keys())[list(class_mapping.values()).index(cls)]
        for cls in classes
    ]
    return image_path, boxes, class_ids

image_paths = []
bbox = []
classes = []
for xml_file in tqdm(xml_files):
    image_path, boxes, class_ids = parse_annotation(xml_file)
    image_paths.append(image_path)
    bbox.append(boxes)
    classes.append(class_ids)

bbox = tf.ragged.constant(bbox)
classes = tf.ragged.constant(classes)
image_paths = tf.ragged.constant(image_paths)

data = tf.data.Dataset.from_tensor_slices((image_paths, classes, bbox))

# Determine the number of validation samples
num_val = int(len(xml_files) * SPLIT_RATIO)

# Split the dataset into train and validation sets
val_data = data.take(num_val)
train_data = data.skip(num_val)

def load_image(image_path):
    image = tf.io.read_file(image_path)
    image = tf.image.decode_jpeg(image, channels=3)
    return image

def load_dataset(image_path, classes, bbox):
    # Read Image
    image = load_image(image_path)
    bounding_boxes = {
        "classes": tf.cast(classes, dtype=tf.float32),
        "boxes": bbox,
    }
    return {"images": tf.cast(image, tf.float32), "bounding_boxes": bounding_boxes}

"""# Data Augmentation"""

augmenter = keras.Sequential(
    layers=[
        keras_cv.layers.RandomFlip(mode="horizontal", bounding_box_format="xyxy"),
        keras_cv.layers.RandomShear(
            x_factor=0.2, y_factor=0.2, bounding_box_format="xyxy"
        ),
        keras_cv.layers.JitteredResize(
            target_size=(640, 640), scale_factor=(0.75, 1.3), bounding_box_format="xyxy"
        ),
    ]
)

"""# Creating Training Dataset"""

train_ds = train_data.map(load_dataset, num_parallel_calls=tf.data.AUTOTUNE)
train_ds = train_ds.shuffle(BATCH_SIZE * 4)
train_ds = train_ds.ragged_batch(BATCH_SIZE, drop_remainder=True)
train_ds = train_ds.map(augmenter, num_parallel_calls=tf.data.AUTOTUNE)

"""# Creating Validation Dataset"""

resizing = keras_cv.layers.JitteredResize(
    target_size=(640, 640),
    scale_factor=(0.75, 1.3),
    bounding_box_format="xyxy",
)

val_ds = val_data.map(load_dataset, num_parallel_calls=tf.data.AUTOTUNE)
val_ds = val_ds.shuffle(BATCH_SIZE * 4)
val_ds = val_ds.ragged_batch(BATCH_SIZE, drop_remainder=True)
val_ds = val_ds.map(resizing, num_parallel_calls=tf.data.AUTOTUNE)

def dict_to_tuple(inputs):
    return inputs["images"], inputs["bounding_boxes"]

train_ds = train_ds.map(dict_to_tuple, num_parallel_calls=tf.data.AUTOTUNE)
train_ds = train_ds.prefetch(tf.data.AUTOTUNE)

val_ds = val_ds.map(dict_to_tuple, num_parallel_calls=tf.data.AUTOTUNE)
val_ds = val_ds.prefetch(tf.data.AUTOTUNE)

"""# Creating Model"""

backbone = keras_cv.models.YOLOV8Backbone.from_preset(
    "yolo_v8_s_backbone_coco"  # We will use yolov8 small backbone with coco weights
)

yolo = keras_cv.models.YOLOV8Detector(
    num_classes=len(class_mapping),
    bounding_box_format="xyxy",
    backbone=backbone,
    fpn_depth=1,
)

"""# Compile the Model"""

optimizer = tf.keras.optimizers.Adam(
    learning_rate=LEARNING_RATE,
    global_clipnorm=GLOBAL_CLIPNORM,
)

yolo.compile(
    optimizer=optimizer, classification_loss="binary_crossentropy", box_loss="ciou"
)

"""# COCO Metric Callback"""

class EvaluateCOCOMetricsCallback(keras.callbacks.Callback):
    def __init__(self, data, save_path):
        super().__init__()
        self.data = data
        self.metrics = keras_cv.metrics.BoxCOCOMetrics(
            bounding_box_format="xyxy",
            evaluate_freq=1e9,
        )

        self.save_path = save_path
        self.best_map = -1.0

    def on_epoch_end(self, epoch, logs):
        self.metrics.reset_state()
        for batch in self.data:
            images, y_true = batch[0], batch[1]
            y_pred = self.model.predict(images, verbose=0)
            self.metrics.update_state(y_true, y_pred)

        metrics = self.metrics.result(force=True)
        logs.update(metrics)

        current_map = metrics["MaP"]
        if current_map > self.best_map:
            self.best_map = current_map
            self.model.save(self.save_path)  # Save the model when mAP improves

        return logs

"""# Train the Model"""

yolo.fit(
    train_ds,
    validation_data=val_ds,
    epochs=3,
    callbacks=[EvaluateCOCOMetricsCallback(val_ds, "model.h5")],
)

After 1 and many Epochs, I have a
...MaP: 0.0000e+00 - MaP@[IoU=50]: 0.0000e+00 - MaP@[IoU=75]: 0.0000e+00 - MaP@[area=small]: 0.0000e+00 - MaP@[area=medium]: 0.0000e+00 - MaP@[area=large]: 0.0000e+00.
But when I train the EXACT SAME dataset with only using Yolov8, the mAP is not 0 and goes up with the time.
Why is that happening? Am I doing something wrong? It's not just with this dataset but with many others.

Can confirm same issue when training the example code from keras-io/guides/keras_cv/object_detection_keras_cv.py
Is there any update on this issue?

Any updates on this issue? I have the same problem.


[Source-Build] Fix dependencies for Source build

Description
This issue will be used to track the changes that are required to remove packages that are not required for clean build from source.
For information refer https://github.com/dotnet/source-build/issues/896

Most of the packages removed via https://github.com/microsoft/vstest/pull/2017

Removed the rest via https://github.com/microsoft/vstest/pull/2058


ca65: bundle data byte writes

Closes #94

Codecov Report

Merging #99 (bd89581) into main (9d49308) will decrease coverage by 0.20%.
The diff coverage is 0.00%.

@@            Coverage Diff             @@
##             main      #99      +/-   ##
==========================================
- Coverage   47.72%   47.52%   -0.21%
==========================================
  Files          83       83
  Lines        7157     7188      +31
==========================================
  Hits         3416     3416
- Misses       3595     3626      +31
  Partials      146      146


Bumping up version to 0.10.0 for all the manifests.

Signed-off-by: rachitchauhan43<EMAIL_ADDRESS>Signed-off-by: rachitchauhan43<EMAIL_ADDRESS>
What this PR does / why we need it:
New manifests for 0.10.0
Which issue(s) this PR fixes (optional, in fixes #<issue number>(, fixes #<issue_number>, ...) format, will close the issue(s) when PR gets merged):
Fixes #
Type of changes
Please delete options that are not relevant.

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] This change requires a documentation update

Feature/Issue validation/testing:
Please describe the tests that you ran to verify your changes and relevent result summary. Provide instructions so it can be reproduced.
Please also list any relevant details for your test configuration.

[ ] Test A

[ ] Test B

Logs

Special notes for your reviewer:

Please confirm that if this PR changes any image versions, then that's the sole change this PR makes.

Checklist:

[ ] Have you added unit/e2e tests that prove your fix is effective or that this feature works?
[ ] Has code been commented, particularly in hard-to-understand areas?
[ ] Have you made corresponding changes to the documentation?

Release note:

/cc @yuzisun

/cc @sukumargaonkar

/approve


Question about whether Yi-VL-6B can be fine-tuned using its own dataset

Reminder

[X] I have searched the Github Discussion and issues and have not found anything similar to this.

Motivation
The low footprint of Yi-VL's video memory and the high speed of its inference allows room for more utility. If the Yi-VL series of multimodal macromodels can be fine-tuned using its own dataset, it many projects will be a great leap forward!
Solution
No response
Alternatives
No response
Anything Else?
No response
Are you willing to submit a PR?

[x] I'm willing to submit a PR!

hello~
yi-vl-6b is an excellent performing model, and the ms-swift LLM training framework has incorporated sft for yi-vl. It provides example scripts and supports custom datasets. You can check it out here~
https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/yi_vl_6b_chat
The script utilizes the COCO dataset for fine-tuning. After training, the generated samples are as follows:
"""
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A large airplane is on display in a museum.
###

[LABELS]People walking in a museum with a airplane hanging from the celing.
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000492132.jpg']
--------------------------------------------------------------------
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A bowl of fruit and cake next to a cup of coffee.
###

[LABELS]a bowl of fruit and pastry on a table
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000558642.jpg']
"""

I added the finetuning scripts. See #368

hello~
yi-vl-6b is an excellent performing model, and the ms-swift LLM training framework has incorporated sft for yi-vl. It provides example scripts and supports custom datasets. You can check it out here~ https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/yi_vl_6b_chat
The script utilizes the COCO dataset for fine-tuning. After training, the generated samples are as follows:
"""
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A large airplane is on display in a museum.
###

[LABELS]People walking in a museum with a airplane hanging from the celing.
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000492132.jpg']
--------------------------------------------------------------------
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A bowl of fruit and cake next to a cup of coffee.
###

[LABELS]a bowl of fruit and pastry on a table
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000558642.jpg']
"""

Thanks, I'm swift trying to register the dataset and train with the already downloaded model!

I added the finetuning scripts. See #368

Thank you very much for your work, I will try to use it!

I added the finetuning scripts.  It provides example scripts and supports custom datasets. You can check it out here~ https://github.com/modelscope/swift/tree/main/examples/pytorch/llm/scripts/yi_vl_6b_chat
The script utilizes the COCO dataset for fine-tuning. After training, the generated samples are as follows:
"""
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A large airplane is on display in a museum.
###

[LABELS]People walking in a museum with a airplane hanging from the celing.
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000492132.jpg']
--------------------------------------------------------------------
[PROMPT]This is a chat between an inquisitive human and an AI assistant. Assume the role of the AI assistant. Read all the images carefully, and respond to the human's questions with informative, helpful, detailed and polite answers. 这是一个好奇的人类和一个人工智能助手之间的对话。假设你扮演这个AI助手的角色。仔细阅读所有的图像，并对人类的问题做出信息丰富、有帮助、详细的和礼貌的回答。

### Human: [-200 * 1]
please describe the image.
### Assistant:
[OUTPUT]A bowl of fruit and cake next to a cup of coffee.
###

[LABELS]a bowl of fruit and pastry on a table
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000558642.jpg']
"""

I don't know how I can register my own dataset. And this doesn't allow me to enter my own local model path, after I enter the local model path, swift still uses the network to download the model. How can I solve this?

WARNING: tokenization mismatch

I didn't encounter the same issue. Could you please share your training scripts?
After reviewing the code, I noticed that the WARNING might be caused by the commented code here. Could you please checke your local code?

@a2382625920 I thought of another possibility. The training code is modified from LLaVA. If you have installed llava locally, you can uninstall it and try again.

WARNING: tokenization mismatch

I didn't encounter the same issue. Could you please share your training scripts?
After reviewing the code, I noticed that the WARNING might be caused by the commented code here. Could you please checke your local code?

#!/bin/bash
deepspeed --include localhost:0 --master_port 1234 llava/train/train_mem.py
--deepspeed ./scripts/zero2.json
--lora_enable True
--model_name_or_path /root/siton-glusterfs-eaxtsxdfs/hzt/model/Yi-VL-6B
--data_path /root/siton-glusterfs-eaxtsxdfs/hzt/data/LLaVa_data/filter_cap_1226.json
--image_folder /root/siton-glusterfs-eaxtsxdfs/xts/data/s_mix/image
--vision_tower /root/siton-glusterfs-eaxtsxdfs/hzt/model/Yi-VL-6B/vit/clip-vit-H-14-laion2B-s32B-b79K-yi-vl-6B-448
--output_dir ./checkpoint/Yi-VL-6B
--mm_vision_select_layer -2
--mm_use_im_start_end False
--mm_use_im_patch_token False
--bf16 True
--num_train_epochs 10
--per_device_train_batch_size 4
--per_device_eval_batch_size 4
--gradient_accumulation_steps 8
--evaluation_strategy "no"
--save_strategy "steps"
--save_steps 200
--save_total_limit 3
--learning_rate 2e-5
--weight_decay 0.
--warmup_ratio 0.03
--lr_scheduler_type "cosine"
--logging_steps 1
--tf32 True
--model_max_length 2048
--gradient_checkpointing True
--lazy_preprocess True
--dataloader_num_workers 4
--report_to wandb

我想到了另一种可能性。训练代码是从 LLaVA 修改而来的。如果您已在本地安装了 llava，则可以将其卸载并重试。

I did use llava's virtual environment to run the code, and after I uninstalled it and installed Yi's installer environment, the following error was reported:
Traceback (most recent call last): File "/root/siton-glusterfs-eaxtsxdfs/hzt/projects/Yi/VL/llava/train/train_mem.py", line 6, in from llava.train import llama_flash_attn_monkey_patch ModuleNotFoundError: No module named 'llava'
Do you have to use the llava environment?

Could you please run the command export PYTHONPATH=$PWD:$PYTHONPATH under the VL folder and then try again? Thank you.

Can u also share pretraining script? Which tuning projector and vision encoder with stage 1 and stage 2?
This not same as llava.

Hello! 😊
Now Swift is enhancing its multimodal capabilities through fine-tuning. It has already supported custom datasets and full parameter fine-tuning. For best practices, you can refer to this link: https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/yi-vl最佳实践.md#微调
If interested, you are welcome to use it ～

Looking forward to the official fine-tuning script provided!

令人忧伤的故事，没有过来查看issue的进展

@Jintao-Huang Hi, How can I fine-tune Yi-VL on my dataset? any docs link?

@Jintao-Huang Hi, How can I fine-tune Yi-VL on my dataset? any docs link?

ms-swift offers fine-tuning for custom datasets on YI-VL, including LoRA and full-parameter options, following best practices, haha~ 😊
https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/yi-vl最佳实践.md#微调

@Jintao-Huang is there any notebook I can use to do that? also, is yi-vl-6b-chat better than neva?

@Jintao-Huang How can I fine-tune the model with my custom dataset which is a JSON file? I saw the docs is using coco-mini-en-2

Here ~
https://github.com/modelscope/swift/blob/main/docs/source/LLM/自定义与拓展.md#-推荐命令行参数的形式
    --custom_train_dataset_path xxx.jsonl \
    --custom_val_dataset_path yyy.jsonl \

[{"query": "55555", "response": "66666", "images": ["image_path"]},
{"query": "eeeee", "response": "fffff", "history": [], "images": ["image_path"]},
{"query": "EEEEE", "response": "FFFFF", "history": [["AAAAA", "BBBBB"], ["CCCCC", "DDDDD"]], "images": ["image_path", "image_path2", "image_path3"]}]

@Jintao-Huang How can I fine-tune the model with my custom dataset which is a JSON file? I saw the docs is using coco-mini-en-2

Here ~
https://github.com/modelscope/swift/blob/main/docs/source/LLM/自定义与拓展.md#-推荐命令行参数的形式
    --custom_train_dataset_path xxx.jsonl \
    --custom_val_dataset_path yyy.jsonl \

[{"query": "55555", "response": "66666", "images": ["image_path"]},
{"query": "eeeee", "response": "fffff", "history": [], "images": ["image_path"]},
{"query": "EEEEE", "response": "FFFFF", "history": [["AAAAA", "BBBBB"], ["CCCCC", "DDDDD"]], "images": ["image_path", "image_path2", "image_path3"]}]

@Jintao-Huang How can I fine-tune the model with my custom dataset which is a JSON file? I saw the docs is using coco-mini-en-2

I tried this but was getting errors, Do you have any notebook I can use? are you on 01-ai discord server, I'd love to chat!


Initial route as the first page in Flutter web before any other page

Describe the bug
I want to have my initialRoute as the first page whenever a user tried to access another page. As for now, I have 2 pages MainHomePage() and TransactionDetailPage().
When I try to access TransactionDetailPage directly by typing http://localhost:64289/transaction/1 in my web browser URL, it doesn't push my MainHomePage screen first (It doesn't have a back button on the AppBar of TransactionDetailPage).
What I want to achieve is whenever a user tried to access any of my pages (directly by URL), I want the initialRoute page as the first page so there's always a back button to pop the current screen to my home page.
main.dart
    return GetMaterialApp(
      title: 'Flutter test',
      debugShowCheckedModeBanner: false,
      initialRoute: '/',
      getPages: [
        GetPage(
           name: '/',
           page: () => MainHomePage(),
        ),
        GetPage(
           name: '/transaction/:id',
           page: () => TransactionDetailPage(),
        ),
      ],
    );
  }

Flutter Version:
Flutter 2.2.1
Getx Version:
get: ^4.3.6

Open a feature request (not issue) with its correct form, and we can see if this will be possible in the future.


⚖ Register Validator: HoodRun

Network Choice
dentrite-1
Who are you?
HoodRun provides a suite of services, including our explorer, snapshot, Auto Compound, and others. We serve as validators for 14 mainnet projects such as Dymension, Casper, Astar, and Axelar, and actively participate in 15 testnet projects, including Babylon, Aleo and Side network.
Delegator address
axone17vg7sez5z3k7wf7jufjne79n0y0uqp5ulr8zcd
gentx
{"body":{"messages":[{"@type":"/cosmos.staking.v1beta1.MsgCreateValidator","description":{"moniker":"HoodRun","identity":"D7F99CBB63FFFD9E","website":"https://hoodrun.io","security_contact":"contact@hoodrun.io","details":"HoodRun"},"commission":{"rate":"0.050000000000000000","max_rate":"0.200000000000000000","max_change_rate":"0.010000000000000000"},"min_self_delegation":"1","delegator_address":"","validator_address":"axonevaloper17vg7sez5z3k7wf7jufjne79n0y0uqp5u0ktsz0","pubkey":{"@type":"/cosmos.crypto.ed25519.PubKey","key":"av1kTVR7vtpsjeBwodLHTBb/l21ITejwxQJ+292IuUE="},"value":{"denom":"uaxone","amount":"1000000000000"}}],"memo":"f3f4f5d7cdca59a43cc1499baac289baa9ed06bf@<IP_ADDRESS>:26656","timeout_height":"0","extension_options":[],"non_critical_extension_options":[]},"auth_info":{"signer_infos":[{"public_key":{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AuJcoYT1CQJ0k6Czp1BltmFpKh5oLo5gESDX1uQ+sREq"},"mode_info":{"single":{"mode":"SIGN_MODE_DIRECT"}},"sequence":"0"}],"fee":{"amount":[],"gas_limit":"200000","payer":"","granter":""},"tip":null},"signatures":["ho4tUYG78XH00soAvVoODoHz2rW6Z0edYeDibl7fxHxMFScEz/BqNd9dtxQRj9SJ7W88tXm7guUQ5y6bqh2wtQ=="]}

😉 Here is the corresponding PR: https://github.com/axone-protocol/networks/pull/844


agent in survival mode never experiences hunger decrease

have set mode to survival using:
<AgentSection mode="Survival">
Using malmo version: Malmo-0.34.0-Linux-Ubuntu-16.04-64bit_withBoost_Python2.7.zip
the agent never decrease from 0 hunger (full food gauge)
I have to say, this seems like i must be doing something wrong rather than a bug... but i have gone through all the documentation and can't find anything I've missed that could solve this.
I've sped up time and had the agent continuously jump and run at full speed...

Nevermind, after a huge amount of day/night cycles with sped up time, running and jumping... the hunger meter finally decreased. It would be good to have way to set stats of the agent (health, hunger) manually, not seen this in any documentation and it would be a good feature to have.


[doc] Mention data consistency for categorical features.

Close https://github.com/dmlc/xgboost/issues/9676 .

Added an example script based on https://github.com/dmlc/xgboost/issues/9676#issuecomment-1768045040 , along with tests.

@hcho3 Could you please take another look?


Does xray DB tracer work?

Hi. Thank you for good SDK!!!
I have problem, please help.
Environment
On:   EC2 (Amazon linux2)
Run:  Xray daemon (2.1.3)
DB: Postgresql (docker postgres:9.6)
GO:  go1.12.5 linux/amd64
SDK<EMAIL_ADDRESS>I wrote code as below.
func main() {
        db, err := xray.SQL("postgres", "user=postgres password=postgres dbname=postgres sslmode=disable")
        if err != nil {
                fmt.Printf("%+v", err)
        }
        defer db.Close()

        var res string
        ctx, _ := xray.BeginSegment(context.Background(), "db-controller")
        err = db.QueryRow(ctx, "SELECT name from users;").Scan(&res)
        if err != nil {
                fmt.Printf("failed to error %+v\n", err)
        }
        fmt.Print(res)
}

I can't get metrics on aws console  「X-Ray Service Map」.
And xray-daemon nothing log.

I'm sorry. I fixed this issue. SQL trace is subsegment...
Can I fixed example code? I think that is very old ...

Fix code:
func main() {
db, err := xray.SQL("postgres", "user=postgres password=postgres dbname=postgres sslmode=disable")
if err != nil {
fmt.Printf("%+v", err)
}
defer db.Close()
    var res string
    ctx, seg := xray.BeginSegment(context.Background(), "db-controller")
    err = db.QueryRow(ctx, "SELECT name from users;").Scan(&res)
    if err != nil {
            fmt.Printf("failed to error %+v\n", err)
    }
    fmt.Print(res)
    seg.Close(nil) // Add this code.

}

@masahiro331, thank you for contacting us regarding your question. Tracing SQL operations will be subsegments. Do you mean you want to fix the example listing on our README.

Yes. And this repository https://github.com/aws/aws-app-mesh-examples/blob/master/examples/apps/colorapp/src/colorteller/main.go

@masahiro331 feel free to send out PR about fixing the example in README. Regarding this link, I am not sure what do you mean. That repo is managed by App Mesh team. If you want to contribution to that repo, you can also submit PR or open an issue for that.

Thanks you! @luluzhao
I cloes this issue.


No sound

Hi! I-m trying this lib,  using swift 5, xcode 12.5.1
@IBAction func onPlay(_ sender: Any) {
        do {
            try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
            try AVAudioSession.sharedInstance().setActive(true)
        } catch {
            print("Setting category to AVAudioSessionCategoryPlayback failed.")
        }
        let player = AudioPlayer()
        player.play(url: URL(string: "https://www.kozco.com/tech/piano2-CoolEdit.mp3")!)
    }

this not works. I can't hear anything.
Do I need some permission. or something like that?
Also I have this in my info.plist
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
<key>UIBackgroundModes</key>
<array>
    <string>audio</string>
</array>

I received this in the log
[audio.streaming.generic] audio file stream not opened

This is expected, the AudioPlayer gets deallocated...
You need to keep reference of the AudioPlayer in order to use it.

Thanks. It worked.


Changing timezone

Is it possible to change the time zone of gps time data?

hi, the Time Zone is what you receive from GPS, which is UTC time
do you need a special custom Time mod for using in another GMT time zone?

No no, i need info how to display correct time (for my Loc) on Tracker Display.

will try to find something, but the data from GPS have always been UTC time , this is why only this is showed.
as far as I know there is no GMT correction available with this library, but will see if I can do something about it

May be you refer to the daylight saving time? My tracker show 12:35 while the APRS.FI report the beacon as 13:35..  Now the time here is 13:35.  During summer, the times are aligned.  https://en.wikipedia.org/wiki/Daylight_saving_time_by_country

yes! satellites only send UTC time, they dont care about your position or daylight time savings. This is a local thing and should be handled this way.
looking for a code mod to enable some corrections about it

Maybe the function setenv() for the system time. It can handle time zones and daylight saving time.

i don't find it to clear to implement, besides looks not updated for long time.
should this be handled on a self build library o function?

Now I look, this function belongs to the NTP library. Unfortunately, since the tracker has no internet connection, it is not good. :(


Feature: sealer logout.

Issue Description
Currently, we can do sealer login docker.io -u xxx -p xxx to access private repository.
But there is no logout function.
This is not an urgent feature, but maybe it could be used.
Describe what feature you want
Sealer logout to remove the auth info.

sealer logout docker.io
sealer pull docker.io/[private-repo]/xxxx:xxxx failed.

@jsparter

I'm going to get this done.


[Feature Request] Integrate translations into the release

Checklist
Please make sure you have performed the following steps before opening a new bug ticket, change [ ] to [x] to mark it as done

[x] I have read and tried the steps outlined in the Troubleshooting Guide
[x] I have searched through existing issues.

Description

Right now if you don't want to use English as your language you have to go to https://github.com/hargata/lubelog_translations find your translation (if it exists), download it and upload it in LubeLogger. This works quite fine but once the translations get updated you have to repeat these steps over and over again.
It would be nice if all of the official translations would be integrated directly into the container with every release so you're always up to date and have all of them available at any time.
Platform

[x] Docker Image
[ ] Windows Standalone Executable

Browser Console Errors(F12)

App/Container Console Error

Screenshots(optional)

Thanks for the suggestion, unfortunately this isn't something we'll be pursuing, for the following reasons:

We can't guarantee the translations are up to date with the current release
We can't guarantee that the translations are accurate
Users have different opinions about how certain things should be worded

Explanation:

If we tie the translations into a specific version, we will have to wait for all the contributors to translate any updated/new words before we can release, and this project simply doesn't have a well-coordinated/dedicated group of community contributors for that yet.

On top of that, if there is a typo or grammar mistake that slipped through the cracks, users will have to wait till the next release for the changes to be applied, which can take weeks or months.

Due to regional/cultural differences, users will disagree over how certain phrases should be worded. De-coupling the translation from the release means that the user can download a translation(if it exists) in their own language, modify the wording and then upload the modified version into their instance of LubeLogger.

1 and 2 are primarily logistical issues which can be mitigated if we get a dedicated group of translators/contributors. 3 is pretty much impossible to mitigate, if we roll the translations into the primary repo we will most certainly get a bunch of issues in this repo to fix/update translations, which we can't help with because we(the primary maintainers) are monolingual Americans.
Translations are community driven, hence we believe it's best that it is de-coupled in a separate repository where people are free to contribute and modify.
Regards.

@hargata Thank you for your detailled response. I understand your concerns.
On the other side it seems to be common practice in all of the Open source projects I know to include all of the translstions into the release nevermind if they are complete or perfect. As long as the fallback language is English for missing translations you can still understand everything.
Also, I don't think many people will make a custom translation just for themselves. They might just use what they get but the option to do so doesn't need to be removed.
Maybe you can think about it again.

With Watchtower the LubeLogger docker container is updated automatically on my system. However, for the translations I have to manually watch the translation repository and manually update the language file. You're putting the burden on every single (non-English) administrator. I'd be happy to accept occasional typos and can very well wait for next release. After all, it's the same situation for the English language file, no?

If we tie the translations into a specific version, we will have to wait for all the contributors to translate any updated/new words before we can release, and this project simply doesn't have a well-coordinated/dedicated group of community contributors for that yet.

Normally you'd have a translation phase for each release (except urgent security releases).

Due to regional/cultural differences, users will disagree over how certain phrases should be worded. De-coupling the translation from the release means that the user can download a translation(if it exists) in their own language, modify the wording and then upload the modified version into their instance of LubeLogger.

There are different language codes for different regions, e.g.: you ship en_US but there is also en_GB. The same exists for German: de_DE (Germany), de_AT (Austria) or de_CH (Switzerland). So I do think this is a solved problem.

I've thought about this and decided to reopen this. How about a compromise?
In the next release, you will be able to download translations from within the app itself. It will always download the latest version of the translation.

Great that you reopened this feature request. I think this makes life a lot easier! 👍🏼
Still, I'd vote for including all of the translations by default because I don't really see a benefit in this approach and I would never maintain my own translations - I'd rather contribute to improve them. But it's your decision and I'm thankful that you picked it up again to improve quality of life. 😃

It will always download the latest version of the translation.

Will this be a manual process or does it update automatically?

It will always download the latest version of the translation.

Will this be a manual process or does it update automatically?

Manual, no way to track when a translation is updated.

Great that you reopened this feature request. I think this makes life a lot easier! 👍🏼 Still, I'd vote for including all of the translations by default because I don't really see a benefit in this approach over the other one and I would never maintain my own translations - I'd rather contribute to improve them. But it's your decision and I'm thankful that you picked it up again to improve quality of life. 😃

Well, hence why it's a bit of a compromise, but I have made some additional changes and that should cut down a lot more steps in the process. Just added a "Download All Translations" button so you no longer have to search through the list of available translations.

Basically, in the next release, All you have to do is click the "Download All Translations" button and it will download the latest copy of every translation available. Basically just two steps and that's it.
Not as automated as bundling the translations into the release itself, but honestly I don't have the time and effort to coordinate translators for a translation phase so this will have to do.

thank you :-)

The translation downloader feature is released.


Add support for Vlime and Common Lisp

comon lisp got merged some hours ago

Most of the init files are empty, as they're just "shim" files to enable functionality in other programs
In this case, enabling the common-lisp module will enable

tree-sitter highlighting support for common lisp
Conjure support for common lisp: https://github.com/Olical/conjure/wiki/Quick-start:-Common-Lisp-(Swank)

Cl-lsp isn't support by nvim-lspconfig, though I may send in a PR for lspconfig/mason. Additional improvements will come once https://github.com/Olical/conjure/pull/348 is merged, eventually using slynk instead of slime.

OOOH, THANK YOU!

(I am open to adding additional plugins if they enhance the cl experience though, feel free to send in any recommendations! I'm thinking of adding vim-sexp)

Can we, instead of using conjure, use vlime as most common lisp users that use neovim use vlime and to some it feels natural and having an option feels good
commands like "\ss"
dont work in when you install vlime

vlime support has been added for common lisp, give it a try!

vlime commands dont work
like '\cc'


Add sneaky detections

How many USBs does this computer know. Go example - https://github.com/EvilBytecode/GoDefender/blob/main/AntiVirtualization/USBCheck/USBCheck.go
> 20 files in file activity. Go example -  https://github.com/EvilBytecode/GoDefender/blob/main/AntiVirtualization/RecentFileActivity/RecentFileActivity.go

thanks for the suggestions!

i don't think this is a useful detection if i'm being honest. I can definitely see something like that receiving a false positive for sure.

kinda the same, that's something that someone can definitely spoof very easily. I already have a lot of spoofable techniques that are implemented, but not those where only a few clicks with minimal effort would be enough to bypass it.

I appreciate for the suggestions but I can't really find any practical use for them for a library that has 0 tolerance for false positives and tries its best to not use extremely easy-to-bypass techniques. Thank you though. I'll definitely check out all the other VM detections in that repository for sure.


fix(exam-timetable): incorrect closing date

Reworked imp and tests to match original A/C
Added handling of all dates being invalid

:tada: This PR is included in version 2.6.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:

:tada: This PR is included in version 2.9.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


first paragraph has sentence repeated.

[Enter feedback here]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: fba2155b-98b3-64e0-29f5-79cf2b1a90f1
Version Independent ID: d2b30089-7cf3-563a-eb38-d112793beb9b
Content: Microsoft Power Platform Build Tools for Azure DevOps - Power Platform
Content Source: power-platform/alm/devops-build-tools.md
Service: powerapps
GitHub Login: @phecke
Microsoft Alias: pehecke

@DeanHolmes - This appears to be resolved.
Closing issue.


[QBO Export] Manual exports

Details

This PR:

Add new exportToIntegration and markAsManuallyExported actions
Add a new Export menu item to the report details page
Create a new ReportDetailsExportPage with "Export" and "Mark as exported" options
Update ReportPreview actions to show export options
Update the MoneyReportHeader to show export options

Fixed Issues

$ https://github.com/Expensify/App/issues/44022
PROPOSAL: N/A
Tests

Those tests should be performed on the staging environment. In your .env file add ENVIRONMENT=staging variable.
Do the tests below for both QBO and Xero integrations.
Prerequisites

Collect workspace with an admin and member
Setup QBO integration connection

Steps 1

Open the report details (click the carret in the header) on the failed report
Verify there’s an “Export” Item
Select it
Verify there’s a “Mark as manually entered” option and select it
Verify
A system message “marked this report as manually exported to QuickBooks Online” is added to the report
The red dot on the report in the LHN is removed
Click on the "Export" item and "Mark as manually entered" again, verify the "reports have already been exported" modal is displayed.
Steps 2
Turn off auto sync in Workspace -> Accountting -> Advanced
Create a new expense in the policy
Pay expense elsewhere
A Export button should appear in the report preview and report header.
Click on the "Export" button in the report preview
Verify everything works.

Offline tests

Offline pattern B is going to be implemented in a follow-up PR here.
QA Steps

[ ] Verify that no errors appear in the JS console
[ ] Do the tests from the Tests section above

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/Expensify/App/assets/104823336/3a26e9b1-2f67-4610-901d-c48132c71942

Android: mWeb Chrome

https://github.com/Expensify/App/assets/104823336/10557bf8-6ad6-4691-afcb-651df4ffd342

iOS: Native

https://github.com/Expensify/App/assets/104823336/c79d7520-0fbd-4465-bc74-76c6ed54fc89

iOS: mWeb Safari

https://github.com/Expensify/App/assets/104823336/9a7a719a-50eb-4ae7-9c1b-cd63ba3b0674

MacOS: Chrome / Safari

https://github.com/Expensify/App/assets/104823336/94351410-3361-46e2-b707-0f85ee6cf9ed
https://github.com/Expensify/App/assets/104823336/111a7f90-f464-4447-94aa-206da833ad87

MacOS: Desktop

https://github.com/Expensify/App/assets/104823336/3ee2eefc-4540-4087-a086-cf7c9cde4e0f

Hey @Expensify/design, could you please share the "Not ready to export" illustration with me? Thank you!

@kosmydel it looks the same with the image we used in SageIntacct feature. In that case you can take in from here:
https://github.com/Expensify/App/pull/43661/files#diff-e81b59ee3960feb94e1b55384682e24b2fcece6d7fd90ad2e6a98fa5f31de532

Oops my bad, it looks different 🤦

@kosmydel Here's that illustration!
LaptopwithSecondScreenandHourglass.svg.zip

I’m opening this for an initial round of review.
There are a few things to know:

[ ] I wasn’t able to test QBO export (only Xero) due to [this bug](https://swmansion.slack.com/archives/C049HHMV9SM/p1719561719599289).
[ ] wrong icons in the dropdown menu on native,
[x] in the ReportDetailsPage on recordings, there is a wrong translation - it is already fixed,
[ ] temporarily we are using 'reportIDList[]' param - it is waiting for a backend update,
[ ] missing Spanish translations - waiting for those.

cc @Expensify/design for verification

Same here, I also can't connect to QBO :/

Let's me know when it's ready for another review @kosmydel

Sure, I'm still waiting for backend changes and translations. I will ask for update :D

I've updated the Spanish translations with the correct one. We still need to wait for backend changes. Then I will test it with QBO (hopefully it will work now).

I tried to export to Xero and I got this issue, is the something we're waiting for BE changes?
https://github.com/Expensify/App/assets/16502320/52ce5eb0-3bda-4f7d-9fdf-7b09021335f0

I tried to export to Xero and I got this issue, is that something we're waiting for BE changes?

Hmm, it worked for me on a new account. But after a while, I also got a similar error. Going to ask about it on Slack.

@hungvu193 I'm reposting it here on top of Slack, so it could help other people.
This error throws when we find different  config.credentials.companyID for the report IDs list given in the request.
We iterate over each report's policy connection data for the given integration name to export, to construct a list of company IDs before counting the unique count of company IDs. If it's different than 1, we throw this error.

Thanks for your explanation 🙏

Can you resolve the conflicts and linting?

@kosmydel Can you resolve the conflicts and linting? ty

I've resolved conflicts & lint. If you want to test it, you need to change the reportIDList param like this.

Export ConfirmModal doesn't have backdrop.
https://github.com/Expensify/App/assets/16502320/362fc8f6-d229-4d7b-baa2-f1193c084ed0

@hungvu193 I've fixed the modal issue and applied requested changes

Thanks. This LGTM 🎉 . Do we still need to wait for BE changes here? @kosmydel

Thanks. This LGTM 🎉 . Do we still need to wait for BE changes here? @kosmydel

I think so. The backend gives an empty response right now on my account, for both exports. Does it work for you?

Thanks. This LGTM 🎉 . Do we still need to wait for BE changes here? @kosmydel

I think so. The backend gives an empty response right now on my account, for both exports. Does it work for you?

Yeah, same here as far as I remember, I tested it this morning.

@kosmydel lint is failing.

@kosmydel lint is failing.

I've resolved conflicts and fixed lint.

Do we have any BE update? 👀  cc @lakchote

Do we have any BE update? 👀 cc @lakchote

What BE update specifically? It's an old logic that's been there for a long time, if you'd like to modify it there's need to be a discussion around it.
cc @francoisl since you've authored this code

Yes it's because the Auth command QueueReportExport takes a companyID as one of its parameters. The ideal fix would be to determine the companyID for each report directly in the Auth command inside this loop, based on the reportID + policyID + connectionName.
I don't think you guys need to block on this for now though, manually exporting reports from different workspaces that are connected to different third-party accounts is an edge case. I see only 104 occurrences of the error All reports must be connected to the same connection in the logs in the past 2 weeks, and just 27 of them are not from a swmansion test account.

Thank you. I think this PR is ready to go. I'll complete the checklist on Monday.

I have a question, so when autoSync is enable, we will hide the Export to Xero header button. However, user still can go to ReportExportDetailPage to export. Do you think if we hide the Export to Xero button in the header, we should also prevent user from using it in ReportExportDetailPage? Please checkout my evidence video below.
cc @Expensify/design
https://github.com/user-attachments/assets/65517005-df21-438d-b6b0-1b98b1fc88dd

Hmm yeah, I think it makes sense to be consistent here.

@shawnborton So if autoSync is enabled, we should hide all export buttons, right?

I guess what I'm thinking is: if auto sync is enabled and we hide the button in one place, I would think we'd hide it in other places too.
But let's let others weigh in as well from @Expensify/design, and @trjExpensify and @yuwenmemon

Reviewer Checklist

[x] I have verified the author checklist is complete (all boxes are checked off).
[x] I verified the correct issue is linked in the ### Fixed Issues section above
[x] I verified testing steps are clear and they cover the changes made in this PR

[x] I verified the steps for local testing are in the Tests section
[x] I verified the steps for Staging and/or Production testing are in the QA steps section
[x] I verified the steps cover any possible failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)

[x] I checked that screenshots or videos are included for tests on all platforms
[x] I included screenshots or videos for tests on all platforms
[x] I verified tests pass on all platforms & I tested again on:

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

[x] If there are any errors in the console that are unrelated to this PR, I either fixed them (preferred) or linked to where I reported them in Slack
[x] I verified proper code patterns were followed (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick).
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method
[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I verified that this PR follows the guidelines as stated in the Review Guidelines
[x] I verified other components that can be impacted by these changes have been tested, and I retested again (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar have been tested & I retested again)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] If a new component is created I verified that:

[x] A similar component doesn't exist in the codebase
[x] All props are defined accurately and each prop has a /** comment above it */
[x] The file is named correctly
[x] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[x] The only data being stored in the state is data necessary for rendering and nothing else
[x] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[x] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[x] All JSX used for rendering exists in the render method
[x] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG)

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[x] I have checked off every checkbox in the PR reviewer checklist, including those that don't apply to this PR.

Screenshots/Videos

Android: Native

Can't record due to our current keyboard issue

Android: mWeb Chrome

Can't record due to our current keyboard issue

iOS: Native

https://github.com/user-attachments/assets/1f68b56f-04e9-4539-b865-85518ad34e3c

iOS: mWeb Safari

https://github.com/user-attachments/assets/7f285db5-bf0f-42be-9c82-9eb33605eaaf

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/d68a4ce5-9655-48e8-8b11-4eaccdc03be8

MacOS: Desktop

https://github.com/user-attachments/assets/075c109c-d871-4530-804e-bcbc003d8ece

I guess what I'm thinking is: if auto sync is enabled and we hide the button in one place, I would think we'd hide it in other places too.
But let's let others weigh in as well from @Expensify/design, and @trjExpensify and @yuwenmemon

Commented in the thread on the Q above.

I've addressed the review, ready for re-review.

That's weird, but agree it shouldn't be an issue with this PR. Merging!

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/arosiclair in version: 9.0.8-1 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@kosmydel @hungvu193 @arosiclair how to make a failed report as in the step 1

Open the report details (click the carret in the header) on the failed report

@kosmydel @hungvu193 @arosiclair how to make a failed report as in the step 1

Open the report details (click the carret in the header) on the failed report

You neeed to export it first

@kosmydel @hungvu193 @arosiclair how to make a failed report as in the step 1

@kavimuru here are steps to force an export to QBO to fail:
Prerequisites
Add a chart of account (category) to QBO that you can delete later
Steps

Create a report with an expense
Categorize the expense using the new QBO category
Submit it
Log in as the workspace admin and approve the report
Log into QBO and deactivate the chart of account for the category (Menu > Transactions > Chart of accounts > {account} menu > Make inactive)
Export the report to QBO (3-dot menu > Export > Quickbooks Online)
Verify

a system message “failed to auto-export this report due to an error” is added to the report
a red dot is added next to the report in the LHN

🚀 Cherry-picked to staging by https://github.com/Beamanator in version: 9.0.8-3 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

@Expensify/applauseleads please QA this PR and check it off on the deploy checklist if it passes.

🚀 Deployed to production by https://github.com/mountiny in version: 9.0.8-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/mountiny in version: 9.0.9-5 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Java bindings, trouble loading native library

I'm running into a strange issue where by sigar isn't locating or loading the native library. Not entirely sure why but I figured I'd throw this out there to see if anyone has any options i can troubleshoot with.
SigarLoader loader = new SigarLoader(Sigar.class);
System.out.println(loader.getLibraryName());

The output is `libsigar-amd64-linux.so'. This file is present and available on the class path so I'm not entirely sure what the issue is. The file is readable by the current user.
Shortly aftewards, it i get an UnsatifiedLinkError when loading OperatingSystem.getInstance @ SysInfo.gather(Native method)
Any help is appreciated

How did you included Sigar ? If, by Maven, which dependency ?

@AlexYaruki basically, i'm including the sigar-dist-bin artifact, then unzipping and copying the .dll/so files into the working directory of the java process. The pom is here
https://github.com/mil-oss/fgsms/blob/master/fgsms-agents/fgsms.OSAgent/pom.xml
If it helps, this is on a custom flavor of Linux so it's possible that the precompiled .so is somehow incompatible with the os/kernel version. In that case, I would expect a slightly different error message than UnsatifiedLinkError, but i have little experience with JNI problems. I'll try recompiling native lib and go from there.

Do you change java.library.path when running the application ? Libraries for jni are searched in directories in this property.

Also, try debugging information from dynamic linker (LD_DEBUG, http://man7.org/linux/man-pages/man8/ld.so.8.html) Hope this helps

@AlexYaruki ha the good old java -Djava.library.path=. myjar.jar fixed it. Should have tried it sooner. Thanks for the pointer!


Replace ActivityHelper with by viewModels()

Add a dependency on fragment-ktx and, by extension, activity-ktx and its by viewModels() Kotlin property extension.

How can we translate something like:
val viewModel: ViewModel by lazy { ViewModelProviders.of(this, viewModelFactory).get(getViewModelClass()) }
where viewModelFactory extends AbstractSavedStateViewModelFactory and initiates all the SavedStateHandle logic into by viewModels()? Do we win something with it?
Thanks.


[Recipe Request]: GMX Mail

Preflight Checklist

[X] I have read the Contributing Guidelines for this project.
[X] I agree to follow the Code of Conduct that this project adheres to.
[X] I have searched the issue tracker for a feature request that matches the one I want to file, without success.

Name of the service
GMX Mail
URL of the service
https://gmx.com
GitHub URL to a recipe that has already been created by someone else or you
No response
Features you want implemented
I would like to have a GMX Mail as service on ferdium

Will try to create a PR https://github.com/gregg00/Ferdium-GMX-Mail

@gregg00 - please raise a PR with the code in your GH repo. Once the validation checks complete, we can approve and merge it in.

Will do. Thanks


What about COLT in your comparison table?

We think your comparison table could use another column :wink:

Thank you for reporting this issue and appreciate your patience. We've  notified the core team for an update on this issue. We're looking for a response within the next 30 days or the issue may be closed.


Fix miner logic

The fact that the whole method was moved + the lack of PR description makes it quite hard to figure out what the logic is that required fixing ^^

Don't worry about it 😛


Support IPv6 in the client

When the socket is not bound to the correct address family, we get:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 22, kind: InvalidInput, message: "Invalid argument" }', src/bin/roughenough-client.rs:426:39

Thank you very much for the contribution!


Bicep Landing Zone  - .env

What happened? Provide a clear and concise description of the bug, including deployment details.
Have downloaded the Landing Zone Accelerator (Bicep) all good. However the Pipelines all refer to an .env file that I cannot see anywhere, where is this and what is meant to be in there variable wise ? - sorry newbie.
Please provide the correlation id associated with your error or bug.
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
What was the expected outcome?
No response
Relevant log output
No response
Check previous GitHub issues

[X] I have searched the issues for this item and found no duplicate

Code of Conduct

[X] I agree to follow this project's Code of Conduct

Hi @jzryk8, no worries at all! Not sure if you've seen this documentation, but the process for provisioning your file structure if using the Accelerator is outlined here:.
Essentially, there is an ALZ-PowerShell-Module and associated cmdlet that you'll use to provision the file structure necessary to run the pipelines/workflows. Your .env file will be provisioned automatically within the root directory, and you shouldn't have to download any files manually from the GitHub repository page.
Will close for now, but if you have any other questions feel free to reopen.

The documentation is unclear on how to create these initial subscriptions that the Accelerator PowerShell script asks for. Others seem to be confused as well: https://www.reddit.com/r/AZURE/comments/16jemms/azure_landing_zone_bicep_accelerator_explain/
If the answer is to manually create the subscriptions, that seems to defeat much of the purpose of the accelerator. In other words, I would like to be able to use the accelerator with an empty root management group and a single global admin who has the proper permissions.

Hey @kardiojack, agreed, we could add a bit more clarity around subscription creation. I've created an issue based upon your comment for tracking the documentation changes needed.
In the meantime, take a look at the Bicep Subscription Vending documentation and associated Bicep module as it should hopefully provide some additional context.

Thanks for your help! After creating the subscriptions manually, the accelerator seemed to work great--definitely a useful and needed tool your team is working on.


Part list - Vertical rail

In the part list vertical rail (even though the length is now updated to 500mm) is showing as 20x40, which could be incorrect.

Thanks @disq


ROX-11096 insert interfaces for testability

Description
In order to test the NetworkConnectionInfoService, we need to mock its dependencies:

the connection scrapper
the connection tracker
the "upstream" channel with Sensor

This first PR is intended to be perfectly isofunctional, and insert those interfaces seamlessly in the call path.
Checklist

[ ] Investigated and inspected CI test results
[ ] Updated documentation accordingly

Automated testing

[ ] Added unit tests
[ ] Added integration tests
[ ] Added regression tests

If any of these don't apply, please comment below.
Testing Performed

Doing an attempt to see whether building our own gtest works for ubi-image.
If not, or if we don't want that, we will have to update the MOCK tests to use the deprecated macros.

@erthalion , you were looking into this PR. Did you saw something that requires some more work before I merge it ?


Merge this repo with telestion-rocketsound

I think it is a good idea to have one repository for the projects containing all the project code. So we don't need to maintain two repositories for the same project and have a single starting point. Since both code bases are not inferring with each other we could easily copy the files.

While I'm, generally speaking, open to that idea, I believe there are a few areas in which development workflows, as far as I know, are very different, and thus, difficult to combine (or could compromise practicability to an extend where the benefits no longer outweigh the costs):

The frontend repos, without exception, have a highly automated release system that has to be "releasable" at any time and then, automatically, by parsing the commit messages, generates CHANGELOG, release notes, etc., which are very much invaluable tools for development. At least, for now, I haven't seen that kind of workflow in the backend repos, making it a potential "friction point" between the workflows
Putting everything in one repo would create a tight coupling between the two areas. While this, in theory, sounds good, it also means every tiny "patch" would have to be a coordinated release effort: Right now, I can just quickly fix something, press the "release" button, and everything else gets done automatically (with the exception for building non-Linux artifacts in CI, which will follow soon). All in all, I can, as it is now, very quickly fix a bug without a long round-trip of knowing if the backend aspect is currently "release-ready."
As the tech stacks are severely different, integration isn't as simple as it might seem. While it's probably not impossible, frontend repos tend to work best with a lot of tooling that exists if specific configuration files are at the root of the repository (and not, e.g., in /client), and so on. Like probably most other "realms", React-based applications (or JS-based apps in general) have many best practices and excellent tooling that's easy to configure when following those best practices. I'm not saying it's impossible to configure it in another way. Still, it definitely makes things a lot more complicated, which, considering we're having a lot of "Junior-grade" developers just learning to use those tools, I'm reluctant to add that additional layer of complexity (and "teaching" non-standard things, as it is right now, it's easy to find answers on Stack Overflow, etc.)

Last but not least, regarding "don't need to maintain two repositories,": Although it seems counter-intuitive, at first, in my experience, the complexity of maintaining vastly different codebases (which we have here) in a single repository adds far more complexity than the fact that it's just one repo reduces. I've never seen a project that has tried it and didn't roll back later.
This, of course, leaves the benefit of a single "starting point". I cannot and don't want to argue with that. But, all things considered, in my opinion, the benefits it provides don't outweigh the cost introduced by the points above.
It may be that I see problems where there are none, and I'm very much open to having further discussions surrounding the idea, but for now, I have to say that I don't think its benefits outweigh the costs, leaving me to oppose the idea, as of right now...

Good News!
We finally updated the template repo https://github.com/wuespace/telestion-project-template with support for both the Telestion App and the Client in one repo!
But before we can merge this repository with https://github.com/TelestionTeam/telestion-rocketsound, we need to resolve this issue https://github.com/wuespace/telestion-client/issues/518.

Done in https://github.com/wuespace/telestion-project-rocketsound/commit/a7405fcfee98424d81196435ab06b3c63d7e4cb7


Python implementation (in progress)

Ruff seems like a no-brainer
for static typing, seems like MyPy --strict vs pylyzer

the other static checkers seem to have affordances for transitioning untyped code, but we are greenfield so I don't think they make much sense
reddit advice is MyPy --strict, I'll go with that

We ended up dropping MyPy for pyright because pyright seems to be the only one that supports PEP 695.
The python implementation is in progress over at https://github.com/diffplug/selfie-python-wip, it will end up merged into this repo when it is closer to prod ready.

We have archived selfie-python-wip and the last bits of integration work are going to happen in this repo. We are almost done. You can follow the schedule in

https://github.com/diffplug/selfie/issues/298


Point to the correct Strongbox project

Hi,
I am the owner of strongbox/strongbox to which you are poiting incorrectly. I have changed your URL to point to the right one for you.

The link is pointing to the correct project. The article is talking about KeePass and it links to the KeePass client that happens to be named strongbox.

Sorry, I closed this prematurely! I did not get enough sleep.

Thanks for accepting and merging this, as it would have otherwise brought a lot of noise to our project.


Versions 1.1.0 and 1.1.1 crash when run on Pi 400 model

Hi, running WOR with windows insider version 21322 and UEFI v1.24 on a Raspberry Pi 400
Version 1.0.5 works OK but versions 1.1.0 and 1.1.1 both show icon in sys tray then when mouse over the icon disappears
The application event log for version 1.1.1 shows -
Log Name:      Application
Source:        Application Error
Date:          27/02/2021 16:17:34
Event ID:      1000
Task Category: (100)
Level:         Error
Keywords:      Classic
User:          N/A
Computer:      RaspberryPi400
Description:
Faulting application name: PiMon.exe, version: <IP_ADDRESS>, time stamp: 0x5f66425c
Faulting module name: PiMon.exe, version: <IP_ADDRESS>, time stamp: 0x5f66425c
Exception code: 0xc000041d
Fault offset: 0x0000000000001b64
Faulting process ID: 0x167c
Faulting application start time: 0x01d70d240d022b5f
Faulting application path: C:\Users\Pi\Downloads\PiMon\PiMon.exe
Faulting module path: C:\Users\Pi\Downloads\PiMon\PiMon.exe
Report ID: 69bc913f-df09-4e70-9d7b-2d1cd1ad50ad
Faulting package full name:
Faulting package-relative application ID:
Event Xml:

1000
0
2
100
0
0x80000000000000

327

Application
RaspberryPi400

PiMon.exe
<IP_ADDRESS>
5f66425c
PiMon.exe
<IP_ADDRESS>
5f66425c
c000041d
0000000000001b64
167c
01d70d240d022b5f
C:\Users\Pi\Downloads\PiMon\PiMon.exe
C:\Users\Pi\Downloads\PiMon\PiMon.exe
69bc913f-df09-4e70-9d7b-2d1cd1ad50ad

Can you test hwmon at https://Github.com/driver1998/rpi3win10demos and see if that works? That would help narrowing down the problem.

I don't have an environment to build the hwmon tool and I don't see a binary download for the item.
Just a thought, on having a quick scan of the source I notice that the working version (V1.0.5) appears to handle
unknown board type by returning the string unknown, however the latest 2 versions which crash does not appear
to contain this option.
Could this unhandled situation be the issue ? and might it be as simple as adding the detection of the new board type
for Raspberry Pi 400 ?

I have been able to install VS 2019 and build the hwmon exe
It runs without error and gives all the output expected in a CMD window.

To fix this crash I did the following code changes .....
In data.h I amended table to the following (to add Pi 400)
enum RpiModel {
MODEL_UNKNOWN  = 0,
MODEL_A        = 1,
MODEL_B        = 2,
MODEL_A_PLUS   = 3,
MODEL_B_PLUS   = 4,
MODEL_2B       = 5,
MODEL_CM1      = 6,
MODEL_3B       = 7,
MODEL_ZERO     = 8,
MODEL_CM3      = 9,
MODEL_ZERO_W   = 10,
MODEL_3B_PLUS  = 11,
MODEL_3A_PLUS  = 12,
MODEL_CM3_PLUS = 13,
MODEL_4B       = 14,
MODEL_PI400    = 15,
in data.c I changed table to (also to add Pi 400)
static const wchar_t* RpiModelName[] = {
[MODEL_A]        = L"Raspberry Pi Model A",
[MODEL_B]        = L"Raspberry Pi Model B",
[MODEL_A_PLUS]   = L"Raspberry Pi Model A+",
[MODEL_B_PLUS]   = L"Raspberry Pi Model B+",
[MODEL_2B]       = L"Raspberry Pi 2 Model B",
[MODEL_CM1]      = L"Raspberry Pi Compute Module 1",
[MODEL_3B]       = L"Raspberry Pi 3 Model B",
[MODEL_ZERO]     = L"Raspberry Pi Zero",
[MODEL_CM3]      = L"Raspberry Pi Compute Module 3",
[MODEL_ZERO_W]   = L"Raspberry Pi Zero W",
[MODEL_3B_PLUS]  = L"Raspberry Pi 3 Model B+",
[MODEL_3A_PLUS]  = L"Raspberry Pi 3 Model A+",
[MODEL_CM3_PLUS] = L"Raspberry Pi Compute Module 3+",
[MODEL_4B]       = L"Raspberry Pi 4 Model B",
[MODEL_PI400]    = L"Raspberry Pi 400"
};
and also changed the board lookup function to identify Pi 400 model
enum RpiModel GetPiModel(ULONG BoardRevision)
{
// www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md
ULONG modelId = (BoardRevision >> 4) & 0xFF;
switch (modelId) {
case 0x00:
    return MODEL_A;
case 0x01:
    return MODEL_B;
case 0x02:
    return MODEL_A_PLUS;
case 0x03:
    return MODEL_B_PLUS;
case 0x04:
    return MODEL_2B;
case 0x06:
    return MODEL_CM1;
case 0x08:
    return MODEL_3B;
case 0x09:
    return MODEL_ZERO;
case 0x0A:
    return MODEL_CM3;
case 0x0C:
    return MODEL_ZERO_W;
case 0x0D:
    return MODEL_3B_PLUS;
case 0x0E:
    return MODEL_3A_PLUS;
case 0x10:
    return MODEL_CM3_PLUS;
case 0x11:
    return MODEL_4B;
case 0x13:
    return MODEL_PI400;
default:
    return MODEL_UNKNOWN;
}

}
Once the PI 400 model is identified the program does not crash as before.
maybe these changes ca be integrated into a new version 1.2 and made available once tested more widely.

Looking at why an unknown model appears to crash the code I think that there is a need for an entry
in the data.c table to handle this condition e.g.
[MODEL_UNKNOWN] = L"Unknown Model"


Transforms on functions that have destructured arguments lose parameter names

Suggestion

🔍 Search Terms

tuple, labels, parameters, destructure
✅ Viability Checklist

My suggestion meets these guidelines:

[x ] This wouldn't be a breaking change in existing TypeScript/JavaScript code
[ x] This wouldn't change the runtime behavior of existing JavaScript code
[ x] This could be implemented without emitting different JS based on the types of the expressions
[x ] This isn't a runtime feature (e.g. library functionality, non-ECMAScript syntax with JavaScript output, new syntax sugar for JS, etc.)
[ x] This feature would agree with the rest of TypeScript's Design Goals.

⭐ Suggestion
When using tuple types to capture function arguments the argument names are lost if any of the arguments are destructured, this leads to a less than ideal situation when trying to determine argument order of primitive types.
📃 Motivating Example

// trivial exampled
const transform = <T, U extends unknown[]>(
   factory: (...args: U) => T
) : ((...args: U) => T) => factory

const transformed = transform(({ test } : { test: string }, b: string) : string => `${test}:`${b}`)

/*
The intellisense for the transformed function shows args_0, args_1, the first
argument clearly has no name, however the second does but is still not shown. If
all arguments are named then everything works as expected.  I realize this
is a fairly trivial example, however, it would significantly improve usage of
transformed functions, particularly if those function have multiple primitive
arguments whose order could be confused without names.

Additionally I understand the potential for argument name collision, e.g.
if argument two was for some reason called args_0, however, I believe this
case is unlikely and also could be fixed with a numeric suffix which would
still retain the intent.
*/

💻 Use Cases

Tuple labels are a best-effort preservation; if we get a fix that isn't super-complex, we'll consider it.


Update data-factory-use-custom-activities.md

Updated the 5th point under the section 'Procedure'. The CSharp code was outside the code box.

This seems like a small (but important) contribution, so no Contribution License Agreement is required at this point. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

The change fixes the formatting of entire text under the 'Procedure' section starting from point #5.

Commit - b138f86 is the final commit, and it includes changes from commit - efcc6ef.

@abhirc : Thanks for your contribution to the Azure documentation! The author, @spelluru, has been notified to review your proposed change.

@avhirc - Thanks for fixing the issue in the article.
#sign-off

You are welcome, @spelluru. I am happy I could be of some assistance.

Will delete the branch, after a few days.


Enable Unframedrequest for curl health checks

Issue #, if available:
Description of changes:
Enable UnframedRequests for OtelTraceSource - This will enable curl health checks if we use LB
byadav$ ./gradlew :data-prepper-plugins:otel-trace-source:build
byadav$ ./gradlew build
=======================================
Elasticsearch Build Hamster says Hello!
  Gradle Version        : 6.5
  OS Info               : Mac OS X 10.15.7 (x86_64)
  JDK Version           : 14 (Oracle JDK)
  Random Testing Seed   : BC66D52477A14198
  In FIPS 140 mode      : false
=======================================

> Task :data-prepper-core:test
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

> Task :data-prepper-plugins:elasticsearch:checkstyleMain
Checkstyle violations by severity: [error:3]

> Task :data-prepper-plugins:elasticsearch:checkstyleTest
Checkstyle files with violations: 3
Checkstyle violations by severity: [error:8]

> Task :data-prepper-plugins:elasticsearch:forbiddenApisMain
> Task :data-prepper-plugins:elasticsearch:forbiddenApisTest
> Task :data-prepper-plugins:lmdb-prepper-state:compileTestJava
Note: /Users/byadav/workplace/DataPrepper/data-prepper/data-prepper-plugins/lmdb-prepper-state/src/test/java/com/amazon/dataprepper/plugins/prepper/state/LmdbPrepperStateTest.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :data-prepper-plugins:lmdb-prepper-state:test

> Task :data-prepper-plugins:otel-trace-raw-prepper:compileTestJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :data-prepper-plugins:otel-trace-raw-prepper:test
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

> Task :data-prepper-plugins:peer-forwarder:compileTestJava
Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

> Task :data-prepper-plugins:peer-forwarder:test
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

> Task :data-prepper-plugins:service-map-stateful:test
Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

Deprecated Gradle features were used in this build, making it incompatible with Gradle 7.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/6.5/userguide/command_line_interface.html#sec:command_line_warnings

BUILD SUCCESSFUL in 2m 57s
86 actionable tasks: 54 executed, 32 up-to-date

Developer's Certificate of Origin 1.1
By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I
have the right to submit it under the open source license
indicated in the file; or
(b) The contribution is based upon previous work that, to the best
of my knowledge, is covered under an appropriate open source
license and I have the right under that license to submit that
work with modifications, whether created in whole or in part
by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated
in the file; or
(c) The contribution was provided directly to me by some other
person who certified (a), (b) or (c) and I have not modified
it.
(d) I understand and agree that this project and the contribution
are public and that a record of the contribution (including all
personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with
this project or the open source license(s) involved.

@wrijeff @kowshikn Hold on with the approval as we are confirming this is required and does not affect any security approvals

Superseded by #607


Restructure artman pipelines and tests, add C# tests, minor fixes

UPDATE: this PR also includes:

Refactoring of code_generation_pipeline into gapic_generation_pipeline, grpc_generation_pipeline and core_generation_pipeline
Introduces a CodeGenerationPipelineBase class, which is used by all code and config generation pipelines
Modifies how additional tasks are added to pipelines when running in remote mode

This PR applies the changes to testing and other minor fixes from https://github.com/googleapis/artman/pull/44 after rebasing onto the remote pipeline changes in https://github.com/googleapis/artman/pull/47
It also adds includes:

Add tests for C# grpc and gapic pipelines
Reformat execute_pipeline to use 4 space indentation

Current coverage is 77.61% (diff: 70.42%)

Merging #58 into master will increase coverage by 2.45%

@@             master        #58   diff @@
==========================================
  Files            30         30
  Lines          1083       1099    +16
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits            814        853    +39
+ Misses          269        246    -23
  Partials          0          0

Powered by Codecov. Last update 9454281...6aad60a

I only have one question; otherwise I didn't see anything I had a problem with. I'll let the others review it too.

I have addressed PR feedback, and updated the title and description to include the additional work of refactoring the pipelines, PTAL

LGTM, please wait till @jmuk also gives green light.

LGTM.  Please rebase carefully (I think the conflict part would be my edits on NodeJSGapicClientPipeline).


DNSBench: Add version 1.3.668.0

New manifest for the freeware dns benchmark tool DNSBench

[x] I have read the Contributing Guide.

/verify

Copied from here. I have mentioned numerous times before that having one huge monolithic bucket is unsustainable. And taking apps from volunteers who've maintained them for years may dis-incentivize them from continuing to maintain the less popular apps.


 (Did you just disable "set value" on unexpanded properties?

Yes that's what I meant


build: only use compatible rules

After using https://github.com/StevenBlack/hosts on production scenarios, I noted it makes the execution slow.
I'm not sure if this is happening based on the number of rules or because I'm doing an adaptation from the original rule definition.

Coverage remained the same at 97.561% when pulling d7429ca77e0775d5e981b64194b204fb4d82992e on next into 208f6a28f6a949a76c0de8163f2bd60c11975c94 on master.

Could you maybe paste the output of the conversion of the rules? It should not slow down execution.

@remusao I think so, I prefer don't touch rules definition

@remusao I think so, I prefer don't touch rules definition

Sounds good, I will add support for these rules back in the adblocker library so that you  can use them in the future.

super awesome 🙂


Allow a subdomain with more levels

Currently cannot add domains like: test.test.test.me.

Thanks for the issue @ronilaukkarinen, I will issue a fix.

Any progress on this? Also having this issue


How to define event handlers?!

Hello! How to define event handlers? The code below doesn't work (webview loads page, but console doesn't log anything).
import ReactWebView from 'react-electron-webview';

// . . . . .
            <ReactWebView
                src={url}
                allowpopups
                plugins
                on-did-finish-load={(e) => {
                    console.log('did-finish-load');
                }}
            />

@keokilee, up

@keokilee, ok, I should've define event handler as
                onDidFinishLoad={(e) => {
                    console.log('did-finish-load');
                }}

Thanks for the component development!

Apologies for the late reply. Yeah, having a README.md to begin with would be nice 😅 In general, the event handlers are implemented as on-<event name> camel-cased, so close would be onClose.


SNTP

Hello All,
I am using SNTP example give in github. In the example code it is given for 2 county timing.
As in example they mentioned
//Set timezone to China Standard Time

  setenv("TZ", "CST-8", 1);

https://www.timeanddate.com/time/zones/asia
Does CST-8 took from list provide in above link. If so then I tried for other countries and I am not getting exact time. Where can I find complete list of TZ variable with all countries?
Thank you

https://github.com/nayarsystems/posix_tz_db


Fix a race in daemon/logger.TestCopier

- What I did
Fixed a race found in #22963
- How I did it
Introduced a mutex
- How to verify it
TESTDIRS=daemon/logger BUILDFLAGS=-race TESTFLAGS="-test.count 1000" make test-unit
Update #22963 (not closable yet, due to another race in awslogs)
Signed-off-by: Akihiro Suda<EMAIL_ADDRESS>

LGTM :angel:
/cc @runcom @LK4D4

LGTM


Notebooks documentation

Summary

Related issue :

Just taken from the existing docs in rtfd.io

I've just made a lightening fast review, assuming it was already reviewed earlier. So only one small suggestion.

I did a bit of reorganisation, but content was indeed reviewed in previous PR for the other repo

We may want to improve the automated checks to be sure we do all things in a coherent way (when there are various ways to write markdown or to use hugo short codes and so on).

I would expect mdl does force some coherent markdown... for the shortcodes, we should at least take a decision on how to include images and we should review relative links

for the shortcodes, we should at least take a decision on how to include images and we should review relative links

I think we will need a clear contribution and style guide at some point in time...


[Improvement][datasophon-init] 模块 README.md file  format optimization

Purpose of the pull request

Brief change log

Verify this pull request

This pull request is code cleanup without any test coverage.
(or)
This pull request is already covered by existing tests, such as (please describe tests).
(or)
This change added tests and can be verified as follows:

(or)
If your pull request contains incompatible changes, you should also pull request the documentation to https://github.com/datasophon/datasophon-website

README.md format optimization

https://github.com/sparanoid/chinese-copywriting-guidelines
Chinese copywriting guidelines for better written communication／中文文案排版指北
You can refer to it to format the document.


Feature request: add an flag for strict matching of generated code

What version of GCI are you using?

; gci --version
gci version 0.13.4

Feature Request
Would it be possible to have a flag for a more strict matching for generated files?
For example, something like --skip-generated-strict that only matches files with the regular expression ^// Code generated .* DO NOT EDIT\.$ as the first non-comment, non-blank text in the file, as explained in https://pkg.go.dev/cmd/go#hdr-Generate_Go_files_by_processing_source?
Rationale
Right now, the --skip-generated flag instructs gci to ignore files containing any of these strings:

	const (
		genCodeGenerated = "code generated"
		genDoNotEdit     = "do not edit"
		genAutoFile      = "autogenerated file"      // easyjson
		genAutoGenerated = "automatically generated" // genny
	)

Some of these strings create false positives, often appearing in hand-written files (especially the last one, genAutoGenerated).

It looks like a legitimate requests, maybe skip-generated could becomeva flag parameter that accepts coma separated value of header that are accepted.


Space after argument-less macro should be absorbed

Hi @siefkenj, thank you for the library! I'm working with the parser and noticed extraneous whitespaces being given in the following case:
{\em 5 stars}

which in Latex should render as 5 stars without any space before it.
I had to look it up; this SO question confirms that in such positions (macro without arguments and not guarded by a {} empty statement) the following space is absorbed and doesn't render.
Currently the unified-latex parser acts differently and produces that whitespace.
Is this intentional? How should I approach and fix it if I'd like to contribute?
Context: I'm using this Latex parser to "transpile" a small set of Latex into other typesetting languages such as Typst. It's very hard to have great Latex feature coverage, and I don't quite intend to do so. Still, it may prove useful for people to migrate their old latex projects and save some manual work :)

Hi @Evan-Zhao -- saw your Context, and responding to that! We are doing something similar over in https://mystmd.org, and it may be helpful to take a look at the packages we are working on there (tex-to-myst, and myst-to-typst - demos in the online docs) -- let me know if you are interested in hearing more on how we are working through that translations with unified-latex!

At the moment, this behavior is intentional, since unified-latex was first written to be a pretty printer (and so intended to preserve formatting of the code, not exact TeX behavior).
There are a few things you can do. If your macro takes an argument, give it a signature of "m", and the argument will be absorbed, correctly accounting for whitespace. In the case of \em it is a streaming command which doesn't take an argument. Things like \em 5 is the same as \em5, but \em A is not the same as \emA...
In any case, if you want to remove whitespace immediately following specific macros, you can use the replaceNode command and check for whitespace. Then you can see if the item in the containingArray immediately preceeding the whitespace is a macro. If so, return null from replaceNode.


wrong Mio signature

See https://wiki.haskell.org/IO_inside
The IO function should return a new RealWorld state.

Finally, you may want to know how much passing these RealWorld values around the program costs. It's free! These fake values exist solely for the compiler while it analyzes and optimizes the code, but when it gets to assembly code generation, it "suddenly" realize that this type is like "()", so all these parameters and result values can be omitted from the final generated code. Isn't it beautiful?

I've misused RealWorld Haskell notation and State monad
check http://homepages.inf.ed.ac.uk/wadler/papers/marktoberdorf/baastad.pdf

'>>='(IO1, Fun) ->
   fun(World) ->
    ...
   end.

vs
'>>='(IO1, Fun) ->
   fun() ->
    ...
   end.

fixed


Can't use py-socl-x

Hi everyone
I'm having a problem with the soclx tool, if I try to run python deploy.py (at 3:44:36 of this course) I get an error that says:
solcx.exceptions.SolcNotInstalled: solc 0.6.0 has not been installed. Use solcx.install_solc('0.6.0') to install.
So at this point I run python on my vs code terminal but when executing the command I get a new error:
Traceback (most recent call last):
File "", line 1, in
NameError: name 'solcx' is not defined
Not only, every soclx command outputs the same error as above
I checked with pip list and the soclx tool is in the list, I have followed word by word all the instructions but I can't see what I've done wrong
Does anyone had the same issue and know ho to fix this? Thanks

problem was solved by reading the docs in the section of video fixes, i suggest that the errors reported in that section have to be reported in the youtube video with an edit to the correct timestamp

what docs and on what section do I read them? need help please same issue saying solcx not installed


Identify apps not yet migrated/ calculate percentage complete

What we're after - as a team, we would like to a clear, accurate snapshot of what apps are not migrated so we can:

Achieve our goal of migrating everything (we need to know what composes this)
Identify the apps that actually don't need to be moved, saving our efforts
Additionally (but not as much of a priority), there may be ways to use any tracking mechanism developed to meet the primary goals to motivate other users to migrate

Acceptance criteria:

[ ] An accurate, single source cataloging the apps that are not yet migrated (this could be expanded to include all apps) is available to the cloud.gov team

On review, Favro (in addition to Github) could be a good way to track and visualize these. Bret is working to get it set up, so we possibly leverage that here.

Issue moved to 18F/cg-migration #42 via ZenHub


kishwars/pepper_deepvariant version tag should be r0.8

If I am not mistaking, the tag should be r0.8 instead of latest in the doc

Hi @splaisan,
I think so. It should be written when ones try to install it.
Bw.