devlinker 1.4.5__tar.gz → 1.4.6__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 (31) hide show
  1. {devlinker-1.4.5/devlinker.egg-info → devlinker-1.4.6}/PKG-INFO +33 -9
  2. {devlinker-1.4.5 → devlinker-1.4.6}/README.md +32 -8
  3. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/main.py +8 -7
  4. {devlinker-1.4.5 → devlinker-1.4.6/devlinker.egg-info}/PKG-INFO +33 -9
  5. {devlinker-1.4.5 → devlinker-1.4.6}/pyproject.toml +1 -1
  6. {devlinker-1.4.5 → devlinker-1.4.6}/LICENSE +0 -0
  7. {devlinker-1.4.5 → devlinker-1.4.6}/MANIFEST.in +0 -0
  8. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/__init__.py +0 -0
  9. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/config.py +0 -0
  10. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/detection_state.py +0 -0
  11. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/detector.py +0 -0
  12. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/detector_ai.py +0 -0
  13. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/devlinker_loader_instant.html +0 -0
  14. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/devlinker_loader_snippet.html +0 -0
  15. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/doctor.py +0 -0
  16. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/fix.py +0 -0
  17. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/fixer.py +0 -0
  18. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/inspect.py +0 -0
  19. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/logger.py +0 -0
  20. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/monitor.py +0 -0
  21. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/proxy.py +0 -0
  22. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/runner.py +0 -0
  23. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/runtime_api.py +0 -0
  24. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker/tunnel.py +0 -0
  25. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker.egg-info/SOURCES.txt +0 -0
  26. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker.egg-info/dependency_links.txt +0 -0
  27. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker.egg-info/entry_points.txt +0 -0
  28. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker.egg-info/requires.txt +0 -0
  29. {devlinker-1.4.5 → devlinker-1.4.6}/devlinker.egg-info/top_level.txt +0 -0
  30. {devlinker-1.4.5 → devlinker-1.4.6}/setup.cfg +0 -0
  31. {devlinker-1.4.5 → devlinker-1.4.6}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devlinker
3
- Version: 1.4.5
3
+ Version: 1.4.6
4
4
  Summary: A lightweight proxy that combines your frontend and backend into one link for easy development and sharing.
5
5
  Author-email: Mani <mani1028@users.noreply.github.com>
6
6
  Requires-Python: >=3.7
@@ -132,7 +132,7 @@ If DevLinker helps you ship faster, consider supporting the project:
132
132
  - `devlinker fix` — Auto-fix common issues (env, API paths, config)
133
133
  - `devlinker --frontend 5173 --backend 5000` — Override detected ports
134
134
  - `devlinker --docker` — Auto-start Docker backend
135
- - `devlinker --no-tunnel` — Force local-only mode
135
+ - `devlinker --no-tunnel` — Explicitly force local/WLAN-only mode (no public tunnel)
136
136
  - `devlinker --no-lan` — Hide WLAN sharing URL
137
137
  - `devlinker --interactive-backend` — Prompt to choose backend if multiple found
138
138
  - `devlinker --proxy-port 18000` — Use custom proxy port
@@ -277,6 +277,20 @@ devlinker --docker
277
277
 
278
278
  By default, DevLinker starts **fast local proxy only** (no tunnel). It prints a LAN URL when it can detect a local network interface, and you can share that link with devices on the same Wi-Fi/LAN.
279
279
 
280
+ LAN-only quick start:
281
+
282
+ ```bash
283
+ devlinker
284
+ ```
285
+
286
+ You can also pass `--no-tunnel` to explicitly enforce no public tunnel startup:
287
+
288
+ ```bash
289
+ devlinker --no-tunnel
290
+ ```
291
+
292
+ `--no-tunnel` does **not** disable frontend/backend linking. DevLinker still starts the local proxy and routes frontend + backend through the same local entry URL.
293
+
280
294
  For access from another network, start with a public tunnel using the `--url` flag:
281
295
 
282
296
 
@@ -297,21 +311,31 @@ This starts the proxy and opens a public tunnel (Cloudflare or ngrok). The outpu
297
311
 
298
312
  If your friend is on the same Wi-Fi/LAN, use the printed LAN URL like `http://192.168.x.x:<proxy-port>`. If they are outside your network, use the public tunnel URL instead.
299
313
 
300
- To force tunnel off (even if --url is passed):
314
+ To force tunnel off (even if `--url` is passed):
301
315
 
302
316
  ```bash
303
317
  devlinker --no-tunnel
304
318
  ```
305
319
 
306
- When running without `--url`, you’ll see:
320
+ When running without `--url`, you’ll see local/WLAN output with public disabled:
307
321
 
308
322
  ```text
309
- ⚡ Skipping public tunnel (use --url to enable)
310
-
311
- 💡 Need to share outside network?
312
- 👉 Run: devlinker --url
323
+ Proxy: http://localhost:8000
324
+ WLAN: http://192.168.1.5:8000
325
+ Public: disabled (use --url)
313
326
  ```
314
327
 
328
+ WLAN usage notes:
329
+
330
+ - `localhost` works only on the machine running DevLinker.
331
+ - Use the printed WLAN URL on phones/laptops connected to the same Wi-Fi/LAN.
332
+
333
+ WLAN troubleshooting checklist:
334
+
335
+ 1. Ensure both devices are on the same Wi-Fi/subnet.
336
+ 2. Allow Python/DevLinker through firewall prompts (Private networks).
337
+ 3. Keep Universal Mode enabled (default) so localhost API calls are rewritten safely for LAN/public links.
338
+
315
339
  Disable WLAN URL output:
316
340
 
317
341
  ```bash
@@ -401,7 +425,6 @@ Example:
401
425
  frontend: 5173
402
426
  backend: 5000
403
427
  proxy_port: 8001
404
- tunnel: false
405
428
  backend_entry: main.py
406
429
  api_prefix: /api
407
430
  strip_prefix: true
@@ -412,6 +435,7 @@ Config key notes:
412
435
  - `backend_entry`: Optional Python backend startup file override (for example `main.py`)
413
436
  - `api_prefix`: Prefix DevLinker treats as API traffic (default: `/api`)
414
437
  - `strip_prefix`: When `true`, strips configured `api_prefix` before forwarding to backend
438
+ - Public tunnel is opt-in at runtime using `--url`; local/WLAN mode works without ngrok/cloudflared.
415
439
 
416
440
  ## Backend Auto-Detection
417
441
 
@@ -112,7 +112,7 @@ If DevLinker helps you ship faster, consider supporting the project:
112
112
  - `devlinker fix` — Auto-fix common issues (env, API paths, config)
113
113
  - `devlinker --frontend 5173 --backend 5000` — Override detected ports
114
114
  - `devlinker --docker` — Auto-start Docker backend
115
- - `devlinker --no-tunnel` — Force local-only mode
115
+ - `devlinker --no-tunnel` — Explicitly force local/WLAN-only mode (no public tunnel)
116
116
  - `devlinker --no-lan` — Hide WLAN sharing URL
117
117
  - `devlinker --interactive-backend` — Prompt to choose backend if multiple found
118
118
  - `devlinker --proxy-port 18000` — Use custom proxy port
@@ -257,6 +257,20 @@ devlinker --docker
257
257
 
258
258
  By default, DevLinker starts **fast local proxy only** (no tunnel). It prints a LAN URL when it can detect a local network interface, and you can share that link with devices on the same Wi-Fi/LAN.
259
259
 
260
+ LAN-only quick start:
261
+
262
+ ```bash
263
+ devlinker
264
+ ```
265
+
266
+ You can also pass `--no-tunnel` to explicitly enforce no public tunnel startup:
267
+
268
+ ```bash
269
+ devlinker --no-tunnel
270
+ ```
271
+
272
+ `--no-tunnel` does **not** disable frontend/backend linking. DevLinker still starts the local proxy and routes frontend + backend through the same local entry URL.
273
+
260
274
  For access from another network, start with a public tunnel using the `--url` flag:
261
275
 
262
276
 
@@ -277,21 +291,31 @@ This starts the proxy and opens a public tunnel (Cloudflare or ngrok). The outpu
277
291
 
278
292
  If your friend is on the same Wi-Fi/LAN, use the printed LAN URL like `http://192.168.x.x:<proxy-port>`. If they are outside your network, use the public tunnel URL instead.
279
293
 
