@linxin666/dsh-remote-web-ui 0.1.19 → 0.1.20

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 (86) hide show
  1. package/lib/client.js +20 -3
  2. package/lib/client.js.map +1 -1
  3. package/lib/index.js +119 -78
  4. package/lib/mobile.js +18 -5
  5. package/lib/mobile.js.map +1 -1
  6. package/lib/types/client/FooterRemoteEntry.js +1 -1
  7. package/lib/types/client/PluginSettingsCard.d.ts +1 -1
  8. package/lib/types/client/PluginSettingsCard.d.ts.map +1 -1
  9. package/lib/types/client/RemoteEntry.d.ts.map +1 -1
  10. package/lib/types/client/RemoteEntry.js +41 -11
  11. package/lib/types/client/RemotePanel.d.ts +1 -0
  12. package/lib/types/client/RemotePanel.d.ts.map +1 -1
  13. package/lib/types/client/RemotePanel.js +2 -2
  14. package/lib/types/client/RemoteSettingsCard.d.ts.map +1 -1
  15. package/lib/types/client/RemoteSettingsCard.js +2 -2
  16. package/lib/types/client/UpdateEntry.js +1 -1
  17. package/lib/types/client/UpdatePanel.js +1 -1
  18. package/lib/types/client/deep-link.js +1 -1
  19. package/lib/types/client/index.js +7 -7
  20. package/lib/types/client/settings-form.d.ts.map +1 -1
  21. package/lib/types/client/update-api.d.ts.map +1 -1
  22. package/lib/types/gate.js +1 -1
  23. package/lib/types/http.d.ts +14 -0
  24. package/lib/types/http.d.ts.map +1 -0
  25. package/lib/types/http.js +27 -0
  26. package/lib/types/index.d.ts +3 -1
  27. package/lib/types/index.d.ts.map +1 -1
  28. package/lib/types/index.js +12 -10
  29. package/lib/types/invariant.d.ts.map +1 -1
  30. package/lib/types/mobile/api.js +1 -1
  31. package/lib/types/mobile/index.js +3 -3
  32. package/lib/types/mobile/markdown.d.ts +6 -4
  33. package/lib/types/mobile/markdown.d.ts.map +1 -1
  34. package/lib/types/mobile/markdown.js +8 -4
  35. package/lib/types/mobile/markdown.test.js +5 -1
  36. package/lib/types/mobile/messages.d.ts.map +1 -1
  37. package/lib/types/mobile/messages.js +14 -1
  38. package/lib/types/mobile/messages.test.js +1 -1
  39. package/lib/types/mobile/mobile-theme.test.js +2 -2
  40. package/lib/types/mobile/mux.d.ts.map +1 -1
  41. package/lib/types/mobile/mux.js +1 -1
  42. package/lib/types/mobile/mux.test.js +1 -1
  43. package/lib/types/mobile/rpc.d.ts.map +1 -1
  44. package/lib/types/mobile/theme-toggle.js +1 -1
  45. package/lib/types/mobile/views/App.d.ts +0 -11
  46. package/lib/types/mobile/views/App.d.ts.map +1 -1
  47. package/lib/types/mobile/views/App.js +6 -6
  48. package/lib/types/mobile/views/ChatView.js +6 -6
  49. package/lib/types/mobile/views/ChatView.test.js +3 -3
  50. package/lib/types/mobile/views/SessionListView.js +3 -3
  51. package/lib/types/mobile/views/SessionListView.test.js +2 -2
  52. package/lib/types/mobile/views/WorkspaceView.js +3 -3
  53. package/lib/types/mobile/views/WorkspaceView.test.js +3 -3
  54. package/lib/types/mobile-api.d.ts +1 -1
  55. package/lib/types/mobile-api.d.ts.map +1 -1
  56. package/lib/types/mobile-api.js +11 -18
  57. package/lib/types/mobile-routes.d.ts.map +1 -1
  58. package/lib/types/mobile-routes.js +17 -11
  59. package/lib/types/mount-once.d.ts +25 -0
  60. package/lib/types/mount-once.d.ts.map +1 -0
  61. package/lib/types/mount-once.js +42 -0
  62. package/lib/types/pairing.d.ts.map +1 -1
  63. package/lib/types/routes.d.ts +6 -6
  64. package/lib/types/routes.d.ts.map +1 -1
  65. package/lib/types/routes.js +14 -19
  66. package/lib/types/tunnel.d.ts.map +1 -1
  67. package/lib/types/update-routes.d.ts +2 -2
  68. package/lib/types/update-routes.d.ts.map +1 -1
  69. package/lib/types/update-routes.js +1 -6
  70. package/lib/types/update.d.ts.map +1 -1
  71. package/lib/types/update.js +6 -3
  72. package/package.json +1 -1
  73. package/src/client/RemoteEntry.tsx +38 -6
  74. package/src/client/RemotePanel.tsx +1 -1
  75. package/src/http.ts +30 -0
  76. package/src/index.ts +4 -1
  77. package/src/mobile/markdown.test.ts +5 -0
  78. package/src/mobile/markdown.ts +7 -4
  79. package/src/mobile/messages.ts +14 -1
  80. package/src/mobile/views/App.tsx +0 -12
  81. package/src/mobile-api.ts +9 -17
  82. package/src/mobile-routes.ts +16 -10
  83. package/src/mount-once.ts +48 -0
  84. package/src/routes.ts +11 -17
  85. package/src/update-routes.ts +1 -7
  86. package/src/update.ts +6 -3
