netizen-cli 0.11.2__tar.gz → 0.11.3__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 (253) hide show
  1. {netizen_cli-0.11.2/netizen_cli.egg-info → netizen_cli-0.11.3}/PKG-INFO +1 -1
  2. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/__init__.py +1 -1
  3. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/admin.css +44 -6
  4. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/admin.js +771 -116
  5. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/chat-picker.css +1 -1
  6. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/chat-picker.js +1 -1
  7. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/identity.js +1 -2
  8. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/index.html +51 -20
  9. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/login.html +1 -0
  10. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/static/login.js +4 -1
  11. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/web.py +42 -9
  12. {netizen_cli-0.11.2 → netizen_cli-0.11.3/netizen_cli.egg-info}/PKG-INFO +1 -1
  13. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/pyproject.toml +1 -1
  14. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/skills/netizen-user-guide/references/user-guide.md +27 -4
  15. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/MANIFEST.in +0 -0
  16. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/README.md +0 -0
  17. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/_build.py +0 -0
  18. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/config.example.yaml +0 -0
  19. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/__main__.py +0 -0
  20. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/account_rate_limits.py +0 -0
  21. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/__init__.py +0 -0
  22. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/auth.py +0 -0
  23. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/credentials.py +0 -0
  24. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/errors.py +0 -0
  25. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/feishu.py +0 -0
  26. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/login.py +0 -0
  27. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/port_config.py +0 -0
  28. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/presentation.py +0 -0
  29. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/queries.py +0 -0
  30. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/transport.py +0 -0
  31. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/admin/users.py +0 -0
  32. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/bindings.py +0 -0
  33. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/builtin_skills.py +0 -0
  34. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/__init__.py +0 -0
  35. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/callbacks.py +0 -0
  36. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/chat_target.py +0 -0
  37. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/controls.py +0 -0
  38. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/defaults.py +0 -0
  39. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/fork.py +0 -0
  40. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/model_info.py +0 -0
  41. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/pagination.py +0 -0
  42. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/questions.py +0 -0
  43. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/reply.py +0 -0
  44. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/scheduled.py +0 -0
  45. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cards/usage.py +0 -0
  46. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/__init__.py +0 -0
  47. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/completion_mentions.py +0 -0
  48. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/input_preparation.py +0 -0
  49. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/messages.py +0 -0
  50. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/ports.py +0 -0
  51. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/question_inputs.py +0 -0
  52. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/reactions.py +0 -0
  53. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/reply_presenter.py +0 -0
  54. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel/topics.py +0 -0
  55. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/channel_app.py +0 -0
  56. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/chat_avatars.py +0 -0
  57. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/chat_targets.py +0 -0
  58. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli.py +0 -0
  59. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_data.py +0 -0
  60. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_packages.py +0 -0
  61. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_services.py +0 -0
  62. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_setup.py +0 -0
  63. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_update.py +0 -0
  64. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_update_restore.py +0 -0
  65. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/cli_update_worker.py +0 -0
  66. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/codex_runtime.py +0 -0
  67. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/completion_mention.py +0 -0
  68. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/database_migrations.py +0 -0
  69. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/defaults/__init__.py +0 -0
  70. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/defaults/models.py +0 -0
  71. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/defaults/service.py +0 -0
  72. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/defaults/store.py +0 -0
  73. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/deployment/__init__.py +0 -0
  74. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/deployment/restart_worker.py +0 -0
  75. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/deployment/update_executor.py +0 -0
  76. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/deployment/update_protocol.py +0 -0
  77. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/domain.py +0 -0
  78. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/error_messages.py +0 -0
  79. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/experience.py +0 -0
  80. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/feishu_app_onboarding.py +0 -0
  81. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/feishu_app_permissions.py +0 -0
  82. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/feishu_links.py +0 -0
  83. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/git_status.py +0 -0
  84. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/image_inputs.py +0 -0
  85. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/instance.py +0 -0
  86. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/lark_app.py +0 -0
  87. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/main.py +0 -0
  88. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/__init__.py +0 -0
  89. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/blocking_io.py +0 -0
  90. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/chat_directory.py +0 -0
  91. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/chat_labels.py +0 -0
  92. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/coordination.py +0 -0
  93. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/service.py +0 -0
  94. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/management/updates.py +0 -0
  95. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/markdown_images.py +0 -0
  96. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/message_content.py +0 -0
  97. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/message_history.py +0 -0
  98. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/message_preparation.py +0 -0
  99. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/message_projection.py +0 -0
  100. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/migrations/__init__.py +0 -0
  101. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/migrations/schema.py +0 -0
  102. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/migrations/v14.py +0 -0
  103. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/model_settings.py +0 -0
  104. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/package_resources.py +0 -0
  105. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/pagination.py +0 -0
  106. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/partial_answers.py +0 -0
  107. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/projects.py +0 -0
  108. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/prompt_projection.py +0 -0
  109. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/quoted_context.py +0 -0
  110. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/result_images.py +0 -0
  111. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/runtime/__init__.py +0 -0
  112. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/runtime/contracts.py +0 -0
  113. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/runtime/name_writes.py +0 -0
  114. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/runtime/thread_naming.py +0 -0
  115. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/__init__.py +0 -0
  116. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/mcp.py +0 -0
  117. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/models.py +0 -0
  118. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/scheduler.py +0 -0
  119. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/service.py +0 -0
  120. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/schedules/store.py +0 -0
  121. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/sdk_gap_adapter.py +0 -0
  122. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/service_launcher.py +0 -0
  123. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/session_settings.py +0 -0
  124. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/settings.py +0 -0
  125. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/skill_references.py +0 -0
  126. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/task_text.py +0 -0
  127. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/terminal_cleanup.py +0 -0
  128. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/turn_activity.py +0 -0
  129. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/turn_files.py +0 -0
  130. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/turn_patch_children.py +0 -0
  131. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/turn_plan_observer.py +0 -0
  132. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli/user_questions.py +0 -0
  133. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli.egg-info/SOURCES.txt +0 -0
  134. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli.egg-info/dependency_links.txt +0 -0
  135. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli.egg-info/entry_points.txt +0 -0
  136. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli.egg-info/requires.txt +0 -0
  137. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/netizen_cli.egg-info/top_level.txt +0 -0
  138. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/setup.cfg +0 -0
  139. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/skills/netizen-lark/SKILL.md +0 -0
  140. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/skills/netizen-user-guide/SKILL.md +0 -0
  141. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_account_rate_limits.py +0 -0
  142. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_admin_update_executor_probe.py +0 -0
  143. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_binding_scheduled_channel.py +0 -0
  144. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_bindings.py +0 -0
  145. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cards.py +0 -0
  146. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_channel_app.py +0 -0
  147. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_channel_fixtures.py +0 -0
  148. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_channel_input_preparation.py +0 -0
  149. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_chat_avatars.py +0 -0
  150. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_chat_target_cards.py +0 -0
  151. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_check_sdk.py +0 -0
  152. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli.py +0 -0
  153. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_data.py +0 -0
  154. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_distribution.py +0 -0
  155. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_integration.py +0 -0
  156. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_packages.py +0 -0
  157. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_packaging.py +0 -0
  158. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_services.py +0 -0
  159. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_setup.py +0 -0
  160. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cli_update.py +0 -0
  161. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_codex_runtime.py +0 -0
  162. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_codex_sdk_capabilities.py +0 -0
  163. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_codex_sdk_upgrade_0161.py +0 -0
  164. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_completion_mention_cards.py +0 -0
  165. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_completion_mentions.py +0 -0
  166. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_completion_topic_delivery.py +0 -0
  167. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_cron_chat_targets.py +0 -0
  168. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_database_migrations.py +0 -0
  169. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_defaults_cards.py +0 -0
  170. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_defaults_channel.py +0 -0
  171. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_defaults_runtime.py +0 -0
  172. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_deployment.py +0 -0
  173. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_documentation_links.py +0 -0
  174. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_domain_experience.py +0 -0
  175. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_error_messages.py +0 -0
  176. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_feishu_app_onboarding.py +0 -0
  177. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_feishu_app_permissions.py +0 -0
  178. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_file_pagination.py +0 -0
  179. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_fork_cards.py +0 -0
  180. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_git_status.py +0 -0
  181. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_image_inputs.py +0 -0
  182. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_lark_app.py +0 -0
  183. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_lark_sdk_contract.py +0 -0
  184. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_main.py +0 -0
  185. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_markdown_images.py +0 -0
  186. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_message_content.py +0 -0
  187. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_message_history.py +0 -0
  188. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_message_material_inputs.py +0 -0
  189. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_message_preparation.py +0 -0
  190. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_migration_schema_validation.py +0 -0
  191. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_model_info_cards.py +0 -0
  192. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_model_settings.py +0 -0
  193. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_name_writes.py +0 -0
  194. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_pagination.py +0 -0
  195. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_partial_answer_delivery.py +0 -0
  196. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_partial_answers.py +0 -0
  197. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_persistent_fork_bindings.py +0 -0
  198. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_persistent_fork_channel.py +0 -0
  199. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_persistent_fork_runtime.py +0 -0
  200. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_child_files.py +0 -0
  201. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_feishu_completion_mention.py +0 -0
  202. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_feishu_partial_answers.py +0 -0
  203. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_feishu_turn_file_card.py +0 -0
  204. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_persistent_fork.py +0 -0
  205. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_python_sdk.py +0 -0
  206. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_scheduled_tasks.py +0 -0
  207. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_sdk_completion_race.py +0 -0
  208. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_skill_execution.py +0 -0
  209. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_probe_thread_naming.py +0 -0
  210. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_project_delete_channel.py +0 -0
  211. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_project_delete_runtime.py +0 -0
  212. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_project_deletion_storage.py +0 -0
  213. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_prompt_projection.py +0 -0
  214. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_question_cards.py +0 -0
  215. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_question_channel.py +0 -0
  216. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_question_target_parity.py +0 -0
  217. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_quoted_context.py +0 -0
  218. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_release_script.py +0 -0
  219. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_repository_hygiene.py +0 -0
  220. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_result_images.py +0 -0
  221. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_resume_channel.py +0 -0
  222. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_retired_deployment.py +0 -0
  223. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_runtime_resume_activation.py +0 -0
  224. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_runtime_thread_naming.py +0 -0
  225. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_card_retry.py +0 -0
  226. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_cards.py +0 -0
  227. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_mcp.py +0 -0
  228. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_run_now.py +0 -0
  229. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_scope_matrix.py +0 -0
  230. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedule_service.py +0 -0
  231. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_scheduled_channel.py +0 -0
  232. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_scheduled_runtime.py +0 -0
  233. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_scheduler.py +0 -0
  234. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_scheduler_presenter.py +0 -0
  235. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_schedules_storage.py +0 -0
  236. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_sdk_gap_adapter.py +0 -0
  237. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_service_launcher.py +0 -0
  238. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_session_defaults.py +0 -0
  239. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_session_settings.py +0 -0
  240. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_settings_projects.py +0 -0
  241. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_task_text.py +0 -0
  242. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_terminal_cleanup.py +0 -0
  243. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_thread_naming.py +0 -0
  244. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_turn_activity.py +0 -0
  245. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_turn_files.py +0 -0
  246. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_turn_patch_children.py +0 -0
  247. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_turn_patch_statistics.py +0 -0
  248. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_turn_plan_observer.py +0 -0
  249. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_update_executor.py +0 -0
  250. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_usage_card.py +0 -0
  251. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_usage_control.py +0 -0
  252. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_user_guide_skill.py +0 -0
  253. {netizen_cli-0.11.2 → netizen_cli-0.11.3}/tests/test_user_questions.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: netizen-cli
