chatup 0.2.18__tar.gz → 0.2.19__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.
- {chatup-0.2.18/src/chatup.egg-info → chatup-0.2.19}/PKG-INFO +14 -3
- {chatup-0.2.18 → chatup-0.2.19}/README.md +12 -1
- {chatup-0.2.18 → chatup-0.2.19}/pyproject.toml +1 -1
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/__init__.py +1 -1
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/cli.py +2 -0
- chatup-0.2.19/src/chatup/commands/macos.py +48 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/desktop.py +11 -3
- {chatup-0.2.18 → chatup-0.2.19/src/chatup.egg-info}/PKG-INFO +14 -3
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup.egg-info/SOURCES.txt +1 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup.egg-info/requires.txt +1 -1
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_pyproject_metadata.py +1 -1
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_version.py +1 -1
- {chatup-0.2.18 → chatup-0.2.19}/LICENSE +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/setup.cfg +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/chrome_for_testing.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/chromedriver.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/commands/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/commands/chrome_for_testing.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/commands/chromedriver.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/commands/desktop.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/commands/playwright.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/config.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/const.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/interaction/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/interaction/command_schema.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/interaction/policy.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/interaction/warnings.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/playwright.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/runtime/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/runtime/_managed_artifact.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/runtime/chrome_for_testing.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/runtime/chromedriver.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/runtime/playwright.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/assets/hermes/install.sh +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/assets/nvm.sh +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/cc_connect.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/chatgpt.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/claude.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/codex.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/crs.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/cursor_agent.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/discourse.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/docker.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/elements.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/frp.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/gitea.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/hermes.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/lark_cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/mode_prompt.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/mysql.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/nginx.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/nodejs.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/opencode.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/service_credentials.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/shell_rc.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/twikoo.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/uv.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/core.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/options.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/render.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/en/AGENTS.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/en/discussion/README.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/en/projects/README.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/zh/AGENTS.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/zh/discussion/README.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/zh/projects/README.md +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/zsh.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/zulip.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/utils/__init__.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/utils/custom_logger.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/utils/pathing.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup/utils/platforming.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup.egg-info/dependency_links.txt +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup.egg-info/entry_points.txt +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/src/chatup.egg-info/top_level.txt +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_browser_backend_cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_chatgpt_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_chrome_for_testing.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_chromedriver.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_cli_tree_docs.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_codex_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_crs_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_cursor_agent_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_hermes_model_defaults.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_playwright.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_playwright_cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_publish_workflow.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_service_installers.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_setup_cli.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_twikoo_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_uv_activation.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_windows_compat.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_workspace_setup.py +0 -0
- {chatup-0.2.18 → chatup-0.2.19}/tests/test_zsh_alias_names.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chatup
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.19
|
|
4
4
|
Summary: ChatArch setup CLI extracted from ChatTool
|
|
5
5
|
Author-email: rexwzh <1073853456@qq.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,7 +14,7 @@ Requires-Python: >=3.10
|
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: click<9.0,>=8.0
|
|
17
|
-
Requires-Dist: chatstyle<0.3.0,>=0.2.0
|
|
17
|
+
Requires-Dist: chatstyle[tui]<0.3.0,>=0.2.0
|
|
18
18
|
Requires-Dist: chatenv<0.3.0,>=0.2.11
|
|
19
19
|
Requires-Dist: python-dotenv<2.0,>=1.0
|
|
20
20
|
Requires-Dist: colorama
|
|
@@ -76,6 +76,17 @@ chatup nginx proxy-pass ./gitea-local.conf --set SERVER_NAME=gitea.local.example
|
|
|
76
76
|
chatup crs --install-dir ~/.chatarch/crs/local --port 12392 --redis-port 6379
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
## macOS 常用应用
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
chatup macos # 勾选安装,默认全选 Snipaste、iTerm2、Chrome
|
|
83
|
+
chatup macos --app snipaste # 只安装 Snipaste
|
|
84
|
+
chatup macos -I # 不询问,安装默认三项
|
|
85
|
+
chatup macos --dry-run # 只预览安装计划
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
仅限 macOS。终端中用空格切换勾选,回车安装;取消全部勾选则直接退出。可重复传入 `--app snipaste|iterm|chrome` 选择多个应用。直接使用官方安装包,无需 Homebrew,已有应用验证后复用。详见[macOS 安装入口](https://arch.gh.wzhecnu.cn/ChatUp/commands/#macos)。
|
|
89
|
+
|
|
79
90
|
## Chrome 与 iTerm2
|
|
80
91
|
|
|
81
92
|
```bash
|
|
@@ -105,7 +116,7 @@ chatup chatgpt --yes # Windows 首次安装时接受 Store 协议
|
|
|
105
116
|
| --- | --- |
|
|
106
117
|
| 基础运行环境 | `doctor`、`uv`、`nodejs`、`docker`、`zsh`、`chrome-for-testing`、`chromedriver`、`playwright`、`frp` |
|
|
107
118
|
| 工作区脚手架 | `workspace` |
|
|
108
|
-
| 桌面应用 | `chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
119
|
+
| 桌面应用 | `macos`(Snipaste/iTerm2/Chrome 多选)、`chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
109
120
|
| 本地服务安装 | `gitea`、`discourse`、`zulip`、`mysql`、`nginx`、`crs` |
|
|
110
121
|
| Agent 工具链 | `cc-connect`、`claude`、`codex`、`cursor-agent`、`opencode`、`hermes`、`lark-cli` |
|
|
111
122
|
|
|
@@ -45,6 +45,17 @@ chatup nginx proxy-pass ./gitea-local.conf --set SERVER_NAME=gitea.local.example
|
|
|
45
45
|
chatup crs --install-dir ~/.chatarch/crs/local --port 12392 --redis-port 6379
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
## macOS 常用应用
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
chatup macos # 勾选安装,默认全选 Snipaste、iTerm2、Chrome
|
|
52
|
+
chatup macos --app snipaste # 只安装 Snipaste
|
|
53
|
+
chatup macos -I # 不询问,安装默认三项
|
|
54
|
+
chatup macos --dry-run # 只预览安装计划
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
仅限 macOS。终端中用空格切换勾选,回车安装;取消全部勾选则直接退出。可重复传入 `--app snipaste|iterm|chrome` 选择多个应用。直接使用官方安装包,无需 Homebrew,已有应用验证后复用。详见[macOS 安装入口](https://arch.gh.wzhecnu.cn/ChatUp/commands/#macos)。
|
|
58
|
+
|
|
48
59
|
## Chrome 与 iTerm2
|
|
49
60
|
|
|
50
61
|
```bash
|
|
@@ -74,7 +85,7 @@ chatup chatgpt --yes # Windows 首次安装时接受 Store 协议
|
|
|
74
85
|
| --- | --- |
|
|
75
86
|
| 基础运行环境 | `doctor`、`uv`、`nodejs`、`docker`、`zsh`、`chrome-for-testing`、`chromedriver`、`playwright`、`frp` |
|
|
76
87
|
| 工作区脚手架 | `workspace` |
|
|
77
|
-
| 桌面应用 | `chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
88
|
+
| 桌面应用 | `macos`(Snipaste/iTerm2/Chrome 多选)、`chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
78
89
|
| 本地服务安装 | `gitea`、`discourse`、`zulip`、`mysql`、`nginx`、`crs` |
|
|
79
90
|
| Agent 工具链 | `cc-connect`、`claude`、`codex`、`cursor-agent`、`opencode`、`hermes`、`lark-cli` |
|
|
80
91
|
|
|
@@ -7,6 +7,7 @@ from chatup import __version__
|
|
|
7
7
|
from chatup.commands.chrome_for_testing import cli as chrome_for_testing_cli
|
|
8
8
|
from chatup.commands.chromedriver import cli as chromedriver_cli
|
|
9
9
|
from chatup.commands.desktop import chrome_cli, iterm_cli
|
|
10
|
+
from chatup.commands.macos import macos_cli
|
|
10
11
|
from chatup.commands.playwright import cli as playwright_cli
|
|
11
12
|
from chatup.setup.cli import register_setup_commands
|
|
12
13
|
|
|
@@ -35,6 +36,7 @@ main.add_command(chromedriver_cli)
|
|
|
35
36
|
main.add_command(playwright_cli)
|
|
36
37
|
main.add_command(chrome_cli)
|
|
37
38
|
main.add_command(iterm_cli)
|
|
39
|
+
main.add_command(macos_cli)
|
|
38
40
|
|
|
39
41
|
|
|
40
42
|
if __name__ == "__main__":
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"""Select and install the supported macOS desktop applications."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import platform
|
|
5
|
+
|
|
6
|
+
import click
|
|
7
|
+
|
|
8
|
+
from chatup.interaction import (
|
|
9
|
+
abort_if_force_without_tty,
|
|
10
|
+
add_interactive_option,
|
|
11
|
+
ask_checkbox,
|
|
12
|
+
create_choice,
|
|
13
|
+
resolve_interactive_mode,
|
|
14
|
+
)
|
|
15
|
+
|
|
16
|
+
from .desktop import _install
|
|
17
|
+
|
|
18
|
+
MACOS_APPS = {"snipaste": "Snipaste", "iterm": "iTerm2", "chrome": "Google Chrome"}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@click.command(name="macos")
|
|
22
|
+
@click.option("--app", "apps", type=click.Choice(list(MACOS_APPS)), multiple=True,
|
|
23
|
+
help="Install only this app; repeat to select several. Defaults to all three.")
|
|
24
|
+
@click.option("--dry-run", is_flag=True, help="Preview selected apps without downloading or installing.")
|
|
25
|
+
@click.option("--log-level", type=click.Choice(["DEBUG", "INFO", "WARNING", "ERROR"], case_sensitive=False), default="INFO")
|
|
26
|
+
@add_interactive_option
|
|
27
|
+
def macos_cli(apps, dry_run, log_level, interactive) -> None:
|
|
28
|
+
"""Install Snipaste, iTerm2 and Chrome on macOS; all selected by default."""
|
|
29
|
+
if platform.system() != "Darwin":
|
|
30
|
+
raise click.ClickException("chatup macos is supported on macOS only.")
|
|
31
|
+
selected = list(dict.fromkeys(apps)) if apps else list(MACOS_APPS)
|
|
32
|
+
_, can_prompt, force, _, need_prompt = resolve_interactive_mode(
|
|
33
|
+
interactive, auto_prompt_condition=not apps and not dry_run,
|
|
34
|
+
)
|
|
35
|
+
abort_if_force_without_tty(force, can_prompt, "Usage: chatup macos [--app NAME] [-i|-I]")
|
|
36
|
+
if need_prompt:
|
|
37
|
+
selected = ask_checkbox(
|
|
38
|
+
"Select macOS apps to install",
|
|
39
|
+
choices=[create_choice(label, name) for name, label in MACOS_APPS.items()],
|
|
40
|
+
default_values=selected,
|
|
41
|
+
instruction="(Space: toggle, Enter: install selected, Ctrl-C: cancel)",
|
|
42
|
+
)
|
|
43
|
+
if not selected:
|
|
44
|
+
click.echo("No apps selected; nothing installed.")
|
|
45
|
+
return
|
|
46
|
+
click.echo("Selected apps: " + ", ".join(MACOS_APPS[name] for name in selected))
|
|
47
|
+
for app in selected:
|
|
48
|
+
_install(app, dry_run=dry_run, log_level=log_level)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""Native installers for
|
|
1
|
+
"""Native installers for Google Chrome and supported macOS desktop apps."""
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import logging
|
|
@@ -35,6 +35,14 @@ MAC_APPS = {
|
|
|
35
35
|
"url": "https://iterm2.com/downloads/stable/latest",
|
|
36
36
|
"format": "zip",
|
|
37
37
|
},
|
|
38
|
+
"snipaste": {
|
|
39
|
+
"app": "Snipaste",
|
|
40
|
+
"bundle": "Snipaste.app",
|
|
41
|
+
"bundle_id": "com.Snipaste",
|
|
42
|
+
"team_id": "NGTL73P583",
|
|
43
|
+
"url": "https://dl.snipaste.com/mac",
|
|
44
|
+
"format": "dmg",
|
|
45
|
+
},
|
|
38
46
|
}
|
|
39
47
|
LINUX_PACKAGES = {
|
|
40
48
|
"apt-get": ("deb", ["install"]),
|
|
@@ -59,8 +67,8 @@ def plan_desktop_install(
|
|
|
59
67
|
spec = MAC_APPS[app]
|
|
60
68
|
system = platform.system()
|
|
61
69
|
plan = {"app": spec["app"], "platform": system}
|
|
62
|
-
if app
|
|
63
|
-
raise RuntimeError(f"
|
|
70
|
+
if app != "chrome" and system != "Darwin":
|
|
71
|
+
raise RuntimeError(f"{spec['app']} is supported on macOS only; current platform: {system}.")
|
|
64
72
|
if system == "Darwin":
|
|
65
73
|
if platform.machine().lower() not in {"arm64", "aarch64", "x86_64", "amd64"}:
|
|
66
74
|
raise RuntimeError(f"Unsupported macOS architecture: {platform.machine()}.")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: chatup
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.19
|
|
4
4
|
Summary: ChatArch setup CLI extracted from ChatTool
|
|
5
5
|
Author-email: rexwzh <1073853456@qq.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -14,7 +14,7 @@ Requires-Python: >=3.10
|
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
License-File: LICENSE
|
|
16
16
|
Requires-Dist: click<9.0,>=8.0
|
|
17
|
-
Requires-Dist: chatstyle<0.3.0,>=0.2.0
|
|
17
|
+
Requires-Dist: chatstyle[tui]<0.3.0,>=0.2.0
|
|
18
18
|
Requires-Dist: chatenv<0.3.0,>=0.2.11
|
|
19
19
|
Requires-Dist: python-dotenv<2.0,>=1.0
|
|
20
20
|
Requires-Dist: colorama
|
|
@@ -76,6 +76,17 @@ chatup nginx proxy-pass ./gitea-local.conf --set SERVER_NAME=gitea.local.example
|
|
|
76
76
|
chatup crs --install-dir ~/.chatarch/crs/local --port 12392 --redis-port 6379
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
+
## macOS 常用应用
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
chatup macos # 勾选安装,默认全选 Snipaste、iTerm2、Chrome
|
|
83
|
+
chatup macos --app snipaste # 只安装 Snipaste
|
|
84
|
+
chatup macos -I # 不询问,安装默认三项
|
|
85
|
+
chatup macos --dry-run # 只预览安装计划
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
仅限 macOS。终端中用空格切换勾选,回车安装;取消全部勾选则直接退出。可重复传入 `--app snipaste|iterm|chrome` 选择多个应用。直接使用官方安装包,无需 Homebrew,已有应用验证后复用。详见[macOS 安装入口](https://arch.gh.wzhecnu.cn/ChatUp/commands/#macos)。
|
|
89
|
+
|
|
79
90
|
## Chrome 与 iTerm2
|
|
80
91
|
|
|
81
92
|
```bash
|
|
@@ -105,7 +116,7 @@ chatup chatgpt --yes # Windows 首次安装时接受 Store 协议
|
|
|
105
116
|
| --- | --- |
|
|
106
117
|
| 基础运行环境 | `doctor`、`uv`、`nodejs`、`docker`、`zsh`、`chrome-for-testing`、`chromedriver`、`playwright`、`frp` |
|
|
107
118
|
| 工作区脚手架 | `workspace` |
|
|
108
|
-
| 桌面应用 | `chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
119
|
+
| 桌面应用 | `macos`(Snipaste/iTerm2/Chrome 多选)、`chrome`、`iterm`(仅 macOS)、`chatgpt`(含 Codex) |
|
|
109
120
|
| 本地服务安装 | `gitea`、`discourse`、`zulip`、`mysql`、`nginx`、`crs` |
|
|
110
121
|
| Agent 工具链 | `cc-connect`、`claude`、`codex`、`cursor-agent`、`opencode`、`hermes`、`lark-cli` |
|
|
111
122
|
|
|
@@ -18,6 +18,7 @@ src/chatup/commands/__init__.py
|
|
|
18
18
|
src/chatup/commands/chrome_for_testing.py
|
|
19
19
|
src/chatup/commands/chromedriver.py
|
|
20
20
|
src/chatup/commands/desktop.py
|
|
21
|
+
src/chatup/commands/macos.py
|
|
21
22
|
src/chatup/commands/playwright.py
|
|
22
23
|
src/chatup/interaction/__init__.py
|
|
23
24
|
src/chatup/interaction/command_schema.py
|
|
@@ -22,7 +22,7 @@ def test_chatup_depends_on_chatenv_and_registers_cursor_agent_config_provider():
|
|
|
22
22
|
|
|
23
23
|
assert data["project"]["requires-python"] == ">=3.10"
|
|
24
24
|
assert "click>=8.0,<9.0" in data["project"]["dependencies"]
|
|
25
|
-
assert "chatstyle>=0.2.0,<0.3.0" in data["project"]["dependencies"]
|
|
25
|
+
assert "chatstyle[tui]>=0.2.0,<0.3.0" in data["project"]["dependencies"]
|
|
26
26
|
assert "chatenv>=0.2.11,<0.3.0" in data["project"]["dependencies"]
|
|
27
27
|
assert "python-dotenv>=1.0,<2.0" in data["project"]["dependencies"]
|
|
28
28
|
entry_points = data["project"]["entry-points"]["chatenv.configs"]
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/en/discussion/README.md
RENAMED
|
File without changes
|
{chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/en/projects/README.md
RENAMED
|
File without changes
|
|
File without changes
|
{chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/zh/discussion/README.md
RENAMED
|
File without changes
|
{chatup-0.2.18 → chatup-0.2.19}/src/chatup/setup/workspace/templates/default/zh/projects/README.md
RENAMED
|
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
|