opencode-swap 0.4.0__tar.gz → 0.4.2__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 (69) hide show
  1. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/PKG-INFO +22 -4
  2. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/README.md +21 -3
  3. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/integrations/opencode-tui-plugin/README.md +11 -0
  4. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/pyproject.toml +1 -1
  5. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/__init__.py +1 -1
  6. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/.gitignore +0 -0
  7. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/LICENSE +0 -0
  8. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/architecture.md +0 -0
  9. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/opencode-auth.md +0 -0
  10. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/provider-research-prompt.md +0 -0
  11. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/provider-support.md +0 -0
  12. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/releasing.md +0 -0
  13. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/roadmap.md +0 -0
  14. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/security.md +0 -0
  15. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/docs/testing.md +0 -0
  16. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/integrations/opencode-tui-plugin/LICENSE +0 -0
  17. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/integrations/opencode-tui-plugin/src/tui.tsx +0 -0
  18. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/__main__.py +0 -0
  19. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/atomic.py +0 -0
  20. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/backup.py +0 -0
  21. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/cli.py +0 -0
  22. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/exceptions.py +0 -0
  23. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/locking.py +0 -0
  24. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/macos_keychain.py +0 -0
  25. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/models.py +0 -0
  26. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/oauth_jwt.py +0 -0
  27. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/oauth_refresh.py +0 -0
  28. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/opencode_auth.py +0 -0
  29. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/paths.py +0 -0
  30. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/process_detection.py +0 -0
  31. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/__init__.py +0 -0
  32. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/api.py +0 -0
  33. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/base.py +0 -0
  34. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/common.py +0 -0
  35. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/github_copilot.py +0 -0
  36. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/openai.py +0 -0
  37. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/poe.py +0 -0
  38. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/xai.py +0 -0
  39. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/providers/zai.py +0 -0
  40. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/sealed.py +0 -0
  41. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/store.py +0 -0
  42. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/switcher.py +0 -0
  43. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/transfer.py +0 -0
  44. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/src/opencode_swap/usage.py +0 -0
  45. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/__init__.py +0 -0
  46. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/helpers.py +0 -0
  47. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_atomic.py +0 -0
  48. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_backup.py +0 -0
  49. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_cli.py +0 -0
  50. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_concurrency.py +0 -0
  51. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_locking.py +0 -0
  52. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_macos_keychain.py +0 -0
  53. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_main.py +0 -0
  54. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_models.py +0 -0
  55. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_multi_provider.py +0 -0
  56. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_oauth_jwt.py +0 -0
  57. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_oauth_refresh.py +0 -0
  58. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_opencode_auth.py +0 -0
  59. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_paths.py +0 -0
  60. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_providers_multi.py +0 -0
  61. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_providers_openai.py +0 -0
  62. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_registry.py +0 -0
  63. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_store.py +0 -0
  64. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_switcher.py +0 -0
  65. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_switcher_restore.py +0 -0
  66. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_switcher_transfer.py +0 -0
  67. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_switcher_use.py +0 -0
  68. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_transfer.py +0 -0
  69. {opencode_swap-0.4.0 → opencode_swap-0.4.2}/tests/test_usage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: opencode-swap
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: Multi-account switcher for OpenCode
5
5
  Project-URL: Homepage, https://github.com/leinardi/opencode-swap
6
6
  Project-URL: Repository, https://github.com/leinardi/opencode-swap
@@ -78,6 +78,12 @@ covers the storage trade-offs each approach makes.
78
78
 
79
79
  ## Install
80
80
 
81
+ Two pieces ship from this repo: the CLI, which does all the work, and an
82
+ optional OpenCode TUI plugin that surfaces it inside the TUI. Install the CLI
83
+ first — the plugin shells out to it.
84
+
85
+ ### 1. CLI (required)
86
+
81
87
  ```bash
82
88
  uv tool install opencode-swap # or: pipx install opencode-swap
83
89
  opencode-swap --help
@@ -85,6 +91,20 @@ opencode-swap --help
85
91
 
86
92
  `uvx opencode-swap --help` works too, without installing anything permanently.
87
93
 
94
+ ### 2. OpenCode TUI plugin (optional)
95
+
96
+ Adds the active account and its usage to the session prompt, plus `/swap`,
97
+ `/swap-next`, and `/swap-refresh` in the command palette:
98
+
99
+ ```bash
100
+ opencode plugin @leinardi/opencode-swap --global
101
+ ```
102
+
103
+ Restart OpenCode afterwards. The plugin invokes `opencode-swap` from your
104
+ `PATH`, so it needs the CLI from step 1 already installed. See
105
+ [OpenCode TUI integration](#opencode-tui-integration) for what it renders and
106
+ when it stays hidden.
107
+
88
108
  ### From source
89
109
 
90
110
  ```bash