280
- To force tunnel off (even if --url is passed):
294
+ To force tunnel off (even if `--url` is passed):
281
295
 
282
296
  ```bash
283
297
  devlinker --no-tunnel
284
298
  ```
285
299
 
286
- When running without `--url`, you’ll see:
300
+ When running without `--url`, you’ll see local/WLAN output with public disabled:
287
301
 
288
302
  ```text
289
- ⚡ Skipping public tunnel (use --url to enable)
290
-
291
- 💡 Need to share outside network?
292
- 👉 Run: devlinker --url
303
+ Proxy: http://localhost:8000
304
+ WLAN: http://192.168.1.5:8000
305
+ Public: disabled (use --url)
293
306
  ```
294
307
 
308
+ WLAN usage notes:
309
+
310
+ - `localhost` works only on the machine running DevLinker.
311
+ - Use the printed WLAN URL on phones/laptops connected to the same Wi-Fi/LAN.
312
+
313
+ WLAN troubleshooting checklist:
314
+
315
+ 1. Ensure both devices are on the same Wi-Fi/subnet.
316
+ 2. Allow Python/DevLinker through firewall prompts (Private networks).
317
+ 3. Keep Universal Mode enabled (default) so localhost API calls are rewritten safely for LAN/public links.
318
+
295
319
  Disable WLAN URL output:
296
320
 
297
321
  ```bash
@@ -381,7 +405,6 @@ Example:
381
405
  frontend: 5173
382
406
  backend: 5000
383
407
  proxy_port: 8001
384
- tunnel: false
385
408
  backend_entry: main.py
386
409
  api_prefix: /api
387
410
  strip_prefix: true
@@ -392,6 +415,7 @@ Config key notes:
392
415
  - `backend_entry`: Optional Python backend startup file override (for example `main.py`)
393
416
  - `api_prefix`: Prefix DevLinker treats as API traffic (default: `/api`)
394
417
  - `strip_prefix`: When `true`, strips configured `api_prefix` before forwarding to backend
418
+ - Public tunnel is opt-in at runtime using `--url`; local/WLAN mode works without ngrok/cloudflared.
395
419
 
396
420
  ## Backend Auto-Detection
397
421
 
@@ -420,6 +420,13 @@ def _wait_for_readiness(
420
420
  return False
421
421
 
422
422
 
423
+ def _should_enable_tunnel(url: bool, no_tunnel: bool) -> bool:
424
+ """Public tunnels are opt-in and only enabled with --url unless explicitly disabled."""
425
+ if no_tunnel:
426
+ return False
427
+ return bool(url)
428
+
429
+
423
430
  def _wait_for_readiness_live(
424
431
  label: str,
425
432
  port: int,
@@ -532,8 +539,6 @@ def _run_proxy(
532
539
  backend_port_override = config.get("backend")
533
540
  if proxy_port == 8000 and config.get("proxy_port"):
534
541
  proxy_port = config["proxy_port"]
535
- if not url and config.get("tunnel") is True:
536
- url = True
537
542
  configured_api_prefix = config.get("api_prefix", "/api")
538
543
  strip_prefix = bool(config.get("strip_prefix", False))
539
544
  backend_entry = config.get("backend_entry")
@@ -680,11 +685,7 @@ def _run_proxy(
680
685
  _ui_status("🛠", "Debug mode enabled: live API request logger is ON", style="magenta")
681
686
 
682
687
  warning_free_url: str | None = None
683
- enable_tunnel = False
684
- if url:
685
- enable_tunnel = True
686
- if no_tunnel:
687
- enable_tunnel = False
688
+ enable_tunnel = _should_enable_tunnel(url=url, no_tunnel=no_tunnel)
688
689
 
689
690
  if enable_tunnel:
690
691
  try:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devlinker
3
- Version: 1.4.5
3
+ Version: 1.4.6
4
4
  Summary: A lightweight proxy that combines your frontend and backend into one link for easy development and sharing.
5
5
  Author-email: Mani <mani1028@users.noreply.github.com>
6
6
  Requires-Python: >=3.7
@@ -132,7 +132,7 @@ If DevLinker helps you ship faster, consider supporting the project:
132
132
  - `devlinker fix` — Auto-fix common issues (env, API paths, config)
133
133
  - `devlinker --frontend 5173 --backend 5000` — Override detected ports
134
134
  - `devlinker --docker` — Auto-start Docker backend
135
- - `devlinker --no-tunnel` — Force local-only mode
135
+ - `devlinker --no-tunnel` — Explicitly force local/WLAN-only mode (no public tunnel)
136
136
  - `devlinker --no-lan` — Hide WLAN sharing URL
137
137
  - `devlinker --interactive-backend` — Prompt to choose backend if multiple found
138
138
  - `devlinker --proxy-port 18000` — Use custom proxy port
@@ -277,6 +277,20 @@ devlinker --docker
277
277
 
278
278
  By default, DevLinker starts **fast local proxy only** (no tunnel). It prints a LAN URL when it can detect a local network interface, and you can share that link with devices on the same Wi-Fi/LAN.
279
279
 
280
+ LAN-only quick start:
281
+
282
+ ```bash
283
+ devlinker
284
+ ```
285
+
286
+ You can also pass `--no-tunnel` to explicitly enforce no public tunnel startup:
287
+
288
+ ```bash
289
+ devlinker --no-tunnel
290
+ ```
291
+
292
+ `--no-tunnel` does **not** disable frontend/backend linking. DevLinker still starts the local proxy and routes frontend + backend through the same local entry URL.
293
+
280
294
  For access from another network, start with a public tunnel using the `--url` flag:
281
295
 
282
296
 
@@ -297,21 +311,31 @@ This starts the proxy and opens a public tunnel (Cloudflare or ngrok). The outpu
297
311
 
298
312
  If your friend is on the same Wi-Fi/LAN, use the printed LAN URL like `http://192.168.x.x:<proxy-port>`. If they are outside your network, use the public tunnel URL instead.
