taskwarrior-tui
taskwarrior-tui copied to clipboard
Unable to parse output error
Describe the bug
Fresh install on mac works, but after synchronising it with my arch linux through https://inthe.am opening taskwarrior-tui throws this error.
Unable to parse output of `"task" "rc.json.array=on" "rc.confirmation=off" "rc.json.depends.array=on" "rc.report.next.filter=status:pending -WAITING limit:page" "export" "next"`:
If I switch to an empty context it doesn't complain.
To Reproduce
- [ ] Reproducible using the test data located here: https://github.com/kdheepak/taskwarrior-testdata/
Steps to reproduce the behavior:
Environment (please complete the following information):
- Operating System:
Mac 10.15.7 - Installation:
homebrew - taskwarrior-tui version:
0.18.5 - task version:
2.6.1
Additional context and information
Log: 2022-02-06 19:46:20 | INFO | src/app.rs:1633 | Running `"task" "rc.json.array=on" "rc.confirmation=off" "rc.json.depends.array=on" "rc.report.next.filter=status:pending -WAITING limit:page" "export" "next"
I don't know if I'm missing something. Anything else you need to debug this just let me know :) Works fine on my arch linux install, so I'm a bit lost with this error ๐
Can you share the output of the following?
task rc.json.array=on rc.confirmation=off rc.json.depends.array=on rc.report.next.filter=status:pending -WAITING export next
Please anonymize the data before sharing. If you are not able to share this, can you try to reproduce the problem with taskwarrior-testdata?
I've been having an identical problem but with a slightly different setup:
- Not reproducible with data in taskwarrior-testdata, but I've anonymized and attached my task db that is reproducing the problem
- OS: Arch
- Installation: AUR via yay - https://archlinux.org/packages/community/x86_64/taskwarrior-tui/
- taskwarrior-tui version: 0.18.5-1
- task version: 2.6.1-1
Repro Data
[
{
"id": 36,
"description": "anon description",
"due": "20220208T080000Z",
"entry": "20220204T232816Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220205T005447Z",
"priority": "H",
"project": "experiments",
"status": "pending",
"uuid": "2fbef0d6-97c4-4388-8107-e2ea6e1ca806",
"tags": [
"work"
],
"urgency": 24.8024
},
{
"id": 34,
"description": "anon description",
"due": "20220207T075959Z",
"entry": "20220203T204348Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220203T205443Z",
"priority": "M",
"project": "data-warehouse",
"status": "pending",
"uuid": "09b1bb02-e987-4368-beb0-f76d24867709",
"tags": [
"work"
],
"urgency": 14.265
},
{
"id": 39,
"description": "anon description",
"due": "20220209T060000Z",
"entry": "20220206T015738Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040520Z",
"project": "packing",
"status": "pending",
"uuid": "774b61b0-8082-4beb-a9f3-120ee382eae3",
"tags": [
"nomad"
],
"urgency": 10.3778
},
{
"id": 29,
"description": "anon description",
"due": "20220209T170000Z",
"entry": "20220126T023135Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220203T185441Z",
"status": "pending",
"uuid": "ad35a643-8714-43fa-8c39-b4cbb53dc33f",
"tags": [
"work"
],
"urgency": 9.22858
},
{
"id": 26,
"description": "anon description",
"entry": "20220119T030422Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031141Z",
"priority": "H",
"project": "florida-move",
"status": "pending",
"uuid": "1cc790ba-104d-43a8-9bc8-c3c45b5b8976",
"tags": [
"nomad"
],
"urgency": 7.90959
},
{
"id": 55,
"description": "anon description",
"entry": "20220206T020412Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040522Z",
"priority": "H",
"project": "packing",
"status": "pending",
"uuid": "2b185374-4ab9-4781-8e45-498fbbd66d4e",
"tags": [
"nomad"
],
"urgency": 7.81096
},
{
"id": 9,
"description": "anon description",
"due": "20220220T080000Z",
"entry": "20220106T001116Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220203T185433Z",
"project": "benefits",
"status": "pending",
"uuid": "4c96da64-bb6e-4bc5-bd14-e1246ba5636d",
"tags": [
"work"
],
"urgency": 5.48103
},
{
"id": 28,
"description": "anon description",
"entry": "20220125T233626Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220204T232907Z",
"priority": "H",
"project": "experiments",
"status": "pending",
"uuid": "0da7ff89-7952-4a47-921c-1f09f1a43d10",
"tags": [
"work"
],
"depends": [
"2fbef0d6-97c4-4388-8107-e2ea6e1ca806"
],
"urgency": 2.87123
},
{
"id": 15,
"description": "anon description",
"entry": "20220119T023128Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031136Z",
"project": "wrangler",
"status": "pending",
"uuid": "88530423-6089-41fe-9914-ed7a643a8089",
"annotations": [
{
"entry": "20220119T023327Z",
"description": "anon description"
}
],
"tags": [
"nomad"
],
"urgency": 2.70959
},
{
"id": 4,
"description": "anon description",
"entry": "20210608T055622Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20210729T220056Z",
"status": "pending",
"uuid": "29d8f541-5e69-443f-9f7d-e146366cbc8b",
"tags": [
"home"
],
"urgency": 2.14247
},
{
"id": 5,
"description": "anon description",
"entry": "20210611T173014Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20210729T220059Z",
"status": "pending",
"uuid": "898f9c77-48d4-40dc-8333-db04e3d3d05b",
"tags": [
"home"
],
"urgency": 2.12603
},
{
"id": 6,
"description": "anon description",
"entry": "20210706T170645Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20211108T195856Z",
"status": "pending",
"uuid": "f618ba7c-f1f8-4aeb-b8ba-44d8420c97af",
"tags": [
"home"
],
"urgency": 1.98904
},
{
"id": 12,
"description": "anon description",
"entry": "20220111T232637Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220112T175546Z",
"project": "andrelytics",
"status": "pending",
"uuid": "072bff7e-cf17-4f92-a577-40812817eb5d",
"tags": [
"work"
],
"urgency": 1.94795
},
{
"id": 13,
"description": "anon description",
"entry": "20220118T231714Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T001214Z",
"project": "andrelytics",
"status": "pending",
"uuid": "efe115cc-49ec-43dc-976c-82274cf0357f",
"tags": [
"work"
],
"urgency": 1.90959
},
{
"id": 14,
"description": "anon description",
"entry": "20220119T022930Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031142Z",
"project": "rv-loan",
"status": "pending",
"uuid": "c61b9c69-d788-4692-abab-d64792d5692a",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 16,
"description": "anon description",
"entry": "20220119T023135Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031132Z",
"project": "wrangler",
"status": "pending",
"uuid": "8c56499b-2274-4e7d-8879-6652259581f0",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 17,
"description": "anon description",
"entry": "20220119T023204Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031140Z",
"project": "wrangler",
"status": "pending",
"uuid": "dd3565d9-9533-4970-b469-064e35311c41",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 18,
"description": "anon description",
"entry": "20220119T023225Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031133Z",
"project": "wrangler",
"status": "pending",
"uuid": "a9e974a0-de8a-420c-91df-279b78276ec2",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 19,
"description": "anon description",
"entry": "20220119T023244Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031133Z",
"project": "wrangler",
"status": "pending",
"uuid": "912f6447-73d2-43cb-bff4-39bfd0cd87fa",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 20,
"description": "anon description",
"entry": "20220119T023304Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031138Z",
"project": "wrangler",
"status": "pending",
"uuid": "62d0c018-098a-4db3-b911-a7d1441d9379",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 21,
"description": "anon description",
"entry": "20220119T024116Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031134Z",
"project": "wrangler",
"status": "pending",
"uuid": "292a78f7-01c6-468a-a4dc-c5bb65a7893c",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 22,
"description": "anon description",
"entry": "20220119T024255Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031140Z",
"project": "trip-planning",
"status": "pending",
"uuid": "c8564ad3-6896-40c7-9653-0cb5d2399593",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 23,
"description": "anon description",
"entry": "20220119T024308Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031134Z",
"project": "trip-planning",
"status": "pending",
"uuid": "23b03a88-31c2-4fcb-ab00-ea101d724eeb",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 24,
"description": "anon description",
"entry": "20220119T024329Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031136Z",
"project": "florida-move",
"status": "pending",
"uuid": "ef5564de-c632-4cb0-a871-2d0d9e556a46",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 25,
"description": "anon description",
"entry": "20220119T025400Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220119T031138Z",
"project": "florida-move",
"status": "pending",
"uuid": "34a8e15f-74b6-469b-9c32-78cb6e04014d",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 27,
"description": "anon description",
"entry": "20220119T030539Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T015718Z",
"project": "packing",
"status": "pending",
"uuid": "e6cd37c1-75d7-4de0-9f07-0d803385d608",
"tags": [
"nomad"
],
"urgency": 1.90959
},
{
"id": 30,
"description": "anon description",
"entry": "20220126T224859Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220126T233631Z",
"project": "andrelytics",
"status": "pending",
"uuid": "d2d4030b-fa2a-4e17-9d1e-e0cec7c44c2b",
"tags": [
"work"
],
"urgency": 1.86575
},
{
"id": 31,
"description": "anon description",
"entry": "20220126T225622Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220126T233629Z",
"project": "andrelytics",
"status": "pending",
"uuid": "68b3e1d8-3f8f-494a-b9ec-a672bce1b792",
"tags": [
"work"
],
"urgency": 1.86575
},
{
"id": 37,
"description": "anon description",
"entry": "20220206T015635Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040517Z",
"project": "florida-move",
"status": "pending",
"uuid": "af2dcf00-19b4-4c08-88ad-f11eac0804c9",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 38,
"description": "anon description",
"entry": "20220206T015709Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040516Z",
"project": "packing",
"status": "pending",
"uuid": "b6a8d341-a79b-41e7-a777-83b21394424c",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 40,
"description": "anon description",
"entry": "20220206T015808Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040515Z",
"project": "packing",
"status": "pending",
"uuid": "9e6b0397-9a59-4e17-8a56-2b1af4f8e689",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 42,
"description": "anon description",
"entry": "20220206T015836Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040516Z",
"project": "packing",
"status": "pending",
"uuid": "1ff2e592-7bfe-4679-a577-c2ffda0b5c00",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 43,
"description": "anon description",
"entry": "20220206T015846Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040521Z",
"project": "packing",
"status": "pending",
"uuid": "ff2eea0b-6d61-4714-8293-476f661c26f8",
"tags": [
"nomad"
],
"depends": [
"[\"5cb408df-41a9-411d-bc6c-c7da91621495\"]"
],
"urgency": 1.81096
},
{
"id": 44,
"description": "anon description",
"entry": "20220206T015904Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040521Z",
"project": "finalstuff",
"status": "pending",
"uuid": "5cb408df-41a9-411d-bc6c-c7da91621495",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 45,
"description": "anon description",
"entry": "20220206T015944Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040512Z",
"project": "packing",
"status": "pending",
"uuid": "ca8fc879-50d6-4d16-998e-2f88d7b19942",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 46,
"description": "anon description",
"entry": "20220206T020000Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040514Z",
"project": "packing",
"status": "pending",
"uuid": "07e5065b-1245-44eb-b557-07f8f143c8f0",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 47,
"description": "anon description",
"entry": "20220206T020009Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040523Z",
"project": "packing",
"status": "pending",
"uuid": "44961990-b9dd-4211-9743-a5b43219c86e",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 48,
"description": "anon description",
"entry": "20220206T020030Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040513Z",
"project": "packing",
"status": "pending",
"uuid": "a6306a03-fb8f-4025-abaa-bae4efa6a420",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 49,
"description": "anon description",
"entry": "20220206T020044Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040514Z",
"project": "packing",
"status": "pending",
"uuid": "b9c74234-cac8-4035-8209-510a372ab276",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 50,
"description": "anon description",
"entry": "20220206T020105Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040524Z",
"project": "packing",
"status": "pending",
"uuid": "2e57932b-b764-4bf2-8cfc-6c007a386309",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 51,
"description": "anon description",
"entry": "20220206T020128Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040518Z",
"project": "packing",
"status": "pending",
"uuid": "4f6f2fd7-4b1f-46e1-841e-2bd98a6c362c",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 52,
"description": "anon description",
"entry": "20220206T020218Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040520Z",
"project": "packing",
"status": "pending",
"uuid": "e86f0797-f88b-4c0e-81b1-12b99d2cec4b",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 53,
"description": "anon description",
"entry": "20220206T020226Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040512Z",
"project": "packing",
"status": "pending",
"uuid": "5c8359ba-d01c-48bf-aa5f-e5850bba57a0",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 54,
"description": "anon description",
"entry": "20220206T020238Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040518Z",
"project": "packing",
"status": "pending",
"uuid": "bbe42f73-8614-4ee1-a355-c7a3b2c29db2",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 56,
"description": "anon description",
"entry": "20220206T021430Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040523Z",
"project": "packing",
"status": "pending",
"uuid": "9bc3e0fe-3bf2-4e00-9294-4c527cf39531",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 61,
"description": "anon description",
"entry": "20220206T021626Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040519Z",
"project": "wrangler",
"status": "pending",
"uuid": "571e0be6-ea1e-4cd8-a25c-0b8af4e6158a",
"tags": [
"nomad"
],
"urgency": 1.81096
},
{
"id": 7,
"description": "anon description",
"entry": "20211130T213659Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220106T172946Z",
"priority": "L",
"project": "airflow",
"status": "pending",
"uuid": "73081f36-9003-4892-8ed6-701f5c177bfd",
"tags": [
"work"
],
"urgency": 1.37808
},
{
"id": 10,
"description": "anon description",
"entry": "20220106T230107Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220106T233017Z",
"priority": "L",
"project": "thoughts",
"status": "pending",
"uuid": "2d35d194-e352-4cf9-af1d-4b0959b74b02",
"tags": [
"work"
],
"urgency": 1.17534
},
{
"id": 11,
"description": "anon description",
"entry": "20220107T002547Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220108T002925Z",
"priority": "L",
"project": "experiments",
"status": "pending",
"uuid": "ab73c4fc-d1c5-4bcb-98e7-41e35230ace8",
"tags": [
"work"
],
"urgency": 1.17534
},
{
"id": 8,
"description": "anon description",
"entry": "20220104T004716Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220104T005624Z",
"status": "pending",
"uuid": "fe509ae2-5a9b-4ceb-be09-2159212d3f72",
"tags": [
"home"
],
"urgency": 0.991781
},
{
"id": 35,
"description": "anon description",
"entry": "20220204T232105Z",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220205T005446Z",
"status": "pending",
"uuid": "57002a39-d8bf-48a1-a36e-ca3ac150aed9",
"tags": [
"work"
],
"urgency": 0.816438
}
]
@TylerLubeck I tried with the following context, but still didn't see an error with your data.
context.foo.read=+home
context.foo.write=
context=foo
I tried the following:
mkdir /tmp/repro
cd /tmp/repro
HOME=$(pwd)
task import json # where json contains the json you shared
taskwarrior-tui
Fascinating @bradyt - can confirm, that flow works fine.
Try with context.foo.read=+nomad and the error appears
Excellent! I can reproduce here now, I will see if I can help make the reproduce smaller.
I stepped through and checked each task individually. This caused the issue:
[{"id": 43, "description": "anon description", "entry": "20220206T015846Z", "intheamtrelloboardid": "anontrelloboardid", "intheamtrelloid": "anontrelloid", "modified": "20220206T040521Z", "project": "packing", "status": "pending", "uuid": "ff2eea0b-6d61-4714-8293-476f661c26f8", "tags": ["nomad"], "depends": ["[\"5cb408df-41a9-411d-bc6c-c7da91621495\"]"], "urgency": 1.81096}]
When I remove the depends key and value and then reimport the blob, it works again.
Helper script:
#!/usr/bin/env python
import json
import sys
import subprocess
import shlex
if __name__ == '__main__':
filename = sys.argv[1]
with open(filename, 'r') as f:
data = json.load(f)
for i, task in enumerate(data):
with open(f'tasks/{i}.json', 'w') as f:
json.dump([task], f)
subprocess.run(shlex.split("rm -rf .task .cache .local"))
subprocess.run(shlex.split(f"task import tasks/{i}.json"))
print(f"Imported task: {json.dumps([task])}")
input("Check taskwarrior-tui, then press enter to continue")
Oh great, you narrowed it down.
Ah, there's a bug at Taskwarrior that creates that bad depends data. There's a fix committed, but they haven't created a release yet. That depends data will get garbled when it makes a roundtrip over current Taskserver stable 1.1.0.
I think the problem might be with inthe.am malformatting the depends key on sync - when I create some dependencies myself, no problems.
Works fine:
[
{"id":1,"description":"anon description","entry":"20220206T015904Z","intheamtrelloboardid":"anontrelloboardid","intheamtrelloid":"anontrelloid","modified":"20220206T040521Z","project":"finalstuff","status":"pending","uuid":"5cb408df-41a9-411d-bc6c-c7da91621495","tags":["nomad"],"urgency":9.81096},
{"id":2,"description":"test","entry":"20220208T214343Z","modified":"20220208T214343Z","status":"pending","uuid":"02aa9556-79d0-4b41-a7c9-395f7966ea37","urgency":0},
{"id":3,"description":"other test","entry":"20220208T214352Z","modified":"20220208T214352Z","status":"pending","uuid":"65a109d6-a439-4c88-a765-d8802f9b122a","depends":["5cb408df-41a9-411d-bc6c-c7da91621495"],"urgency":-5}
]
You beat me to it - that's what I get for sending partial thoughts instead of collecting them all at once.
Sounds like the fix is "wait for inthe.am to upgrade to the yet-to-be-released taskserver"? Or can I build the unreleased taskwarrior and bingo-bango problem solved?
I am using unreleased Taskwarrior. Before the commit was added, I was staying at 2.5.3. I have some GitHub projects that I'm holding at 2.5.3 until fix is released. Unfortunately, taskwarrior-tui does not support 2.5.3, I think especially newer Taskwarrior has convenient export methods.
Related: https://github.com/kdheepak/taskwarrior-tui/issues/358
The strategy at the commit at Taskwarrior was introduced because providers of Taskserver may not update quickly to a release of newer Taskserver.
Note:
Indeed, this might be a good course of action, given that upgrading clients is generally easier than upgrading the server ๐ -- https://github.com/GothenburgBitFactory/taskwarrior/issues/2689#issuecomment-1013947635
Here's a comment suggesting to release a new Taskwarrior:
- https://github.com/GothenburgBitFactory/taskwarrior/pull/2717#issuecomment-1028426848
@bradyt thanks for digging into this. I made this change:
https://github.com/kdheepak/taskwarrior-tui/blob/1ee07540d8bc58d66165f06f06eb3df4cee815c9/src/app.rs#L1615
Shouldn't that resolve this issue? Or am I missing something?
@TylerLubeck can you try the latest release of taskwarrior-tui? You can download precompiled releases from here: https://github.com/kdheepak/taskwarrior-tui/releases/tag/v0.19.1
@kdheepak this isn't strings versus arrays, like "a,b" vs ["a","b"], this is data garbled by stable Taskserver, and not caught and handled by stable Taskwarrior, data like "[\"a\",\"b\"]".
The json.depends.array=on is for Taskwarrior's similar usage of JSON in export, for 2.5.3 to prefer exporting depends as ["a","b"] instead of "a,b". But the bad data from Taskserver, the export can't fix that.
I think I meant to ask you if the error could highlight which particular task was the first to throw an error, but I have some vague memory that you pointed out where that would be difficult with current implementation.
If I understand correctly, you can't throw the error to be caught in the UI, while you're applying methods to each task in turn.
I'm on 0.19.1 by the way.
this is data garbled by stable Taskserver
Ah, I see. Thanks for clarifying that.
For error handling, the parsing happens through serde: https://github.com/kdheepak/task-hookrs/blob/6f04ee63c0d58bb0fe9bd6563457df52b5b5f84d/src/task.rs#L246-L262
And when it fails to parse, taskwarrior-tui just prints out a generic error message:
https://github.com/kdheepak/taskwarrior-tui/blob/1ee07540d8bc58d66165f06f06eb3df4cee815c9/src/app.rs#L1650-L1662
data.as_bytes() is the json data from task export and import(data.as_bytes()) returns a Vec<Task>. If import(data.as_bytes()) fails to convert to a valid Vec<Task>, then the else block is executed.
I'd have to dig into serde to see if we can provide useful information back about where it failed to parse. The alternative is that when it fails, in taskwarrior-tui I could try to special case this particular issue.
If we converted all instances of data that was of the format "[\"a\",\"b\"]" to something that is of the format ["a","b"], the problem would go away. Is my understanding correct?
If we converted all instances of data that was of the format
"[\"a\",\"b\"]"to something that is of the format["a","b"], the problem would go away. Is my understanding correct?
๐คฏ
That's a very interesting idea. Seems worth a try. I'm not too sure it will cover 100% of the manifestations of the depends bug, like I wonder if it's possible to end up with "[\"[\\\"a\\\"]\"]" or something.
I made a fix in the fix-task-2.5.x-taskserver-issue branch and it appears to work for me now, i.e. with the following task export
$ task rc.verbose:override=false export next
[
{"id":2,"description":"anon description","entry":"20220206T015846Z","estimate":"30","intheamtrelloboardid":"anontrelloboardid","intheamtrelloid":"anontrelloid","modified":"20220206T040521Z","project":"packing","status":"pending","uuid":"ff2eea0b-6d61-4714-8293-476f661c26f8","tags":["nomad"],"depends":["[\"b3f9e124-64c2-4dc0-8351-9b2200e2863e\"]"],"urgency":2.8},
{"id":1,"description":"Filter tasks using '\/'","entry":"20201021T065245Z","estimate":"30","modified":"20201021T065245Z","status":"pending","uuid":"b3f9e124-64c2-4dc0-8351-9b2200e2863e","urgency":1.8}
]
taskwarrior-tui works for me:
โญTask|Projects|Calendarโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ ID Age Deps Project Tag Description Urg โ
โ โ
โโข 1 3d 2 packing nomad anon description 2.80โ
โ 2 1y Filter tasks using '/' 1.80โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญTask 1โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ โ
โName Value โ
โ--------------------- -------------------------------------------------- โ
โID 1 โ
โDescription anon description โ
โStatus Pending โ
โProject packing โ
โEntered 2022-02-05 18:58:46 (3d) โ
โLast modified 2022-02-05 21:05:21 (3d) โ
โTags nomad โ
โVirtual tags ORPHAN PENDING PROJECT READY TAGGED UDA UNBLOCKED โ
โUUID ff2eea0b-6d61-4714-8293-476f661c26f8 โ
โUrgency 2.8 โ
โEst 30 โ
โ[intheamtrelloboardid anontrelloboardid] โ
โ[intheamtrelloid anontrelloid] โ
โ โ
โ----------------- ------ - ---- - ------ โ
โ project 1 * 1 = 1 โ
โ UDA priority. 1 * 1.8 = 1.8 โ
โ ------ โ
โ 2.8 โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โ โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
โญFilter Tasksโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฎ
โ(status:pending or status:waiting) โ
โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ
@bradyt, @TylerLubeck and @Sergih28, would you be able to test it out? I don't use intheam or taskserver, so I'm not sure what possible invalid dependency formats are possible.
Currently, I'm assuming that the depends field in the json is an array with one element, and that one element is a string that can be parsed as an array, and I replace value of the depends field with the inner array of the value, i.e.:
{
// ...
depends: ["[\"b3f9e124-64c2-4dc0-8351-9b2200e2863e\"]"],
// ...
}
becomes:
{
// ...
depends: ["b3f9e124-64c2-4dc0-8351-9b2200e2863e"],
// ...
}
Actually, I'm not sure this fix works. I was just messing around with the export and I'm able to export data that looks like this:
[
{
"id": 1,
"description": "anon description",
"entry": "20220206T015846Z",
"estimate": "30",
"intheamtrelloboardid": "anontrelloboardid",
"intheamtrelloid": "anontrelloid",
"modified": "20220206T040521Z",
"project": "packing",
"status": "pending",
"uuid": "ff2eea0b-6d61-4714-8293-476f661c26f8",
"tags": ["nomad"],
"depends": [
" \"58402953-65cb-4420-aad9-2ea1ff1ff281\"]",
"[\"b3f9e124-64c2-4dc0-8351-9b2200e2863e\"",
"[\"b3f9e124-64c2-4dc0-8351-9b2200e2863e\", \"58402953-65cb-4420-aad9-2ea1ff1ff281\"]"
],
"urgency": 2.8
},
{
"id": 2,
"description": "Filter tasks using '/'",
"entry": "20201021T065245Z",
"estimate": "30",
"modified": "20201021T065245Z",
"status": "pending",
"uuid": "b3f9e124-64c2-4dc0-8351-9b2200e2863e",
"urgency": 1.8
},
{
"id": 3,
"description": "tfsadfsad",
"entry": "20220209T055831Z",
"estimate": "30",
"modified": "20220209T055831Z",
"status": "pending",
"uuid": "58402953-65cb-4420-aad9-2ea1ff1ff281",
"urgency": 1.8
}
]
So even if taskwarrior-tui is able to initially read the data, running any task command that modifies the invalid depends field creates garbage data.