```python
def fold_ends(values: list) -> list:
    """Fold a list onto itself by adding the first entry to the last,
    the second to the second-last, and so on, returning the totals in that order.
    A list of an odd length leaves its middle entry as its own total.
    """
    result = []
    n = len(values)
    for i in range(n // 2):
        result.append(values[i] + values[n - 1 - i])
    if n % 2 == 1:
        result.append(values[n // 2])
    return result
```