@@ -154,9 +174,7 @@ ids are shown truncated to their last four characters.
154
174
 
155
175
  ## OpenCode TUI integration
156
176
 
157
- ```bash
158
- opencode plugin @leinardi/opencode-swap --global
159
- ```
177
+ Install it with [step 2 of Install](#2-opencode-tui-plugin-optional).
160
178
 
161
179
  [`integrations/opencode-tui-plugin`](https://github.com/leinardi/opencode-swap/blob/main/integrations/opencode-tui-plugin)
162
180
  uses OpenCode's supported TUI-plugin API to render active account and
@@ -51,6 +51,12 @@ covers the storage trade-offs each approach makes.
51
51
 
52
52
  ## Install
53
53
 
54
+ Two pieces ship from this repo: the CLI, which does all the work, and an
55
+ optional OpenCode TUI plugin that surfaces it inside the TUI. Install the CLI
56
+ first — the plugin shells out to it.
57
+
58
+ ### 1. CLI (required)
59
+
54
60
  ```bash
55
61
  uv tool install opencode-swap # or: pipx install opencode-swap
56
62
  opencode-swap --help
@@ -58,6 +64,20 @@ opencode-swap --help
58
64
 
59
65
  `uvx opencode-swap --help` works too, without installing anything permanently.
60
66
 
67
+ ### 2. OpenCode TUI plugin (optional)
68
+
69
+ Adds the active account and its usage to the session prompt, plus `/swap`,
70
+ `/swap-next`, and `/swap-refresh` in the command palette:
71
+
72
+ ```bash
73
+ opencode plugin @leinardi/opencode-swap --global
74
+ ```
75
+
76
+ Restart OpenCode afterwards. The plugin invokes `opencode-swap` from your
77
+ `PATH`, so it needs the CLI from step 1 already installed. See
78
+ [OpenCode TUI integration](#opencode-tui-integration) for what it renders and
79
+ when it stays hidden.
80
+
61
81
  ### From source
62
82
 
63
83
  ```bash
@@ -127,9 +147,7 @@ ids are shown truncated to their last four characters.
127
147
 
128
148
  ## OpenCode TUI integration
129
149
 
130
- ```bash
131
- opencode plugin @leinardi/opencode-swap --global
132
- ```
150
+ Install it with [step 2 of Install](#2-opencode-tui-plugin-optional).
133
151
 
134
152
  [`integrations/opencode-tui-plugin`](https://github.com/leinardi/opencode-swap/blob/main/integrations/opencode-tui-plugin)
135
153
  uses OpenCode's supported TUI-plugin API to render active account and
@@ -40,6 +40,17 @@ Add this path to global `~/.config/opencode/tui.json`:
40
40
  OpenCode installs `@opencode-ai/plugin` for config-scoped local plugins when
41
41
  needed. Restart the TUI after editing `tui.json`.
42
42
 
43
+ ## Build
44
+
45
+ The npm payload ships `dist/tui.js`, precompiled with OpenTUI's own Solid
46
+ transform (`bun run build`). This is not an optimization: OpenCode's runtime
47
+ Solid transform deliberately skips anything under `node_modules`, so a
48
+ package that exports raw `.tsx` loads through Bun's generic JSX runtime
49
+ instead — it renders once with no reactivity wired, silently freezing the
50
+ widget while commands keep working. A checkout path is outside
51
+ `node_modules`, so "Install from this checkout" above keeps working from
52
+ `src/tui.tsx` directly.
53
+
43
54
  ## Typecheck
44
55
 
45
56
  Requires Bun 1.3.14. Root `make verify` installs locked dependencies and runs
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "opencode-swap"
3
- version = "0.4.0"
3
+ version = "0.4.2"
4
4
  description = "Multi-account switcher for OpenCode"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -1,3 +1,3 @@
1
1
  """opencode-swap: multi-account switcher for OpenCode."""
2
2
 
3
- __version__ = "0.4.0"
3
+ __version__ = "0.4.2"
File without changes
File without changes