3
- Version: 0.11.2
3
+ Version: 0.11.3
4
4
  Summary: Use native Codex threads through a Feishu Channel.
5
5
  Requires-Python: <3.15,>=3.11
6
6
  Requires-Dist: h11==0.16.0
@@ -1,3 +1,3 @@
1
1
  """Netizen: a thin Feishu Channel for native Codex Threads."""
2
2
 
3
- __version__ = "0.11.2"
3
+ __version__ = "0.11.3"
@@ -8,6 +8,10 @@
8
8
  --blue: #1858d7;
9
9
  --blue-soft: #e9f0ff;
10
10
  --danger: #b42318;
11
+ --control-min-height: 35px;
12
+ --control-padding: 7px 10px;
13
+ --control-font-size: 13px;
14
+ --control-line-height: 19px;
11
15
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
12
16
  }
13
17
  * { box-sizing: border-box; }
@@ -28,6 +32,8 @@ h1 { margin-bottom: 0; letter-spacing: -0.03em; }
28
32
  .tabs { display: flex; gap: 6px; padding: 12px clamp(20px, 4vw, 56px); background: var(--paper); border-bottom: 1px solid var(--line); }
29
33
  .tab, .quiet, .refresh, .next { border: 1px solid var(--line); border-radius: 8px; background: white; padding: 8px 13px; color: var(--ink); }
30
34
  .tab.active { border-color: var(--blue); color: var(--blue); background: var(--blue-soft); }
35
+ .tabs a { text-decoration: none; white-space: nowrap; }
36
+ .tabs a:focus-visible { outline: 3px solid #8cb4ff; outline-offset: 2px; }
31
37
  .session-tabs { display: flex; gap: 6px; margin-top: 20px; border-bottom: 1px solid var(--line); }
32
38
  .session-tab { border: 0; border-bottom: 2px solid transparent; padding: 10px 14px; background: transparent; color: var(--muted); }
33
39
  .session-tab[aria-selected="true"] { border-bottom-color: var(--blue); color: var(--blue); font-weight: 700; }
@@ -59,7 +65,7 @@ input, select, textarea { min-width: 0; border: 1px solid #bac3d0; border-radius
59
65
  .selection-notice button { flex-shrink: 0; }
60
66
  .multi-filter { position: relative; min-width: 0; margin: 0; padding: 0; border: 0; }
61
67
  .multi-filter legend { margin-bottom: 5px; padding: 0; color: var(--muted); font-size: 13px; }
62
- .multi-filter-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: 36px; border: 1px solid #bac3d0; border-radius: 7px; padding: 8px 10px; background: white; color: var(--ink); text-align: left; }
68
+ .multi-filter-trigger { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; min-height: var(--control-min-height); border: 1px solid #bac3d0; border-radius: 7px; padding: var(--control-padding); background: white; color: var(--ink); font-size: var(--control-font-size); line-height: var(--control-line-height); text-align: left; }
63
69
  .multi-filter-trigger[aria-expanded="true"] { border-color: var(--blue); box-shadow: 0 0 0 2px rgb(24 88 215 / 12%); }
64
70
  .multi-filter-summary { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
65
71
  .multi-filter-popover[hidden] { display: none; }
@@ -72,10 +78,23 @@ input, select, textarea { min-width: 0; border: 1px solid #bac3d0; border-radius
72
78
  .multi-filter-option:hover { background: var(--wash); border-radius: 5px; }
73
79
  .multi-filter-option input { width: 16px; height: 16px; flex: 0 0 auto; margin: 0; accent-color: var(--blue); }
74
80
  .multi-filter-empty { margin: 8px; color: var(--muted); font-size: 13px; }
81
+ .admin-select { appearance: none; min-height: var(--control-min-height); padding: var(--control-padding); padding-right: 30px; font-size: var(--control-font-size); line-height: var(--control-line-height); text-overflow: ellipsis; cursor: pointer; background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%); background-position: right 14px center, right 9px center; background-size: 5px 5px; background-repeat: no-repeat; }
82
+ .admin-select:hover:not(:disabled) { border-color: #8290a3; }
83
+ .admin-select:disabled { cursor: default; }
84
+ .admin-select[aria-expanded="true"] { border-color: var(--blue); box-shadow: 0 0 0 2px rgb(24 88 215 / 12%); }
85
+ .admin-select-popover { position: fixed; z-index: 104; top: 0; left: 0; display: flex; flex-direction: column; overflow: hidden; color: var(--ink); font-size: var(--control-font-size); line-height: var(--control-line-height); }
86
+ .admin-select-popover .multi-filter-search { flex: none; font-size: inherit; margin: 0 0 8px; }
87
+ .admin-select-popover .multi-filter-options { min-height: 0; overscroll-behavior: contain; }
88
+ .admin-select-option { position: relative; padding: 8px 30px 8px 8px; border-radius: 5px; cursor: pointer; overflow-wrap: anywhere; }
89
+ .admin-select-option:hover, .admin-select-option[data-active="true"] { background: var(--blue-soft); }
90
+ .admin-select-option[aria-selected="true"] { color: var(--blue); font-weight: 600; }
91
+ .admin-select-option[aria-selected="true"]::after { content: "✓"; position: absolute; right: 8px; }
92
+ .admin-select-option[aria-disabled="true"] { color: var(--muted); opacity: .55; cursor: default; background: transparent; }
93
+ .admin-select-popover [hidden] { display: none; }
75
94
  .time-range-filter { position: relative; min-width: 0; margin: 0; padding: 0; border: 0; grid-column: span 2; }
76
95
  .time-range-filter legend { margin-bottom: 5px; padding: 0; color: var(--muted); font-size: 13px; }
77
96
  .time-range-control { position: relative; }
78
- .time-range-trigger { width: 100%; min-height: 36px; display: flex; align-items: center; gap: 9px; border: 1px solid #bac3d0; border-radius: 7px; padding: 8px 10px; background: white; color: var(--ink); text-align: left; }
97
+ .time-range-trigger { width: 100%; min-height: var(--control-min-height); display: flex; align-items: center; gap: 9px; border: 1px solid #bac3d0; border-radius: 7px; padding: var(--control-padding); background: white; color: var(--ink); font-size: var(--control-font-size); line-height: var(--control-line-height); text-align: left; }
79
98
  .time-range-trigger:hover { border-color: #8290a3; }
80
99
  .time-range-trigger[aria-expanded="true"] { border-color: var(--blue); box-shadow: 0 0 0 2px rgb(24 88 215 / 12%); }
81
100
  .time-range-trigger.has-value { padding-right: 58px; }
@@ -110,14 +129,16 @@ input, select, textarea { min-width: 0; border: 1px solid #bac3d0; border-radius
110
129
  .time-range-backdrop { display: none; }
111
130
  .table-wrap { overflow: auto; border: 1px solid var(--line); border-radius: 9px; }
112
131
  table { width: 100%; border-collapse: collapse; min-width: 900px; }
113
- #sessions-ordinary table { min-width: 1450px; table-layout: fixed; }
132
+ #sessions-ordinary table { min-width: 1200px; table-layout: fixed; }
133
+ #sessions-ordinary td { overflow-wrap: anywhere; }
134
+ #sessions-ordinary .session-time { white-space: normal; }
114
135
  #sessions-ordinary th:nth-child(1) { width: 12%; }
115
136
  #sessions-ordinary th:nth-child(2) { width: 5%; }
116
- #sessions-ordinary th:nth-child(3) { width: 22%; }
137
+ #sessions-ordinary th:nth-child(3) { width: 18%; }
117
138
  #sessions-ordinary th:nth-child(4) { width: 9%; }
118
139
  #sessions-ordinary th:nth-child(5) { width: 6%; }
119
140
  #sessions-ordinary th:nth-child(6) { width: 6%; }
120
- #sessions-ordinary th:nth-child(7) { width: 7%; }
141
+ #sessions-ordinary th:nth-child(7) { width: 11%; }
121
142
  #sessions-ordinary th:nth-child(8), #sessions-ordinary th:nth-child(9), #sessions-ordinary th:nth-child(10) { width: 11%; }
122
143
  #sessions-temporary td { max-width: 320px; overflow-wrap: anywhere; }
123
144
  .session-time { white-space: nowrap; font-variant-numeric: tabular-nums; }
@@ -260,8 +281,25 @@ body.schedule-drawer-open, body.defaults-drawer-open, body.session-settings-draw
260
281
  #schedule-editor button:disabled { opacity: .5; cursor: default; }
261
282
  #schedule-preview-message { margin: 14px 0 0; }
262
283
  #schedule-preview-message.error { color: var(--danger); }
263
- .schedule-detail { margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
264
284
  #schedule-detail-instructions { white-space: pre-wrap; overflow-wrap: anywhere; font: inherit; background: var(--wash); padding: 14px; border-radius: 8px; }
285
+ .session-identities { margin-top: 8px; }
286
+ .session-identities summary, .session-more summary { color: var(--blue); cursor: pointer; font-size: 12px; }
287
+ .session-identities label { display: block; margin-top: 8px; color: var(--muted); font-size: 12px; }
288
+ .session-identities input { width: 100%; min-width: 0; margin-top: 4px; padding: 5px 7px; font-family: monospace; font-size: 11px; }
289
+ .session-identities small { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; }
290
+ .session-more { flex-basis: 100%; min-width: 0; }
291
+ .session-more summary { padding: 5px 0; }
292
+ .session-more-items { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding-top: 5px; }
293
+ .session-more-items .action { max-width: 100%; text-align: left; white-space: normal; }
294
+ body.schedule-detail-open { overflow: hidden; }
295
+ #schedule-detail .drawer-head > div { min-width: 0; }
296
+ #schedule-detail .drawer-head h3, #schedule-detail p { overflow-wrap: anywhere; }
297
+ #schedule-detail .drawer-body section + section { border-top: 1px solid var(--line); margin-top: 24px; padding-top: 20px; }
298
+ #schedule-detail .drawer-body h4 { margin: 0 0 12px; }
299
+ #schedule-detail table { min-width: 560px; }
300
+ #schedule-detail .error { color: var(--danger); }
301
+ #schedule-detail-note:empty, #schedule-runs-note:empty { display: none; }
302
+ #schedule-detail .pagination { display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 16px; }
265
303
  .preserve-lines { white-space: pre-line; overflow-wrap: anywhere; }
266
304
  @media (max-width: 700px) { .tabs { flex-wrap: wrap; } }
267
305
  .schedule-session-settings summary { cursor: pointer; font-size: 15px; font-weight: 700; overflow-wrap: anywhere; }