kd-cli 2.8.0__tar.gz → 2.8.1__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 (86) hide show
  1. {kd_cli-2.8.0/kd_cli.egg-info → kd_cli-2.8.1}/PKG-INFO +1 -1
  2. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/articles.py +1 -1
  3. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/youtrack.py +4 -2
  4. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cache.py +1 -0
  5. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/article/__init__.py +1 -0
  6. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/issue/__init__.py +2 -0
  7. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/comment.py +2 -1
  8. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/CHANGELOG.md +9 -0
  9. {kd_cli-2.8.0 → kd_cli-2.8.1/kd_cli.egg-info}/PKG-INFO +1 -1
  10. {kd_cli-2.8.0 → kd_cli-2.8.1}/pyproject.toml +1 -1
  11. {kd_cli-2.8.0 → kd_cli-2.8.1}/LICENSE +0 -0
  12. {kd_cli-2.8.0 → kd_cli-2.8.1}/MANIFEST.in +0 -0
  13. {kd_cli-2.8.0 → kd_cli-2.8.1}/README.md +0 -0
  14. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/__init__.py +0 -0
  15. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/__init__.py +0 -0
  16. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/http.py +0 -0
  17. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/hub.py +0 -0
  18. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/saved_queries.py +0 -0
  19. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/api/tags.py +0 -0
  20. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/article_marker.py +0 -0
  21. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/auth.py +0 -0
  22. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/__init__.py +0 -0
  23. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/__init__.py +0 -0
  24. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/command_base.py +0 -0
  25. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/command_parser.py +0 -0
  26. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/confirm.py +0 -0
  27. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/namespaces.py +0 -0
  28. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/core/option_registry.py +0 -0
  29. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/input.py +0 -0
  30. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/main.py +0 -0
  31. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/__init__.py +0 -0
  32. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/alias/__init__.py +0 -0
  33. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/cache/__init__.py +0 -0
  34. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/init.py +0 -0
  35. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/primer/__init__.py +0 -0
  36. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/project/__init__.py +0 -0
  37. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/query/__init__.py +0 -0
  38. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/release_notes.py +0 -0
  39. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/search/__init__.py +0 -0
  40. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/system/__init__.py +0 -0
  41. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/tag/__init__.py +0 -0
  42. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/time/__init__.py +0 -0
  43. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/namespaces/user/__init__.py +0 -0
  44. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/output.py +0 -0
  45. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/cli/tree.py +0 -0
  46. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/client.py +0 -0
  47. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/config.py +0 -0
  48. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/config_read.py +0 -0
  49. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/config_schema.py +0 -0
  50. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/connection.py +0 -0
  51. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/debug.py +0 -0
  52. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/exceptions.py +0 -0
  53. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/history.py +0 -0
  54. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/locking.py +0 -0
  55. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/__init__.py +0 -0
  56. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/article.py +0 -0
  57. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/assist.py +0 -0
  58. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/attachment.py +0 -0
  59. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/common.py +0 -0
  60. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/issue.py +0 -0
  61. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/project.py +0 -0
  62. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/saved_query.py +0 -0
  63. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/search.py +0 -0
  64. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/tag.py +0 -0
  65. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/tag_entities.py +0 -0
  66. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/user.py +0 -0
  67. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/models/work_item.py +0 -0
  68. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/operating_guide.py +0 -0
  69. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/primer.py +0 -0
  70. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/query_parser.py +0 -0
  71. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/release_notes.py +0 -0
  72. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/__init__.py +0 -0
  73. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/command-synonyms.yaml +0 -0
  74. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/config-template.yaml +0 -0
  75. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/error-messages.yaml +0 -0
  76. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/operating-guide.md +0 -0
  77. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/primers/__init__.py +0 -0
  78. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/primers/hitl.yaml +0 -0
  79. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/resources/sdlc-doctrine.md +0 -0
  80. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd/sdlc.py +0 -0
  81. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd_cli.egg-info/SOURCES.txt +0 -0
  82. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd_cli.egg-info/dependency_links.txt +0 -0
  83. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd_cli.egg-info/entry_points.txt +0 -0
  84. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd_cli.egg-info/requires.txt +0 -0
  85. {kd_cli-2.8.0 → kd_cli-2.8.1}/kd_cli.egg-info/top_level.txt +0 -0
  86. {kd_cli-2.8.0 → kd_cli-2.8.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kd-cli
3
- Version: 2.8.0
3
+ Version: 2.8.1
4
4
  Summary: Knowledge Dispatcher for issue trackers and knowledge bases
5
5
  Author: Sergiy Gladkyy
6
6
  License-Expression: MIT
@@ -77,7 +77,7 @@ _ARTICLE_DETAIL_FIELDS = str(
77
77
  )
78
78
 
79
79
 
80
- _ARTICLE_COMMENT_FIELDS = "id,text,pinned,author(id,login,name),created,updated"
80
+ _ARTICLE_COMMENT_FIELDS = "id,text,deleted,pinned,author(id,login,name),created,updated"
81
81
  _ARTICLE_ATTACHMENT_FIELDS = (
82
82
  "id,name,size,mimeType,extension,author(id,login,name),created,updated,url"
83
83
  )
@@ -127,7 +127,9 @@ _ISSUE_RICH_FIELDS = str(
127
127
  project=FieldSet("id", "name", "shortName"),
128
128
  reporter=FieldSet("id", "login", "name"),
129
129
  customFields=FieldSet("name", value=FieldSet("name")),
130
- comments=FieldSet("id", "text", "created", author=FieldSet("id", "login", "name")),
130
+ comments=FieldSet(
131
+ "id", "text", "deleted", "created", author=FieldSet("id", "login", "name")
132
+ ),
131
133
  links=FieldSet(
132
134
  "id",
133
135
  "direction",
@@ -140,7 +142,7 @@ _ISSUE_RICH_FIELDS = str(
140
142
  tags=FieldSet("id", "name"),
141
143
  )
142
144
  )
143
- _COMMENT_FIELDS = "id,text,author(id,login,name),created,updated"
145
+ _COMMENT_FIELDS = "id,text,deleted,author(id,login,name),created,updated"
144
146
  _WORK_ITEM_FIELDS = (
145
147
  "id,duration(minutes),text,type(id,name,autoAttached),author(id,login,name),date"
146
148
  )
@@ -2150,6 +2150,7 @@ def _issue_to_cache_payload(
2150
2150
  "author": c.author.name if c.author else "",
2151
2151
  "created": c.created,
2152
2152
  "text": c.text,
2153
+ "deleted": c.deleted,
2153
2154
  }
2154
2155
  for c in (issue.comments or [])
2155
2156
  ]
@@ -836,6 +836,7 @@ class ArticleCommentListCommand(Command):
836
836
  "text": c.text,
837
837
  "pinned": c.pinned,
838
838
  "created": c.created,
839
+ "deleted": c.deleted,
839
840
  }
