querysub 0.378.0 → 0.380.0

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.
package/.cursorrules CHANGED
@@ -10,6 +10,8 @@ When running a command in the current project, don't "cd" to it. It's redundant,
10
10
 
11
11
  Don't use redundant comments. If it's a single line and the function name says the same thing that the comment is going to say, you don't need the comment.
12
12
 
13
+ When you're inline passing a lambda as an argument, never specify the type. The type should always be inferred. Specifying the type is bad, and it's hard coding, and we don't like hard coding.
14
+
13
15
  NEVER EVER pass state to qreact.Component as a template parameter. It should ALSO be declared like so (inside the class):
14
16
  state = t.state({
15
17
  num: t.number,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "querysub",
3
- "version": "0.378.0",
3
+ "version": "0.380.0",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "note1": "note on node-forge fork, see https://github.com/digitalbazaar/forge/issues/744 for details",
@@ -40,6 +40,7 @@ export class MachineThreadInfo extends qreact.Component<{
40
40
  machineId: string;
41
41
  threadId?: string;
42
42
  onlyShowThread?: boolean;
43
+ noButtons?: boolean;
43
44
  }> {
44
45
  static renderInProgress = true;
45
46
 
@@ -93,7 +94,17 @@ export class MachineThreadInfo extends qreact.Component<{
93
94
  <>
94
95
  <div className={css.vbox(4)}>
95
96
  <strong>Entry Point</strong>
96
- <div>{threadInfo.entrypoint}</div>
97
+ <div>
98
+ {threadInfo.entrypoint && (
99
+ <a
100
+ href={`cursor://file/${threadInfo.entrypoint}`}
101
+ className={css.color("hsl(210, 100%, 80%)").textDecoration("none").textDecoration("underline", "hover")}
102
+ >
103
+ {threadInfo.entrypoint}
104
+ </a>
105
+ )}
106
+ {!threadInfo.entrypoint && threadInfo.entrypoint}
107
+ </div>
97
108
  </div>
98
109
 
99
110
  <div className={css.vbox(4)}>
@@ -112,9 +123,9 @@ export class MachineThreadInfo extends qreact.Component<{
112
123
  </div>
113
124
 
114
125
  <div className={css.hbox(12)}>
115
- <Button onClick={() => this.handleAttach(threadInfo)}>
126
+ {threadInfo && <Button onClick={() => this.handleAttach(threadInfo)}>
116
127
  Attach Debugger
117
- </Button>
128
+ </Button>}
118
129
 
119
130
  <Button onClick={this.handleRefresh}>
120
131
  Refresh
@@ -145,8 +156,8 @@ export class MachineThreadInfo extends qreact.Component<{
145
156
 
146
157
  return (
147
158
  <div
148
- className={css.button.hbox(4).pad2(4).hsla(0, 0, 100, 0.5)}
149
- onClick={(e) => {
159
+ className={(this.props.noButtons && "" || css.button) + css.hbox(4).pad2(4).hsla(0, 0, 100, 0.5)}
160
+ onClick={this.props.noButtons ? undefined : (e) => {
150
161
  e.stopPropagation();
151
162
  this.showExpandedView(machineInfo, threadInfo);
152
163
  }}
@@ -155,10 +166,22 @@ export class MachineThreadInfo extends qreact.Component<{
155
166
  {machineInfo?.hostname || this.props.machineId}
156
167
  </span>}
157
168
  {!this.props.onlyShowThread && this.props.threadId && " | "}
158
- {this.props.threadId && <span title={this.props.threadId}>
159
- {/* TODO: Create a mapping from entrypoints to nice names. The full folder path will likely be too large, but just the filename is too similar (it's server.ts both both the PathValueServer and the application server). */}
160
- {threadInfo?.entrypoint || this.props.threadId}
161
- </span>}
169
+ {this.props.threadId && (
170
+ threadInfo?.entrypoint ? (
171
+ <a
172
+ href={`cursor://file/${threadInfo.entrypoint}`}
173
+ title={this.props.threadId}
174
+ className={css.color("hsl(210, 100%, 80%)").textDecoration("none").textDecoration("underline", "hover")}
175
+ onClick={(e) => e.stopPropagation()}
176
+ >
177
+ {threadInfo.entrypoint}
178
+ </a>
179
+ ) : (
180
+ <span title={this.props.threadId}>
181
+ {this.props.threadId}
182
+ </span>
183
+ )
184
+ )}
162
185
  </div>
163
186
  );
164
187
  }
@@ -213,7 +236,7 @@ class MachineThreadInfoBase {
213
236
 
214
237
  // This function is only intended to be called between nodes
215
238
  public async getNodeInfo() {
216
- const hostname = await errorToUndefinedSilent(runPromise("hostname"));
239
+ const hostname = await errorToUndefinedSilent(runPromise("hostname", { quiet: true }));
217
240
  return {
218
241
  hostname: hostname?.trim() || "",
219
242
  entrypoint: process.argv[1] || "",
@@ -69,7 +69,11 @@ export class LogViewer3 extends qreact.Component {
69
69
  private searchSequenceNumber = 0;
70
70
 
71
71
  componentDidMount(): void {
72
- void this.loadPaths();
72
+ if (searchTextURL.value) {
73
+ void this.search();
74
+ } else {
75
+ void this.loadPaths();
76
+ }
73
77
  }
74
78
 
75
79
  getPaths(): TimeFilePathWithSize[] {