taskchampion-rb 0.9.4 → 0.9.6
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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/CHANGELOG.md +88 -1
- data/Cargo.lock +11 -24
- data/README.md +16 -8
- data/docs/post_upstream_fix_migration.md +147 -0
- data/ext/taskchampion/Cargo.toml +3 -1
- data/lib/taskchampion/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d630eddac8dfcb822f6e7f09d61f47abf4bc7597cc2d5cc127b53bff7a6a2f2
|
|
4
|
+
data.tar.gz: 7fbf3649576f7b77114f67fb9ea04c5018d06ba27dc0746b74a35a67c8af1cb5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a412f351c3b06ba461ae2404bad35c2944cbd25245e7f7ed7415e8d97647fd21c397c15b538064530481029ce10be0a37d0ad75156f6907cb515ea89fa66382e
|
|
7
|
+
data.tar.gz: b428ea2050a5286a05a6c73037434874161c7cc4c3df0784c1741b53fffc47918819a88c1aae537ebde2ca5466b46be071905aebffc2995034ad9a3784337996
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
3.
|
|
1
|
+
3.3.9
|
data/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,91 @@
|
|
|
1
|
-
## [
|
|
1
|
+
## [0.9.6] - 2026-10-22
|
|
2
|
+
|
|
3
|
+
- Update `rb-sys` to 0.9.130 (pulling in `bindgen` 0.72.1) in
|
|
4
|
+
`Cargo.lock`. The previously locked `bindgen` 0.69.5 cannot parse
|
|
5
|
+
Ruby's `rb_data_type_struct` with libclang 22, as shipped on Ubuntu
|
|
6
|
+
26.04, so `magnus` failed to compile there.
|
|
7
|
+
- Drop the stale Ruby 3.5 preview from the CI matrix; CI now tests 3.3
|
|
8
|
+
and 3.4. Ruby 4.0 is not yet supported (`magnus` 0.7 does not build
|
|
9
|
+
against it).
|
|
10
|
+
|
|
11
|
+
## [0.9.5] - 2026-09-10
|
|
12
|
+
|
|
13
|
+
- Drop support for Ruby 3.2 (reached EOL March 2026). Minimum supported
|
|
14
|
+
Ruby is now 3.3.
|
|
15
|
+
- Enable the `bundled` feature of the `taskchampion` crate so SQLite is
|
|
16
|
+
compiled from source into the extension. Previously `default-features
|
|
17
|
+
= false` dropped `bundled`, making the build link against system
|
|
18
|
+
SQLite and fail with `cannot find -lsqlite3` on any host without
|
|
19
|
+
`libsqlite3-dev` installed.
|
|
20
|
+
- Expand README build prerequisites: `clang`/`libclang-dev` (needed by
|
|
21
|
+
`rb-sys` bindgen) on Linux, `xcode-select --install` on macOS, and
|
|
22
|
+
note that the Rust toolchain is optional since `rb-sys` bootstraps
|
|
23
|
+
one.
|
|
24
|
+
|
|
25
|
+
## [0.9.4] - 2026-07-11
|
|
26
|
+
|
|
27
|
+
- Include the full cause chain in sync error messages. TaskChampion
|
|
28
|
+
wraps sync failures in an anyhow context, and the default `Display`
|
|
29
|
+
previously printed only the outermost line ("Failed to synchronize
|
|
30
|
+
with server"), hiding the real cause. `Error::Other` is now formatted
|
|
31
|
+
with anyhow's alternate format so the full chain (HTTP status,
|
|
32
|
+
connection errors, server rejections) reaches Ruby.
|
|
33
|
+
- Add `server-gcp` feature flag, required for `ServerConfig::Gcp` used
|
|
34
|
+
by `sync_gcp`
|
|
35
|
+
- Fix order-dependent annotation test
|
|
36
|
+
|
|
37
|
+
## [0.9.3] - 2026-05-30
|
|
38
|
+
|
|
39
|
+
- Add `Task#set_modified` method, consistent with `set_entry`
|
|
40
|
+
- Move docs
|
|
41
|
+
- Change taskchampion dependency to enable `server-sync` feature
|
|
42
|
+
|
|
43
|
+
## [0.9.2] - 2026-05-22
|
|
44
|
+
|
|
45
|
+
- Fix all Rust compiler warnings
|
|
46
|
+
|
|
47
|
+
## [0.9.1] - 2026-05-22
|
|
48
|
+
|
|
49
|
+
- Fix error mapping to use `taskchampion::Error` enum variants instead
|
|
50
|
+
of heuristic message-content matching. Adds
|
|
51
|
+
`Taskchampion::OutOfSyncError < SyncError` for the `OutOfSync`
|
|
52
|
+
sentinel, signaling an irrecoverable divergence that requires a full
|
|
53
|
+
re-sync rather than a retry
|
|
54
|
+
|
|
55
|
+
## [0.9.0] - 2025-10-17
|
|
56
|
+
|
|
57
|
+
- Add remove and update annotations support
|
|
58
|
+
|
|
59
|
+
## [0.8.0] - 2025-09-24
|
|
60
|
+
|
|
61
|
+
- Add undo/history functionality with operation tracking
|
|
62
|
+
- Add `set_timestamp` and `get_timestamp` methods for custom date
|
|
63
|
+
fields
|
|
64
|
+
- Fix RuboCop errors
|
|
65
|
+
|
|
66
|
+
## [0.7.0] - 2025-08-18
|
|
67
|
+
|
|
68
|
+
- Add `set_entry` method to `Task`
|
|
69
|
+
- Fix RuboCop errors
|
|
70
|
+
|
|
71
|
+
## [0.6.0] - 2025-08-14
|
|
72
|
+
|
|
73
|
+
- Add pending task support to `Replica`
|
|
74
|
+
|
|
75
|
+
## [0.5.0] - 2025-08-14
|
|
76
|
+
|
|
77
|
+
- Implement `done` status handling
|
|
78
|
+
|
|
79
|
+
Note: v0.4.0 was tagged against the same commit as v0.5.0 and carries
|
|
80
|
+
no distinct changes; treat v0.5.0 as its replacement.
|
|
81
|
+
|
|
82
|
+
## [0.3.0] - 2025-08-14
|
|
83
|
+
|
|
84
|
+
- Rename gem to `taskchampion-rb`
|
|
85
|
+
- Implement `TaskData`
|
|
86
|
+
- Rename `tasks` to `all_tasks`
|
|
87
|
+
- Support Windows and ARM builds
|
|
88
|
+
- Drop support for Ruby versions below 3.2
|
|
2
89
|
|
|
3
90
|
## [0.2.0] - 2025-08-11
|
|
4
91
|
|
data/Cargo.lock
CHANGED
|
@@ -115,20 +115,18 @@ checksum = "0e050f626429857a27ddccb31e0aca21356bfa709c04041aefddac081a8f068a"
|
|
|
115
115
|
|
|
116
116
|
[[package]]
|
|
117
117
|
name = "bindgen"
|
|
118
|
-
version = "0.
|
|
118
|
+
version = "0.72.1"
|
|
119
119
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
120
|
-
checksum = "
|
|
120
|
+
checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895"
|
|
121
121
|
dependencies = [
|
|
122
122
|
"bitflags",
|
|
123
123
|
"cexpr",
|
|
124
124
|
"clang-sys",
|
|
125
125
|
"itertools",
|
|
126
|
-
"lazy_static",
|
|
127
|
-
"lazycell",
|
|
128
126
|
"proc-macro2",
|
|
129
127
|
"quote",
|
|
130
128
|
"regex",
|
|
131
|
-
"rustc-hash
|
|
129
|
+
"rustc-hash",
|
|
132
130
|
"shlex",
|
|
133
131
|
"syn",
|
|
134
132
|
]
|
|
@@ -862,12 +860,6 @@ version = "1.5.0"
|
|
|
862
860
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
863
861
|
checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe"
|
|
864
862
|
|
|
865
|
-
[[package]]
|
|
866
|
-
name = "lazycell"
|
|
867
|
-
version = "1.3.0"
|
|
868
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
869
|
-
checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55"
|
|
870
|
-
|
|
871
863
|
[[package]]
|
|
872
864
|
name = "libc"
|
|
873
865
|
version = "0.2.174"
|
|
@@ -881,7 +873,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
|
881
873
|
checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667"
|
|
882
874
|
dependencies = [
|
|
883
875
|
"cfg-if",
|
|
884
|
-
"windows-targets 0.
|
|
876
|
+
"windows-targets 0.52.6",
|
|
885
877
|
]
|
|
886
878
|
|
|
887
879
|
[[package]]
|
|
@@ -890,6 +882,7 @@ version = "0.30.1"
|
|
|
890
882
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
891
883
|
checksum = "2e99fb7a497b1e3339bc746195567ed8d3e24945ecd636e3619d20b9de9e9149"
|
|
892
884
|
dependencies = [
|
|
885
|
+
"cc",
|
|
893
886
|
"pkg-config",
|
|
894
887
|
"vcpkg",
|
|
895
888
|
]
|
|
@@ -1162,7 +1155,7 @@ dependencies = [
|
|
|
1162
1155
|
"pin-project-lite",
|
|
1163
1156
|
"quinn-proto",
|
|
1164
1157
|
"quinn-udp",
|
|
1165
|
-
"rustc-hash
|
|
1158
|
+
"rustc-hash",
|
|
1166
1159
|
"rustls",
|
|
1167
1160
|
"socket2",
|
|
1168
1161
|
"thiserror 2.0.12",
|
|
@@ -1182,7 +1175,7 @@ dependencies = [
|
|
|
1182
1175
|
"lru-slab",
|
|
1183
1176
|
"rand",
|
|
1184
1177
|
"ring",
|
|
1185
|
-
"rustc-hash
|
|
1178
|
+
"rustc-hash",
|
|
1186
1179
|
"rustls",
|
|
1187
1180
|
"rustls-pki-types",
|
|
1188
1181
|
"slab",
|
|
@@ -1252,18 +1245,18 @@ dependencies = [
|
|
|
1252
1245
|
|
|
1253
1246
|
[[package]]
|
|
1254
1247
|
name = "rb-sys"
|
|
1255
|
-
version = "0.9.
|
|
1248
|
+
version = "0.9.130"
|
|
1256
1249
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1257
|
-
checksum = "
|
|
1250
|
+
checksum = "02faf625bb10ba893e3ae620f19c9fb1b5f8fcae0fe4eb86bb3f2230fad75edb"
|
|
1258
1251
|
dependencies = [
|
|
1259
1252
|
"rb-sys-build",
|
|
1260
1253
|
]
|
|
1261
1254
|
|
|
1262
1255
|
[[package]]
|
|
1263
1256
|
name = "rb-sys-build"
|
|
1264
|
-
version = "0.9.
|
|
1257
|
+
version = "0.9.130"
|
|
1265
1258
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1266
|
-
checksum = "
|
|
1259
|
+
checksum = "05be6f9c86fe5482808162826f6c047d093b3670582296c770de1d94f8066694"
|
|
1267
1260
|
dependencies = [
|
|
1268
1261
|
"bindgen",
|
|
1269
1262
|
"lazy_static",
|
|
@@ -1405,12 +1398,6 @@ dependencies = [
|
|
|
1405
1398
|
"smallvec",
|
|
1406
1399
|
]
|
|
1407
1400
|
|
|
1408
|
-
[[package]]
|
|
1409
|
-
name = "rustc-hash"
|
|
1410
|
-
version = "1.1.0"
|
|
1411
|
-
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1412
|
-
checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2"
|
|
1413
|
-
|
|
1414
1401
|
[[package]]
|
|
1415
1402
|
name = "rustc-hash"
|
|
1416
1403
|
version = "2.1.1"
|
data/README.md
CHANGED
|
@@ -2,26 +2,34 @@
|
|
|
2
2
|
|
|
3
3
|
Ruby bindings for TaskChampion, the task database that powers Taskwarrior.
|
|
4
4
|
|
|
5
|
-
## Ruby Version Support (
|
|
5
|
+
## Ruby Version Support (2026-09-10)
|
|
6
6
|
|
|
7
|
-
This gem supports Ruby 3.
|
|
7
|
+
This gem supports Ruby 3.3 and later. We follow Ruby's end-of-life (EOL) schedule and drop support for Ruby versions that have reached EOL.
|
|
8
8
|
|
|
9
|
-
- **Ruby 3.
|
|
10
|
-
- **Ruby 3.
|
|
11
|
-
- **Ruby 3.
|
|
12
|
-
- **Ruby 3.0-3.
|
|
9
|
+
- **Ruby 3.3**: Supported
|
|
10
|
+
- **Ruby 3.4**: Supported (Current stable)
|
|
11
|
+
- **Ruby 3.5**: Supported
|
|
12
|
+
- **Ruby 3.0-3.2**: Not supported (reached EOL)
|
|
13
13
|
|
|
14
14
|
## Installation
|
|
15
15
|
|
|
16
16
|
### Prerequisites
|
|
17
17
|
|
|
18
|
-
1. Ruby 3.
|
|
19
|
-
2.
|
|
18
|
+
1. Ruby 3.3 or later
|
|
19
|
+
2. A C compiler and `clang`/`libclang` development headers — `rb-sys` runs
|
|
20
|
+
libclang over Ruby's headers to generate FFI bindings during `rake compile`.
|
|
21
|
+
- **Debian/Ubuntu:** `sudo apt install clang libclang-dev`
|
|
22
|
+
- **macOS:** `xcode-select --install`
|
|
23
|
+
3. Rust toolchain (optional — if `cargo` is not found, `rb-sys` bootstraps its
|
|
24
|
+
own rustup + toolchain during the build). To install it yourself:
|
|
20
25
|
|
|
21
26
|
```bash
|
|
22
27
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
|
23
28
|
```
|
|
24
29
|
|
|
30
|
+
> SQLite is compiled from source into the extension (the `bundled` feature), so
|
|
31
|
+
> no system SQLite / `libsqlite3-dev` is required.
|
|
32
|
+
|
|
25
33
|
### Building from source
|
|
26
34
|
|
|
27
35
|
```bash
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
# Migration plan: once the upstream `taskchampion` sync-error fix lands
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
`Replica::sync()` in the upstream `taskchampion` crate currently routes
|
|
6
|
+
every sync failure through `anyhow::Context`, which erases the typed
|
|
7
|
+
`Error` variant (`Database`, `Server`, `OutOfSync`, `Usage`) and
|
|
8
|
+
re-boxes it as the catch-all `Error::Other` — regardless of what
|
|
9
|
+
actually failed. See `upstream_issue_draft.md` at the root of this
|
|
10
|
+
checkout of `~/Sites/reference/taskchampion` for the full writeup filed
|
|
11
|
+
against `GothenburgBitFactory/taskchampion`.
|
|
12
|
+
|
|
13
|
+
This document tracks what changes in `taskchampion-rb` once that
|
|
14
|
+
upstream issue is fixed and released (or once we point at a patched
|
|
15
|
+
fork, whichever comes first).
|
|
16
|
+
|
|
17
|
+
## What does *not* need to change
|
|
18
|
+
|
|
19
|
+
`ext/taskchampion/src/error.rs`'s `map_taskchampion_error` already has
|
|
20
|
+
the correct match arms:
|
|
21
|
+
|
|
22
|
+
```rust
|
|
23
|
+
match error {
|
|
24
|
+
Error::Database(msg) => Error::new(storage_error(), msg),
|
|
25
|
+
Error::Server(msg) => Error::new(sync_error(), msg),
|
|
26
|
+
Error::OutOfSync => Error::new(out_of_sync_error(), "..."),
|
|
27
|
+
Error::Usage(msg) => Error::new(validation_error(), msg),
|
|
28
|
+
Error::Other(err) => Error::new(storage_error(), format!("{err:#}")),
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
These arms have been correct since `0.9.1` ("Fix error mapping to use
|
|
33
|
+
enum variants") — they've simply been dead code for sync failures
|
|
34
|
+
specifically, because `Replica::sync()` never handed them a real
|
|
35
|
+
`Server`/`OutOfSync` value to match against. No changes needed here.
|
|
36
|
+
|
|
37
|
+
## What does need to change
|
|
38
|
+
|
|
39
|
+
### 1. Bump the pinned crate dependency
|
|
40
|
+
|
|
41
|
+
`ext/taskchampion/Cargo.toml`:
|
|
42
|
+
|
|
43
|
+
```toml
|
|
44
|
+
taskchampion = { version = "2.0", default-features = false, features = ["server-sync", "server-gcp"] }
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Once the fix ships in a crates.io release, bump `"2.0"` to whatever
|
|
48
|
+
version includes it. If we go the fork route first (patch applied
|
|
49
|
+
locally, upstream PR still pending review), point at the fork instead:
|
|
50
|
+
|
|
51
|
+
```toml
|
|
52
|
+
taskchampion = { git = "https://github.com/<you>/taskchampion", branch = "preserve-sync-error-variant", default-features = false, features = ["server-sync", "server-gcp"] }
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
Swap back to the crates.io version once/if the PR merges and releases.
|
|
56
|
+
|
|
57
|
+
Run `cargo update -p taskchampion` (or `bundle exec rake compile`,
|
|
58
|
+
which will pull in the new `Cargo.lock` resolution) and recompile.
|
|
59
|
+
|
|
60
|
+
### 2. This is a breaking change for consumers — bump to 0.10.0
|
|
61
|
+
|
|
62
|
+
`Taskchampion::StorageError` and `Taskchampion::SyncError` are
|
|
63
|
+
**siblings** under `Taskchampion::Error`, not superclass/subclass:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
Taskchampion::Error
|
|
67
|
+
├── Taskchampion::StorageError
|
|
68
|
+
└── Taskchampion::SyncError
|
|
69
|
+
└── Taskchampion::OutOfSyncError
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Today, every `sync_to_remote`/`sync_to_local`/`sync_to_gcp` failure
|
|
73
|
+
raises `StorageError`. After this fix, connection/network/out-of-sync
|
|
74
|
+
failures will raise `SyncError` or `OutOfSyncError` instead. Any
|
|
75
|
+
consumer code doing `rescue Taskchampion::StorageError` specifically
|
|
76
|
+
around a sync call — expecting it to catch sync failures — will
|
|
77
|
+
silently stop catching them.
|
|
78
|
+
|
|
79
|
+
Per semver for a pre-1.0 gem, this warrants a **minor** version bump
|
|
80
|
+
(`0.9.4` → `0.10.0`), not a jump to `1.0.0`. See the CHANGELOG entry
|
|
81
|
+
below.
|
|
82
|
+
|
|
83
|
+
### 3. Update `docs/TaskchampionRbErrors.md`
|
|
84
|
+
|
|
85
|
+
This file already documents `SyncError`/`OutOfSyncError` as reachable
|
|
86
|
+
via `Error::Server`/`Error::OutOfSync` — that documentation is
|
|
87
|
+
currently aspirational/inaccurate for sync failures specifically. Once
|
|
88
|
+
the fix lands, it becomes correct; no wording changes should be
|
|
89
|
+
needed, but re-verify the examples still match actual raised messages
|
|
90
|
+
(the message text may shift slightly depending on how the upstream fix
|
|
91
|
+
formats the wrapped context — see caveat below).
|
|
92
|
+
|
|
93
|
+
### 4. Verify existing tests still pass, add classification coverage
|
|
94
|
+
|
|
95
|
+
Existing tests are already forward-compatible:
|
|
96
|
+
|
|
97
|
+
- `test/integration/test_sync_operations.rb:150`
|
|
98
|
+
(`test_sync_error_handling`) asserts
|
|
99
|
+
`Taskchampion::StorageError, Taskchampion::SyncError` (either) — no
|
|
100
|
+
change needed.
|
|
101
|
+
- `test/integration/test_sync_operations.rb`
|
|
102
|
+
(`test_remote_sync_error_includes_underlying_cause`, added in
|
|
103
|
+
`61130f5`) asserts the base `Taskchampion::Error` and matches on
|
|
104
|
+
message content — no change needed, but re-run it: the exact message
|
|
105
|
+
format may shift if the upstream fix wraps the inner message
|
|
106
|
+
differently than our expectation
|
|
107
|
+
(`"Failed to synchronize with server: <cause>"`).
|
|
108
|
+
|
|
109
|
+
Add new coverage once the fix lands:
|
|
110
|
+
|
|
111
|
+
- A test that a genuinely out-of-sync replica (server has diverged,
|
|
112
|
+
e.g. by resetting the sync server's storage under a replica that has
|
|
113
|
+
already synced) raises `Taskchampion::OutOfSyncError` specifically,
|
|
114
|
+
not just `StorageError`/`SyncError`.
|
|
115
|
+
- A test that a connection failure (as in the existing
|
|
116
|
+
`test_remote_sync_error_includes_underlying_cause`) raises
|
|
117
|
+
`Taskchampion::SyncError` specifically, not `StorageError`.
|
|
118
|
+
|
|
119
|
+
### 5. CHANGELOG entry
|
|
120
|
+
|
|
121
|
+
Add to `[Unreleased]` (or a new `[0.10.0]` section once released):
|
|
122
|
+
|
|
123
|
+
```markdown
|
|
124
|
+
## [0.10.0] - YYYY-MM-DD
|
|
125
|
+
|
|
126
|
+
### Changed
|
|
127
|
+
- **Breaking:** sync failures now raise `Taskchampion::SyncError` or
|
|
128
|
+
`Taskchampion::OutOfSyncError` instead of `Taskchampion::StorageError`,
|
|
129
|
+
now that upstream `taskchampion` preserves the typed error variant
|
|
130
|
+
through `Replica::sync()` instead of erasing it via `anyhow::Context`.
|
|
131
|
+
Code that rescues `Taskchampion::StorageError` specifically around a
|
|
132
|
+
sync call should rescue `Taskchampion::SyncError` (or the common
|
|
133
|
+
base `Taskchampion::Error`) instead.
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Downstream: bravo / wt_engine
|
|
137
|
+
|
|
138
|
+
Once `taskchampion-rb` is bumped in `bravo`'s and `wt_engine`'s
|
|
139
|
+
`Gemfile.lock`, `Wt::SyncEventProcessor`'s failure path
|
|
140
|
+
(`engines/wt_engine/app/jobs/wt/sync_event_processor.rb`) and
|
|
141
|
+
`Tc::Sync#with_rescue` (`engines/wt_engine/app/services/tc/sync.rb`)
|
|
142
|
+
both use bare `rescue => e` / catch any `StandardError`, so they are
|
|
143
|
+
unaffected by the exception-class change — no code changes required
|
|
144
|
+
there. The benefit is purely in Sentry: `Taskchampion::OutOfSyncError`
|
|
145
|
+
and `Taskchampion::SyncError` will appear as distinct issues/fingerprints
|
|
146
|
+
instead of one generic `StorageError` bucket, without needing any
|
|
147
|
+
message-string parsing to distinguish them.
|
data/ext/taskchampion/Cargo.toml
CHANGED
|
@@ -12,7 +12,9 @@ crate-type = ["cdylib"]
|
|
|
12
12
|
[dependencies]
|
|
13
13
|
magnus = { version = "0.7", features = ["rb-sys"] }
|
|
14
14
|
rb-sys = "0.9.103"
|
|
15
|
-
|
|
15
|
+
# `bundled` compiles SQLite from source into the extension so the build does not
|
|
16
|
+
# depend on the host having libsqlite3-dev / a compatible system SQLite.
|
|
17
|
+
taskchampion = { version = "2.0", default-features = false, features = ["bundled", "server-sync", "server-gcp"] }
|
|
16
18
|
chrono = "0.4"
|
|
17
19
|
uuid = "1.0"
|
|
18
20
|
|
data/lib/taskchampion/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: taskchampion-rb
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.6
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tim Case
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-10-22 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rb_sys
|
|
@@ -51,6 +51,7 @@ files:
|
|
|
51
51
|
- docs/errors.md
|
|
52
52
|
- docs/phase_3_plan.md
|
|
53
53
|
- docs/plan.md
|
|
54
|
+
- docs/post_upstream_fix_migration.md
|
|
54
55
|
- example.md
|
|
55
56
|
- examples/basic_usage.rb
|
|
56
57
|
- examples/pending_tasks.rb
|
|
@@ -91,14 +92,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
91
92
|
requirements:
|
|
92
93
|
- - ">="
|
|
93
94
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: 3.
|
|
95
|
+
version: 3.3.0
|
|
95
96
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
97
|
requirements:
|
|
97
98
|
- - ">="
|
|
98
99
|
- !ruby/object:Gem::Version
|
|
99
100
|
version: 3.3.11
|
|
100
101
|
requirements: []
|
|
101
|
-
rubygems_version: 3.
|
|
102
|
+
rubygems_version: 3.5.22
|
|
102
103
|
signing_key:
|
|
103
104
|
specification_version: 4
|
|
104
105
|
summary: Ruby bindings for TaskChampion
|