package/lib/client.js CHANGED
@@ -2001,8 +2001,16 @@ window.__ModuleLoader__.load({
2001
2001
  * rendered by {@link UpdateEntry}. Component-local state per the client
2002
2002
  * stack rules: nothing here survives remounts or crosses entries.
2003
2003
  */
2004
- /** Apply one status frame onto the current ready state. */
2004
+ /**
2005
+ * Apply one status frame onto the current state: the ready state mirrors
2006
+ * the full phase/device picture, while the lan-required banner only keeps
2007
+ * the auto-tunnel frame (the signal for the running re-issue).
2008
+ */
2005
2009
  function mergeFrame(state, frame) {
2010
+ if (state.kind === "lan-required") return {
2011
+ ...state,
2012
+ ...frame.tunnel !== void 0 ? { tunnel: frame.tunnel } : {}
2013
+ };
2006
2014
  if (state.kind !== "ready") return state;
2007
2015
  return {
2008
2016
  ...state,
@@ -2020,6 +2028,10 @@ window.__ModuleLoader__.load({
2020
2028
  function RemoteEntry({ wide, useWorkspaces, t }) {
2021
2029
  const [open, setOpen] = (0, react.useState)(false);
2022
2030
  const [state, setState] = (0, react.useState)({ kind: "lan-required" });
2031
+ const stateRef = (0, react.useRef)(state);
2032
+ (0, react.useEffect)(() => {
2033
+ stateRef.current = state;
2034
+ }, [state]);
2023
2035
  const [copied, setCopied] = (0, react.useState)(false);
2024
2036
  const eventSource = (0, react.useRef)(void 0);
2025
2037
  const workspaceId = useWorkspaces((s) => s.recentWorkspaceId);
@@ -2058,14 +2070,19 @@ window.__ModuleLoader__.load({
2058
2070
  setOpen(true);
2059
2071
  const next = await mint();
2060
2072
  setState(next);
2061
- if (next.kind !== "ready") return;
2073
+ if (next.kind !== "ready" && next.kind !== "lan-required") return;
2062
2074
  const source = new EventSource("/api/pair/events");
2063
2075
  eventSource.current = source;
2064
2076
  source.onmessage = (event) => {
2065
2077
  try {
2066
2078
  const frame = JSON.parse(event.data);
2067
2079
  if (frame.type !== "state") return;
2068
- setState((previous) => mergeFrame(previous, frame));
2080
+ const previous = stateRef.current;
2081
+ if (previous.kind === "lan-required" && frame.tunnel?.state === "running" && previous.tunnel?.state !== "running") {
2082
+ mint().then(setState);
2083
+ return;
2084
+ }
2085
+ setState((current) => mergeFrame(current, frame));
2069
2086
  } catch {}
2070
2087
  };
2071
2088
  }, [mint]);