840
841
  for c in comments
841
842
  ]
@@ -176,6 +176,7 @@ def _issue_to_detail(issue: Issue, sections: set[str] | None = None) -> dict[str
176
176
  "author": c.author.name if c.author else "",
177
177
  "text": c.text,
178
178
  "created": c.created,
179
+ "deleted": c.deleted,
179
180
  }
180
181
  for c in issue.comments[-5:]
181
182
  ]
@@ -643,6 +644,7 @@ class CommentListCommand(Command):
643
644
  "author": c.author.name if c.author else "",
644
645
  "text": c.text,
645
646
  "created": c.created,
647
+ "deleted": c.deleted,
646
648
  }
647
649
  for c in comments
648
650
  ]
@@ -12,7 +12,8 @@ class Comment(IdEntity):
12
12
 
13
13
  model_config = ConfigDict(populate_by_name=True)
14
14
 
15
- text: str
15
+ text: str | None = None
16
+ deleted: bool = False
16
17
  author: NamedEntity | None = None
17
18
  created: int | None = None
18
19
  updated: int | None = None
@@ -4,6 +4,15 @@ All notable changes to kd-cli are recorded here. The project follows [Semantic V
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [2.8.1] — 2026-05-08
8
+
9
+ ### Fixed
10
+ - `kd /issue show` and `kd /issue/comment list` no longer crash on
11
+ tombstoned (soft-deleted) comments. Structured output surfaces
12
+ `text: null, deleted: true` for tombstoned rows so operators can
13
+ see the row exists without fabricating content. Article comments
14
+ share the same fix (KDCLI-192).
15
+
7
16
  ## [2.8.0] — 2026-05-07
8
17
 
9
18
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kd-cli
3
- Version: 2.8.0
3
+ Version: 2.8.1
4
4
  Summary: Knowledge Dispatcher for issue trackers and knowledge bases
5
5
  Author: Sergiy Gladkyy
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kd-cli"
7
- version = "2.8.0"
7
+ version = "2.8.1"
8
8
  description = "Knowledge Dispatcher for issue trackers and knowledge bases"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes