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.
Files changed (40) hide show
  1. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.github/workflows/ci.yml +1 -0
  2. outlook_cli_rs-0.2.4/.github/workflows/release.yml +179 -0
  3. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/CHANGELOG.md +17 -2
  4. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Cargo.lock +465 -3
  5. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Cargo.toml +3 -1
  6. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/PKG-INFO +58 -6
  7. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/README.md +55 -2
  8. outlook_cli_rs-0.2.4/docs/releases.md +70 -0
  9. outlook_cli_rs-0.2.4/scripts/release.py +167 -0
  10. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/cli.rs +19 -1
  11. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/lib.rs +1 -0
  12. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/main.rs +25 -3
  13. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/schema.rs +9 -1
  14. outlook_cli_rs-0.2.4/src/tui/mod.rs +263 -0
  15. outlook_cli_rs-0.2.4/src/tui/model.rs +417 -0
  16. outlook_cli_rs-0.2.4/src/tui/tests.rs +348 -0
  17. outlook_cli_rs-0.2.4/src/tui/view.rs +404 -0
  18. outlook_cli_rs-0.2.4/tests/tui.rs +77 -0
  19. outlook_cli_rs-0.2.4/vership.toml +11 -0
  20. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.github/dependabot.yml +0 -0
  21. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/.gitignore +0 -0
  22. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/LICENSE +0 -0
  23. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/Makefile +0 -0
  24. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/pyproject.toml +0 -0
  25. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/auth.rs +0 -0
  26. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/backend.rs +0 -0
  27. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/config.rs +0 -0
  28. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/desktop.ps1 +0 -0
  29. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/desktop.rs +0 -0
  30. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/error.rs +0 -0
  31. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/graph.rs +0 -0
  32. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/output.rs +0 -0
  33. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/src/presentation.rs +0 -0
  34. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/cli.rs +0 -0
  35. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/desktop.rs +0 -0
  36. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/desktop_bridge.rs +0 -0
  37. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/fixtures/clispec-v0.3.json +0 -0
  38. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/fixtures/desktop-mock.ps1 +0 -0
  39. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/graph.rs +0 -0
  40. {outlook_cli_rs-0.2.2 → outlook_cli_rs-0.2.4}/tests/presentation.rs +0 -0
@@ -3,6 +3,7 @@ name: CI
3
3
  on:
4
4
  push:
5
5
  pull_request:
6
+ workflow_call:
6
7
 
7
8
  permissions:
8
9
  contents: read
@@ -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