outlook-cli-rs 0.2.2__tar.gz → 0.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.github/workflows/ci.yml +1 -0
- outlook_cli_rs-0.2.4/.github/workflows/release.yml +179 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/CHANGELOG.md +17 -2
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Cargo.lock +465 -3
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Cargo.toml +3 -1
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/PKG-INFO +58 -6
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/README.md +55 -2
- outlook_cli_rs-0.2.4/docs/releases.md +70 -0
- outlook_cli_rs-0.2.4/scripts/release.py +167 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/cli.rs +19 -1
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/lib.rs +1 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/main.rs +25 -3
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/schema.rs +9 -1
- outlook_cli_rs-0.2.4/src/tui/mod.rs +263 -0
- outlook_cli_rs-0.2.4/src/tui/model.rs +417 -0
- outlook_cli_rs-0.2.4/src/tui/tests.rs +348 -0
- outlook_cli_rs-0.2.4/src/tui/view.rs +404 -0
- outlook_cli_rs-0.2.4/tests/tui.rs +77 -0
- outlook_cli_rs-0.2.4/vership.toml +11 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.github/dependabot.yml +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.gitignore +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/LICENSE +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Makefile +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/pyproject.toml +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/auth.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/backend.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/config.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/desktop.ps1 +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/desktop.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/error.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/graph.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/output.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/presentation.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/cli.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/desktop.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/desktop_bridge.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/fixtures/clispec-v0.3.json +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/fixtures/desktop-mock.ps1 +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/graph.rs +0 -0
- {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/presentation.rs +0 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ['v*']
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
publish:
|
|
9
|
+
description: Publish the verified packages (requires a version tag and registry secrets)
|
|
10
|
+
type: boolean
|
|
11
|
+
default: false
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: release-${{ github.ref }}
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
test:
|
|
22
|
+
uses: ./.github/workflows/ci.yml
|
|
23
|
+
|
|
24
|
+
wheels:
|
|
25
|
+
name: Wheel (${{ matrix.target }})
|
|
26
|
+
needs: test
|
|
27
|
+
strategy:
|
|
28
|
+
fail-fast: false
|
|
29
|
+
matrix:
|
|
30
|
+
include:
|
|
31
|
+
- os: ubuntu-24.04
|
|
32
|
+
target: x86_64-unknown-linux-gnu
|
|
33
|
+
compatibility: '2014'
|
|
34
|
+
container: quay.io/pypa/manylinux2014_x86_64:latest
|
|
35
|
+
- os: ubuntu-24.04-arm
|
|
36
|
+
target: aarch64-unknown-linux-gnu
|
|
37
|
+
compatibility: '2014'
|
|
38
|
+
container: quay.io/pypa/manylinux2014_aarch64:latest
|
|
39
|
+
- os: ubuntu-24.04
|
|
40
|
+
target: x86_64-unknown-linux-musl
|
|
41
|
+
compatibility: musllinux_1_2
|
|
42
|
+
container: quay.io/pypa/musllinux_1_2_x86_64:latest
|
|
43
|
+
- os: ubuntu-24.04-arm
|
|
44
|
+
target: aarch64-unknown-linux-musl
|
|
45
|
+
compatibility: musllinux_1_2
|
|
46
|
+
container: quay.io/pypa/musllinux_1_2_aarch64:latest
|
|
47
|
+
- os: windows-latest
|
|
48
|
+
target: x86_64-pc-windows-msvc
|
|
49
|
+
compatibility: auto
|
|
50
|
+
container: off
|
|
51
|
+
- os: macos-15-intel
|
|
52
|
+
target: x86_64-apple-darwin
|
|
53
|
+
compatibility: auto
|
|
54
|
+
container: off
|
|
55
|
+
- os: macos-latest
|
|
56
|
+
target: aarch64-apple-darwin
|
|
57
|
+
compatibility: auto
|
|
58
|
+
container: off
|
|
59
|
+
runs-on: ${{ matrix.os }}
|
|
60
|
+
steps:
|
|
61
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
62
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
63
|
+
with:
|
|
64
|
+
python-version: '3.12'
|
|
65
|
+
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
|
|
66
|
+
- uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1
|
|
67
|
+
with:
|
|
68
|
+
command: build
|
|
69
|
+
args: --release --locked --out dist
|
|
70
|
+
target: ${{ matrix.target }}
|
|
71
|
+
manylinux: ${{ matrix.compatibility }}
|
|
72
|
+
container: ${{ matrix.container }}
|
|
73
|
+
rust-toolchain: '1.90.0'
|
|
74
|
+
before-script-linux: |
|
|
75
|
+
if command -v apk >/dev/null 2>&1; then
|
|
76
|
+
apk add --no-cache cmake make perl pkgconf
|
|
77
|
+
# Vendored D-Bus otherwise calls GCC atomic helpers that Rust's
|
|
78
|
+
# static ARM64 musl link does not provide. Use inline atomics.
|
|
79
|
+
if [ "$(uname -m)" = aarch64 ]; then
|
|
80
|
+
export CFLAGS_aarch64_unknown_linux_musl="-mno-outline-atomics"
|
|
81
|
+
fi
|
|
82
|
+
fi
|
|
83
|
+
- name: Verify uv installation without source builds
|
|
84
|
+
if: ${{ !contains(matrix.target, '-musl') }}
|
|
85
|
+
run: python scripts/release.py smoke dist
|
|
86
|
+
- name: Verify musl wheel in Alpine without Rust
|
|
87
|
+
if: contains(matrix.target, '-musl')
|
|
88
|
+
shell: bash
|
|
89
|
+
run: |
|
|
90
|
+
docker run --rm -v "$PWD:/io:ro" -w /io \
|
|
91
|
+
ghcr.io/astral-sh/uv:python3.12-alpine \
|
|
92
|
+
python scripts/release.py smoke dist
|
|
93
|
+
- name: Package standalone executable and checksum
|
|
94
|
+
run: python scripts/release.py archive dist --target ${{ matrix.target }}
|
|
95
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
96
|
+
with:
|
|
97
|
+
name: wheel-${{ matrix.target }}
|
|
98
|
+
path: dist/*
|
|
99
|
+
if-no-files-found: error
|
|
100
|
+
|
|
101
|
+
source:
|
|
102
|
+
needs: test
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
steps:
|
|
105
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
106
|
+
- uses: PyO3/maturin-action@e83996d129638aa358a18fbd1dfb82f0b0fb5d3b # v1
|
|
107
|
+
with:
|
|
108
|
+
command: sdist
|
|
109
|
+
args: --out dist
|
|
110
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
111
|
+
with:
|
|
112
|
+
name: source
|
|
113
|
+
path: dist/*.tar.gz
|
|
114
|
+
if-no-files-found: error
|
|
115
|
+
|
|
116
|
+
verify:
|
|
117
|
+
needs: [wheels, source]
|
|
118
|
+
runs-on: ubuntu-latest
|
|
119
|
+
steps:
|
|
120
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
121
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
122
|
+
with:
|
|
123
|
+
python-version: '3.12'
|
|
124
|
+
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
|
|
125
|
+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
126
|
+
with:
|
|
127
|
+
path: dist
|
|
128
|
+
merge-multiple: true
|
|
129
|
+
- run: python scripts/release.py verify dist
|
|
130
|
+
- run: uv tool run --from twine twine check dist/*.whl dist/outlook_cli_rs-*.tar.gz
|
|
131
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
132
|
+
with:
|
|
133
|
+
name: release-packages
|
|
134
|
+
path: dist/*
|
|
135
|
+
if-no-files-found: error
|
|
136
|
+
|
|
137
|
+
# Building a tag never publishes a partial platform set. Publication is an
|
|
138
|
+
# explicit dispatch on that tag after all build and installation checks pass.
|
|
139
|
+
publish:
|
|
140
|
+
if: github.event_name == 'workflow_dispatch' && inputs.publish
|
|
141
|
+
needs: verify
|
|
142
|
+
runs-on: ubuntu-latest
|
|
143
|
+
permissions:
|
|
144
|
+
contents: write
|
|
145
|
+
steps:
|
|
146
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1
|
|
147
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6
|
|
148
|
+
with:
|
|
149
|
+
python-version: '3.12'
|
|
150
|
+
- uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6
|
|
151
|
+
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
152
|
+
with:
|
|
153
|
+
name: release-packages
|
|
154
|
+
path: dist
|
|
155
|
+
- name: Check tag and credentials before publishing anything
|
|
156
|
+
env:
|
|
157
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
158
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
159
|
+
run: |
|
|
160
|
+
python scripts/release.py verify dist --require-tag "$GITHUB_REF_NAME"
|
|
161
|
+
test "$GITHUB_REF_TYPE" = tag
|
|
162
|
+
test -n "$CARGO_REGISTRY_TOKEN"
|
|
163
|
+
test -n "$TWINE_PASSWORD"
|
|
164
|
+
- name: Publish crates.io package
|
|
165
|
+
env:
|
|
166
|
+
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
|
|
167
|
+
run: cargo publish --locked
|
|
168
|
+
- name: Publish all Python packages
|
|
169
|
+
env:
|
|
170
|
+
TWINE_USERNAME: __token__
|
|
171
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
|
172
|
+
run: uv tool run --from twine twine upload --non-interactive dist/*.whl dist/outlook_cli_rs-*.tar.gz
|
|
173
|
+
- name: Publish executable archives
|
|
174
|
+
env:
|
|
175
|
+
GH_TOKEN: ${{ github.token }}
|
|
176
|
+
run: |
|
|
177
|
+
python scripts/release.py notes > release-notes.md
|
|
178
|
+
gh release create "$GITHUB_REF_NAME" --verify-tag --title "$GITHUB_REF_NAME" \
|
|
179
|
+
--notes-file release-notes.md dist/outlook-v* dist/SHA256SUMS
|
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.2.2 - 2026-09-08
|
|
3
|
+
## [0.2.4](https://github.com/rvben/outlook-cli/compare/v0.2.3...v0.2.4) - 2026-09-08
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **tui**: add read-only keyboard inbox with message previews ([c59ede4](https://github.com/rvben/outlook-cli/commit/c59ede4e3357479da05202e242e8249cb20ca3cc))
|
|
8
|
+
|
|
9
|
+
## [0.2.3] - 2026-09-08
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Ship prebuilt Python wheels for Windows x64, Intel and Apple Silicon macOS, and x64/ARM64 Linux (glibc and musl), so supported `uv` installations do not need Rust.
|
|
14
|
+
- Build and verify the full platform matrix before publishing, including `uv` installation with source builds disabled and standalone executable smoke tests.
|
|
15
|
+
- Provide executable archives and SHA-256 checksums for every wheel target.
|
|
16
|
+
- Clarify that source installations on other platforms require Rust and native build tools.
|
|
17
|
+
|
|
18
|
+
## [0.2.2] - 2026-09-08
|
|
4
19
|
|
|
5
20
|
### Added
|
|
6
21
|
|
|
@@ -18,7 +33,7 @@
|
|
|
18
33
|
- Attachments and calendar commands remain Graph-only.
|
|
19
34
|
- Desktop bridge tests pass with mock Outlook objects; live Windows/WSL COM validation remains outstanding.
|
|
20
35
|
|
|
21
|
-
## 0.2.1 - 2026-09-08
|
|
36
|
+
## [0.2.1] - 2026-09-08
|
|
22
37
|
|
|
23
38
|
### Added
|
|
24
39
|
|