299
313
 
300
- To force tunnel off (even if --url is passed):
314
+ To force tunnel off (even if `--url` is passed):
301
315
 
302
316
  ```bash
303
317
  devlinker --no-tunnel
304
318
  ```
305
319
 
306
- When running without `--url`, you’ll see:
320
+ When running without `--url`, you’ll see local/WLAN output with public disabled:
307
321
 
308
322
  ```text
309
- ⚡ Skipping public tunnel (use --url to enable)
310
-
311
- 💡 Need to share outside network?
312
- 👉 Run: devlinker --url
323
+ Proxy: http://localhost:8000
324
+ WLAN: http://192.168.1.5:8000
325
+ Public: disabled (use --url)
313
326
  ```
314
327
 
328
+ WLAN usage notes:
329
+
330
+ - `localhost` works only on the machine running DevLinker.
331
+ - Use the printed WLAN URL on phones/laptops connected to the same Wi-Fi/LAN.
332
+
333
+ WLAN troubleshooting checklist:
334
+
335
+ 1. Ensure both devices are on the same Wi-Fi/subnet.
336
+ 2. Allow Python/DevLinker through firewall prompts (Private networks).
337
+ 3. Keep Universal Mode enabled (default) so localhost API calls are rewritten safely for LAN/public links.
338
+
315
339
  Disable WLAN URL output:
316
340
 
317
341
  ```bash
@@ -401,7 +425,6 @@ Example:
401
425
  frontend: 5173
402
426
  backend: 5000
403
427
  proxy_port: 8001
404
- tunnel: false
405
428
  backend_entry: main.py
406
429
  api_prefix: /api
407
430
  strip_prefix: true
@@ -412,6 +435,7 @@ Config key notes:
412
435
  - `backend_entry`: Optional Python backend startup file override (for example `main.py`)
413
436
  - `api_prefix`: Prefix DevLinker treats as API traffic (default: `/api`)
414
437
  - `strip_prefix`: When `true`, strips configured `api_prefix` before forwarding to backend
438
+ - Public tunnel is opt-in at runtime using `--url`; local/WLAN mode works without ngrok/cloudflared.
415
439
 
416
440
  ## Backend Auto-Detection
417
441
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devlinker"
7
- version = "1.4.5"
7
+ version = "1.4.6"
8
8
  description = "A lightweight proxy that combines your frontend and backend into one link for easy development and sharing."
9
9
  authors = [
10
10
  { name = "Mani", email = "mani1028@users.noreply.github.com" }
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