@superdangerous/app-framework 4.16.15 → 4.16.17

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.
@@ -77,8 +77,10 @@ class DevServerOrchestrator {
77
77
  this.hasShownBanner = true;
78
78
  // Show any buffered important messages
79
79
  if (this.outputBuffer.length > 0) {
80
- logger.info("\n" + chalk.gray("Recent activity:"));
81
- this.outputBuffer.forEach((msg) => logger.info(msg));
80
+ console.log("\n" + chalk.gray("Recent activity:"));
81
+ // Write directly to avoid adding duplicate timestamps
82
+ // (backend output already has timestamps from the backend logger)
83
+ this.outputBuffer.forEach((msg) => console.log(msg));
82
84
  this.outputBuffer = [];
83
85
  }
84
86
  }
@@ -95,7 +97,6 @@ class DevServerOrchestrator {
95
97
  this.backendProcess = spawn(cmd, args, {
96
98
  stdio: ["inherit", "pipe", "pipe"],
97
99
  shell: true,
98
- detached: true, // Create a new process group
99
100
  env: {
100
101
  ...process.env,
101
102
  LOG_LEVEL: "warn", // Only show warnings and errors
@@ -127,21 +128,20 @@ class DevServerOrchestrator {
127
128
  if (output.includes("EADDRINUSE") || output.includes("already in use")) {
128
129
  this.showPortConflictError(this.config.backendPort, "backend");
129
130
  }
130
- // Show errors
131
- if (output.toLowerCase().includes("error") &&
132
- !output.includes("ExperimentalWarning")) {
133
- const lines = output.trim().split("\n");
134
- lines.forEach((line) => {
135
- if (line.trim()) {
136
- const msg = chalk.red(`[Backend] ${line.trim()}`);
137
- if (this.hasShownBanner) {
138
- logger.error(msg);
139
- }
140
- else {
141
- this.outputBuffer.push(msg);
142
- }
143
- }
144
- });
131
+ // Pass through backend stdout, but filter out the backend's startup banner
132
+ // (the dev-server shows its own banner, so we don't want duplicates)
133
+ // Banner lines typically contain box-drawing characters: ╭ ╰ │ ─
134
+ const isBannerLine = /[╭╰│─╮╯]/.test(output) ||
135
+ output.includes('Press Ctrl+C') ||
136
+ /^\s*(v\d+\.\d+\.\d+|Environment:|Framework:)\s*$/.test(output.trim());
137
+ if (output.trim() && !output.includes("ExperimentalWarning") && !isBannerLine) {
138
+ if (this.hasShownBanner) {
139
+ process.stdout.write(output);
140
+ }
141
+ else {
142
+ // Buffer output until banner is shown
143
+ this.outputBuffer.push(output.trim());
144
+ }
145
145
  }
146
146
  });
147
147
  this.backendProcess.stderr?.on("data", (data) => {
@@ -151,8 +151,8 @@ class DevServerOrchestrator {
151
151
  output.includes("address already in use")) {
152
152
  this.showPortConflictError(this.config.backendPort, "backend");
153
153
  }
154
- // For backend stderr, just pass it through as-is to preserve formatting
155
- // The backend logger already handles coloring appropriately
154
+ // Pass through backend stderr as-is to preserve formatting
155
+ // The backend logger already handles timestamps and coloring
156
156
  if (output.trim() && !output.includes("ExperimentalWarning")) {
157
157
  process.stderr.write(output);
158
158
  }
@@ -242,7 +242,6 @@ class DevServerOrchestrator {
242
242
  this.frontendProcess = spawn(cmd, args, {
243
243
  stdio: ["inherit", "pipe", "pipe"],
244
244
  shell: true,
245
- detached: true,
246
245
  cwd: path.join(process.cwd(), dir), // Run in the subdirectory
247
246
  env: {
248
247
  ...process.env,
@@ -259,7 +258,6 @@ class DevServerOrchestrator {
259
258
  this.frontendProcess = spawn(cmd, args, {
260
259
  stdio: ["inherit", "pipe", "pipe"],
261
260
  shell: true,
262
- detached: true,
263
261
  cwd: process.cwd(),
264
262
  env: {
265
263
  ...process.env,
@@ -285,7 +283,6 @@ class DevServerOrchestrator {
285
283
  this.frontendProcess = spawn(cmd, args, {
286
284
  stdio: ["inherit", "pipe", "pipe"],
287
285
  shell: true,
288
- detached: true, // Create a new process group
289
286
  cwd: process.cwd(), // Explicitly set working directory
290
287
  env: {
291
288
  ...process.env,
@@ -464,40 +461,34 @@ class DevServerOrchestrator {
464
461
  }
465
462
  }, 5000);
466
463
  }
467
- cleanup() {
468
- // Kill process groups to ensure all child processes are terminated
469
- if (this.backendProcess && this.backendProcess.pid) {
470
- try {
471
- // Kill the entire process group (negative PID)
472
- process.kill(-this.backendProcess.pid, "SIGTERM");
473
- }
474
- catch (_e) {
475
- // Fallback to regular kill
476
- try {
477
- this.backendProcess.kill("SIGTERM");
478
- }
479
- catch (_err) {
480
- // Process might already be dead
481
- }
482
- }
483
- this.backendProcess = null;
464
+ killProcess(proc) {
465
+ if (!proc || !proc.pid)
466
+ return;
467
+ const pid = proc.pid;
468
+ try {
469
+ proc.kill("SIGTERM");
470
+ }
471
+ catch (_e) {
472
+ // Process might already be dead
484
473
  }
485
- if (this.frontendProcess && this.frontendProcess.pid) {
474
+ // SIGKILL fallback after 500ms if the process is still alive
475
+ setTimeout(() => {
486
476
  try {
487
- // Kill the entire process group (negative PID)
488
- process.kill(-this.frontendProcess.pid, "SIGTERM");
477
+ // Check if process is still running (signal 0 = existence check)
478
+ process.kill(pid, 0);
479
+ // Still alive — force kill
480
+ process.kill(pid, "SIGKILL");
489
481
  }
490
482
  catch (_e) {
491
- // Fallback to regular kill
492
- try {
493
- this.frontendProcess.kill("SIGTERM");
494
- }
495
- catch (_err) {
496
- // Process might already be dead
497
- }
483
+ // Already dead — nothing to do
498
484
  }
499
- this.frontendProcess = null;
500
- }
485
+ }, 500);
486
+ }
487
+ cleanup() {
488
+ this.killProcess(this.backendProcess);
489
+ this.backendProcess = null;
490
+ this.killProcess(this.frontendProcess);
491
+ this.frontendProcess = null;
501
492
  }
502
493
  async checkPort(port) {
503
494
  return new Promise((resolve) => {
@@ -626,11 +617,15 @@ class DevServerOrchestrator {
626
617
  logger.info(chalk.yellow("\n\nShutting down..."));
627
618
  this.cleanup();
628
619
  // Force exit after a delay if processes don't terminate
629
- setTimeout(() => process.exit(0), 1000);
620
+ setTimeout(() => process.exit(0), 1500);
630
621
  });
631
622
  process.on("SIGTERM", () => {
632
623
  this.cleanup();
633
- process.exit(0);
624
+ setTimeout(() => process.exit(0), 1500);
625
+ });
626
+ // Safety net: ensure child processes are cleaned up on any exit
627
+ process.on("exit", () => {
628
+ this.cleanup();
634
629
  });
635
630
  }
636
631
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/cli/dev-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/cli/dev-server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdangerous/app-framework",
3
- "version": "4.16.15",
3
+ "version": "4.16.17",
4
4
  "description": "Opinionated TypeScript framework for structured vibecoding - building internal web and desktop apps with batteries included",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -106,8 +106,10 @@ class DevServerOrchestrator {
106
106
 
107
107
  // Show any buffered important messages
108
108
  if (this.outputBuffer.length > 0) {
109
- logger.info("\n" + chalk.gray("Recent activity:"));
110
- this.outputBuffer.forEach((msg) => logger.info(msg));
109
+ console.log("\n" + chalk.gray("Recent activity:"));
110
+ // Write directly to avoid adding duplicate timestamps
111
+ // (backend output already has timestamps from the backend logger)
112
+ this.outputBuffer.forEach((msg) => console.log(msg));
111
113
  this.outputBuffer = [];
112
114
  }
113
115
  }
@@ -130,7 +132,6 @@ class DevServerOrchestrator {
130
132
  this.backendProcess = spawn(cmd, args, {
131
133
  stdio: ["inherit", "pipe", "pipe"],
132
134
  shell: true,
133
- detached: true, // Create a new process group
134
135
  env: {
135
136
  ...process.env,
136
137
  LOG_LEVEL: "warn", // Only show warnings and errors
@@ -168,22 +169,20 @@ class DevServerOrchestrator {
168
169
  this.showPortConflictError(this.config.backendPort, "backend");
169
170
  }
170
171
 
171
- // Show errors
172
- if (
173
- output.toLowerCase().includes("error") &&
174
- !output.includes("ExperimentalWarning")
175
- ) {
176
- const lines = output.trim().split("\n");
177
- lines.forEach((line: string) => {
178
- if (line.trim()) {
179
- const msg = chalk.red(`[Backend] ${line.trim()}`);
180
- if (this.hasShownBanner) {
181
- logger.error(msg);
182
- } else {
183
- this.outputBuffer.push(msg);
184
- }
185
- }
186
- });
172
+ // Pass through backend stdout, but filter out the backend's startup banner
173
+ // (the dev-server shows its own banner, so we don't want duplicates)
174
+ // Banner lines typically contain box-drawing characters: ╭ ╰ │ ─
175
+ const isBannerLine = /[╭╰│─╮╯]/.test(output) ||
176
+ output.includes('Press Ctrl+C') ||
177
+ /^\s*(v\d+\.\d+\.\d+|Environment:|Framework:)\s*$/.test(output.trim());
178
+
179
+ if (output.trim() && !output.includes("ExperimentalWarning") && !isBannerLine) {
180
+ if (this.hasShownBanner) {
181
+ process.stdout.write(output);
182
+ } else {
183
+ // Buffer output until banner is shown
184
+ this.outputBuffer.push(output.trim());
185
+ }
187
186
  }
188
187
  });
189
188
 
@@ -198,8 +197,8 @@ class DevServerOrchestrator {
198
197
  this.showPortConflictError(this.config.backendPort, "backend");
199
198
  }
200
199
 
201
- // For backend stderr, just pass it through as-is to preserve formatting
202
- // The backend logger already handles coloring appropriately
200
+ // Pass through backend stderr as-is to preserve formatting
201
+ // The backend logger already handles timestamps and coloring
203
202
  if (output.trim() && !output.includes("ExperimentalWarning")) {
204
203
  process.stderr.write(output);
205
204
  }
@@ -318,7 +317,7 @@ class DevServerOrchestrator {
318
317
  this.frontendProcess = spawn(cmd, args, {
319
318
  stdio: ["inherit", "pipe", "pipe"],
320
319
  shell: true,
321
- detached: true,
320
+
322
321
  cwd: path.join(process.cwd(), dir), // Run in the subdirectory
323
322
  env: {
324
323
  ...process.env,
@@ -334,7 +333,7 @@ class DevServerOrchestrator {
334
333
  this.frontendProcess = spawn(cmd, args, {
335
334
  stdio: ["inherit", "pipe", "pipe"],
336
335
  shell: true,
337
- detached: true,
336
+
338
337
  cwd: process.cwd(),
339
338
  env: {
340
339
  ...process.env,
@@ -359,7 +358,6 @@ class DevServerOrchestrator {
359
358
  this.frontendProcess = spawn(cmd, args, {
360
359
  stdio: ["inherit", "pipe", "pipe"],
361
360
  shell: true,
362
- detached: true, // Create a new process group
363
361
  cwd: process.cwd(), // Explicitly set working directory
364
362
  env: {
365
363
  ...process.env,
@@ -593,37 +591,32 @@ class DevServerOrchestrator {
593
591
  }, 5000);
594
592
  }
595
593
 
596
- private cleanup() {
597
- // Kill process groups to ensure all child processes are terminated
598
- if (this.backendProcess && this.backendProcess.pid) {
599
- try {
600
- // Kill the entire process group (negative PID)
601
- process.kill(-this.backendProcess.pid, "SIGTERM");
602
- } catch (_e) {
603
- // Fallback to regular kill
604
- try {
605
- this.backendProcess.kill("SIGTERM");
606
- } catch (_err) {
607
- // Process might already be dead
608
- }
609
- }
610
- this.backendProcess = null;
594
+ private killProcess(proc: ChildProcess | null) {
595
+ if (!proc || !proc.pid) return;
596
+ const pid = proc.pid;
597
+ try {
598
+ proc.kill("SIGTERM");
599
+ } catch (_e) {
600
+ // Process might already be dead
611
601
  }
612
-
613
- if (this.frontendProcess && this.frontendProcess.pid) {
602
+ // SIGKILL fallback after 500ms if the process is still alive
603
+ setTimeout(() => {
614
604
  try {
615
- // Kill the entire process group (negative PID)
616
- process.kill(-this.frontendProcess.pid, "SIGTERM");
605
+ // Check if process is still running (signal 0 = existence check)
606
+ process.kill(pid, 0);
607
+ // Still alive — force kill
608
+ process.kill(pid, "SIGKILL");
617
609
  } catch (_e) {
618
- // Fallback to regular kill
619
- try {
620
- this.frontendProcess.kill("SIGTERM");
621
- } catch (_err) {
622
- // Process might already be dead
623
- }
610
+ // Already dead — nothing to do
624
611
  }
625
- this.frontendProcess = null;
626
- }
612
+ }, 500);
613
+ }
614
+
615
+ private cleanup() {
616
+ this.killProcess(this.backendProcess);
617
+ this.backendProcess = null;
618
+ this.killProcess(this.frontendProcess);
619
+ this.frontendProcess = null;
627
620
  }
628
621
 
629
622
  private async checkPort(port: number): Promise<boolean> {
@@ -788,12 +781,17 @@ class DevServerOrchestrator {
788
781
  logger.info(chalk.yellow("\n\nShutting down..."));
789
782
  this.cleanup();
790
783
  // Force exit after a delay if processes don't terminate
791
- setTimeout(() => process.exit(0), 1000);
784
+ setTimeout(() => process.exit(0), 1500);
792
785
  });
793
786
 
794
787
  process.on("SIGTERM", () => {
795
788
  this.cleanup();
796
- process.exit(0);
789
+ setTimeout(() => process.exit(0), 1500);
790
+ });
791
+
792
+ // Safety net: ensure child processes are cleaned up on any exit
793
+ process.on("exit", () => {
794
+ this.cleanup();
797
795
  });
798
796
  }
799
797
  }
@@ -0,0 +1,153 @@
1
+ import React from 'react';
2
+ import { Checkbox } from '../../components/base/checkbox';
3
+ import { Button } from '../../components/base/button';
4
+ import { cn } from '../../src/utils/cn';
5
+
6
+ export interface MultiSelectOption<T extends string = string> {
7
+ /** Unique value for this option */
8
+ value: T;
9
+ /** Display label */
10
+ label: string;
11
+ /** Optional custom render for the label (e.g., with icon/flag) */
12
+ render?: () => React.ReactNode;
13
+ }
14
+
15
+ export interface MultiSelectFilterProps<T extends string = string> {
16
+ /** Available options to select from */
17
+ options: MultiSelectOption<T>[];
18
+ /** Currently selected values */
19
+ selected: Set<T>;
20
+ /** Called when selection changes */
21
+ onChange: (selected: Set<T>) => void;
22
+ /** Maximum height before scrolling (default: 200px) */
23
+ maxHeight?: number;
24
+ /** Number of columns for grid layout (default: 2) */
25
+ columns?: 1 | 2 | 3;
26
+ /** Show select all / clear buttons */
27
+ showBulkActions?: boolean;
28
+ /** Optional className for the container */
29
+ className?: string;
30
+ }
31
+
32
+ /**
33
+ * MultiSelectFilter - A checkbox-based multi-select filter component
34
+ *
35
+ * Designed to work with the TableFilters popover for filtering data tables.
36
+ * Supports custom rendering per option (for flags, badges, icons, etc.)
37
+ */
38
+ export function MultiSelectFilter<T extends string = string>({
39
+ options,
40
+ selected,
41
+ onChange,
42
+ maxHeight = 200,
43
+ columns = 2,
44
+ showBulkActions = true,
45
+ className,
46
+ }: MultiSelectFilterProps<T>) {
47
+ const handleToggle = (value: T) => {
48
+ const newSelected = new Set(selected);
49
+ if (newSelected.has(value)) {
50
+ newSelected.delete(value);
51
+ } else {
52
+ newSelected.add(value);
53
+ }
54
+ onChange(newSelected);
55
+ };
56
+
57
+ const handleSelectAll = () => {
58
+ onChange(new Set(options.map(o => o.value)));
59
+ };
60
+
61
+ const handleClear = () => {
62
+ onChange(new Set());
63
+ };
64
+
65
+ const gridCols = {
66
+ 1: 'grid-cols-1',
67
+ 2: 'grid-cols-2',
68
+ 3: 'grid-cols-3',
69
+ };
70
+
71
+ const allSelected = options.length > 0 && selected.size === options.length;
72
+ const noneSelected = selected.size === 0;
73
+
74
+ return (
75
+ <div className={cn('space-y-2', className)}>
76
+ {/* Bulk action buttons */}
77
+ {showBulkActions && options.length > 3 && (
78
+ <div className="flex items-center gap-2 text-xs">
79
+ <Button
80
+ type="button"
81
+ variant="ghost"
82
+ size="sm"
83
+ onClick={handleSelectAll}
84
+ disabled={allSelected}
85
+ className="h-6 px-2 text-xs text-muted-foreground hover:text-foreground"
86
+ >
87
+ Select all
88
+ </Button>
89
+ <span className="text-muted-foreground">·</span>
90
+ <Button
91
+ type="button"
92
+ variant="ghost"
93
+ size="sm"
94
+ onClick={handleClear}
95
+ disabled={noneSelected}
96
+ className="h-6 px-2 text-xs text-muted-foreground hover:text-foreground"
97
+ >
98
+ Clear
99
+ </Button>
100
+ {selected.size > 0 && (
101
+ <>
102
+ <span className="text-muted-foreground">·</span>
103
+ <span className="text-muted-foreground">
104
+ {selected.size} selected
105
+ </span>
106
+ </>
107
+ )}
108
+ </div>
109
+ )}
110
+
111
+ {/* Options grid */}
112
+ <div
113
+ className={cn('overflow-y-auto', options.length > 6 && 'pr-1')}
114
+ style={{ maxHeight: `${maxHeight}px` }}
115
+ >
116
+ <div className={cn('grid gap-1', gridCols[columns])}>
117
+ {options.map((option) => (
118
+ <label
119
+ key={option.value}
120
+ className={cn(
121
+ 'flex items-center gap-2 px-2 py-1.5 rounded-md cursor-pointer',
122
+ 'hover:bg-muted/50 transition-colors',
123
+ selected.has(option.value) && 'bg-muted/30'
124
+ )}
125
+ >
126
+ <Checkbox
127
+ checked={selected.has(option.value)}
128
+ onCheckedChange={() => handleToggle(option.value)}
129
+ className="h-3.5 w-3.5"
130
+ />
131
+ {option.render ? (
132
+ <span className="flex items-center gap-1.5 text-sm truncate">
133
+ {option.render()}
134
+ </span>
135
+ ) : (
136
+ <span className="text-sm truncate">{option.label}</span>
137
+ )}
138
+ </label>
139
+ ))}
140
+ </div>
141
+ </div>
142
+
143
+ {/* Empty state */}
144
+ {options.length === 0 && (
145
+ <div className="text-sm text-muted-foreground text-center py-2">
146
+ No options available
147
+ </div>
148
+ )}
149
+ </div>
150
+ );
151
+ }
152
+
153
+ export default MultiSelectFilter;
@@ -9,6 +9,8 @@ export interface FilterOption {
9
9
  id: string;
10
10
  label: string;
11
11
  render: () => React.ReactNode;
12
+ /** Filter type - 'multi' filters get more horizontal space */
13
+ type?: 'single' | 'multi';
12
14
  }
13
15
 
14
16
  export interface TableFiltersProps {
@@ -42,6 +44,10 @@ export function TableFilters({
42
44
  className,
43
45
  children,
44
46
  }: TableFiltersProps) {
47
+ // Check if any filter needs wider layout (multi-select filters)
48
+ const hasMultiFilters = filters?.some(f => f.type === 'multi');
49
+ const popoverWidth = hasMultiFilters ? 'w-[420px]' : 'w-80';
50
+
45
51
  return (
46
52
  <div className={cn('flex items-center gap-3 flex-wrap', className)}>
47
53
  {/* Search Input */}
@@ -81,7 +87,7 @@ export function TableFilters({
81
87
  </Button>
82
88
  </PopoverTrigger>
83
89
  <PopoverContent
84
- className="w-80 overflow-y-auto"
90
+ className={cn(popoverWidth, 'overflow-y-auto')}
85
91
  align="start"
86
92
  collisionPadding={16}
87
93
  style={{ maxHeight: 'var(--radix-popover-content-available-height)' }}
@@ -101,7 +107,7 @@ export function TableFilters({
101
107
  )}
102
108
  </div>
103
109
 
104
- <div className="space-y-3">
110
+ <div className="space-y-4">
105
111
  {filters.map((filter) => (
106
112
  <div key={filter.id} className="space-y-1.5">
107
113
  <label className="text-xs font-medium text-muted-foreground">
@@ -39,3 +39,6 @@ export { ColumnVisibility } from './ColumnVisibility';
39
39
 
40
40
  export { TableFilters } from './TableFilters';
41
41
  export type { TableFiltersProps, FilterOption as TableFilterOption } from './TableFilters';
42
+
43
+ export { MultiSelectFilter } from './MultiSelectFilter';
44
+ export type { MultiSelectFilterProps, MultiSelectOption } from './MultiSelectFilter';