portacode 0.2.5.dev0__tar.gz → 0.2.6.dev0__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 (37) hide show
  1. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/PKG-INFO +1 -1
  2. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/_version.py +2 -2
  3. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/cli.py +37 -10
  4. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/keypair.py +7 -1
  5. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/PKG-INFO +1 -1
  6. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/.gitignore +0 -0
  7. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/.gitmodules +0 -0
  8. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/MANIFEST.in +0 -0
  9. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/Makefile +0 -0
  10. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/README.md +0 -0
  11. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/docker-compose.yaml +0 -0
  12. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/README.md +0 -0
  13. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/__init__.py +0 -0
  14. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/__main__.py +0 -0
  15. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/README.md +0 -0
  16. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/__init__.py +0 -0
  17. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/client.py +0 -0
  18. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/README.md +0 -0
  19. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/__init__.py +0 -0
  20. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/base.py +0 -0
  21. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/file_handlers.py +0 -0
  22. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/registry.py +0 -0
  23. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/session.py +0 -0
  24. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/system_handlers.py +0 -0
  25. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/handlers/terminal_handlers.py +0 -0
  26. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/multiplex.py +0 -0
  27. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/connection/terminal.py +0 -0
  28. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/data.py +0 -0
  29. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode/service.py +0 -0
  30. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/SOURCES.txt +0 -0
  31. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/dependency_links.txt +0 -0
  32. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/entry_points.txt +0 -0
  33. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/requires.txt +0 -0
  34. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/portacode.egg-info/top_level.txt +0 -0
  35. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/pyproject.toml +0 -0
  36. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/setup.cfg +0 -0
  37. {portacode-0.2.5.dev0 → portacode-0.2.6.dev0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: portacode
3
- Version: 0.2.5.dev0
3
+ Version: 0.2.6.dev0
4
4
  Summary: Portacode CLI client and SDK
5
5
  Home-page: https://github.com/portacode/portacode
6
6
  Author: Meena Erian
@@ -17,5 +17,5 @@ __version__: str
17
17
  __version_tuple__: VERSION_TUPLE
18
18
  version_tuple: VERSION_TUPLE
19
19
 
20
- __version__ = version = '0.2.5.dev'
21
- __version_tuple__ = version_tuple = (0, 2, 5, 'dev0')
20
+ __version__ = version = '0.2.6.dev'
21
+ __version_tuple__ = version_tuple = (0, 2, 6, 'dev0')
@@ -65,22 +65,49 @@ def connect(gateway: str | None, detach: bool, non_interactive: bool) -> None:
65
65
 
66
66
  pubkey_b64 = keypair.public_key_der_b64()
67
67
  if not non_interactive:
68
- click.echo()
69
- click.echo(click.style("✔ Generated / loaded RSA keypair", fg="green"))
68
+ # Show key generation status
69
+ if getattr(keypair, '_is_new', False):
70
+ click.echo()
71
+ click.echo(click.style("✔ Generated new RSA keypair", fg="green"))
72
+ else:
73
+ click.echo()
74
+ click.echo(click.style("✔ Loaded existing RSA keypair", fg="green"))
75
+
76
+ # Show key location
77
+ key_dir = getattr(keypair, '_key_dir', None)
78
+ if key_dir:
79
+ click.echo(click.style(f" 📁 Key files: {key_dir}", fg="bright_black"))
70
80
 
71
81
  click.echo()
72
- click.echo(click.style("Public key (copy & paste to your Portacode account):", bold=True))
73
- click.echo("-" * 60)
74
- click.echo(pubkey_b64)
75
- click.echo("-" * 60)
82
+ click.echo(click.style("🚀 Welcome to Portacode!", fg="bright_blue", bold=True))
83
+ click.echo()
84
+ click.echo(click.style("📱 Next steps:", fg="bright_cyan", bold=True))
85
+ click.echo(click.style(" 1. Visit ", fg="white") + click.style("https://remote.portacode.com", fg="bright_blue", underline=True))
86
+ click.echo(click.style(" 2. Create your free account or sign in", fg="white"))
87
+ click.echo(click.style(" 3. Add this device using the key below", fg="white"))
88
+ click.echo()
89
+
90
+ click.echo(click.style("🔑 Device Key:", fg="bright_yellow", bold=True))
91
+ click.echo(click.style("┌" + "─" * 62 + "┐", fg="bright_black"))
92
+ click.echo(click.style("│ ", fg="bright_black") + click.style(pubkey_b64, fg="bright_white") + click.style(" │", fg="bright_black"))
93
+ click.echo(click.style("└" + "─" * 62 + "┘", fg="bright_black"))
94
+
76
95
  try:
77
96
  pyperclip.copy(pubkey_b64)
78
- click.echo(click.style("(Copied to clipboard!)", fg="cyan"))
97
+ click.echo(click.style("Copied to clipboard!", fg="bright_green"))
79
98
  except Exception:
80
- click.echo(click.style("(Could not copy to clipboard. Please copy manually.)", fg="yellow"))
81
- click.echo(f"Fingerprint: {fingerprint}")
99
+ click.echo(click.style("⚠️ Copy the key manually", fg="bright_yellow"))
100
+
101
+ click.echo(click.style(f" Fingerprint: {fingerprint}", fg="bright_black"))
102
+ click.echo()
103
+
104
+ click.echo(click.style("💡 Connection info:", fg="bright_magenta", bold=True))
105
+ click.echo(click.style(" • This session: Connection active until terminal closes", fg="white"))
106
+ click.echo(click.style(" • Permanent: Run ", fg="white") + click.style("portacode service install", fg="bright_cyan") + click.style(" for auto-connect", fg="white"))
107
+ click.echo(click.style(" • More help: ", fg="white") + click.style("portacode service --help", fg="bright_cyan"))
82
108
  click.echo()
83
- click.prompt("Press <enter> once the key is added", default="", show_default=False)
109
+
110
+ click.prompt(click.style("Press Enter once device is added", fg="bright_green", bold=True), default="", show_default=False)
84
111
 
85
112
  # 3. Start connection manager
86
113
  if detach and not non_interactive:
@@ -82,10 +82,16 @@ def get_or_create_keypair() -> KeyPair:
82
82
  private_pem, public_pem = _generate_keypair()
83
83
  priv_path.write_bytes(private_pem)
84
84
  pub_path.write_bytes(public_pem)
85
+ keypair = KeyPair(priv_path, pub_path)
86
+ keypair._is_new = True
87
+ keypair._key_dir = key_dir
85
88
  else:
86
89
  logging.info(f"Found existing keys at {key_dir}")
90
+ keypair = KeyPair(priv_path, pub_path)
91
+ keypair._is_new = False
92
+ keypair._key_dir = key_dir
87
93
 
88
- return KeyPair(priv_path, pub_path)
94
+ return keypair
89
95
 
90
96
 
91
97
  def fingerprint_public_key(pem: bytes) -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: portacode
3
- Version: 0.2.5.dev0
3
+ Version: 0.2.6.dev0
4
4
  Summary: Portacode CLI client and SDK
5
5
  Home-page: https://github.com/portacode/portacode
6
6
  Author: Meena Erian
File without changes
File without changes
File without changes
File without changes