diff --git a/.planning/STATE.md b/.planning/STATE.md index f10cae856..b4f7eb515 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -102,7 +102,8 @@ None - ready to begin Phase 1 planning. | # | Description | Date | Commit | Directory | |---|-------------|------|--------|-----------| -| 1 | Create start.sh script with menu for test, dev, etc. | 2026-03-13 | - | [1-create-start-sh-script-with-menu-for-tes](./quick/1-create-start-sh-script-with-menu-for-tes/) | +| 1 | Create start.sh script with menu for test, dev, etc. | 2026-03-13 | b474f70 | [1-create-start-sh-script-with-menu-for-tes](./quick/1-create-start-sh-script-with-menu-for-tes/) | +| 2 | Update start.sh for network access and port configuration | 2026-03-13 | - | [2-update-start-sh-for-network-access-and-p](./quick/2-update-start-sh-for-network-access-and-p/) | --- diff --git a/.planning/quick/2-update-start-sh-for-network-access-and-p/2-PLAN.md b/.planning/quick/2-update-start-sh-for-network-access-and-p/2-PLAN.md new file mode 100644 index 000000000..d0c91c95b --- /dev/null +++ b/.planning/quick/2-update-start-sh-for-network-access-and-p/2-PLAN.md @@ -0,0 +1,33 @@ +--- +plan: 1 +type: quick +files_modified: + - start.sh +--- + + +Update start.sh to support network access (--host flag) and custom port configuration for dev/preview servers + + + + + +Update start.sh with network and port options +start.sh + +1. Update dev command to include --host flag for network access +2. Add port configuration (default 5173 for dev, 4173 for preview) +3. Add menu options for port selection +4. Show connection info after starting server (IP address, port) + +grep -E "(host|port|--host)" start.sh | head -10 +start.sh updated with network access and port options + + + + + +- Dev server accessible from other machines +- Port can be customized via menu or arguments +- Connection info displayed when server starts + diff --git a/.planning/quick/2-update-start-sh-for-network-access-and-p/2-SUMMARY.md b/.planning/quick/2-update-start-sh-for-network-access-and-p/2-SUMMARY.md new file mode 100644 index 000000000..31edeb4ec --- /dev/null +++ b/.planning/quick/2-update-start-sh-for-network-access-and-p/2-SUMMARY.md @@ -0,0 +1,47 @@ +# Quick Task 2 Summary - Update start.sh for Network Access + +**Task:** Update start.sh for network access and port configuration +**Date:** 2026-03-13 +**Status:** Complete + +--- + +## Completed + +### Task 1: Update start.sh with network and port options + +- **Network access**: Dev and preview servers now use `--host` flag +- **Port configuration**: + - Default dev port: 5173 + - Default preview port: 4173 + - Can be changed via menu (option `p`) +- **Menu options added**: + - `dev` - Default dev server + - `dev:8080` - Dev server on port 8080 (kiosk mode) + - `dev:9090` - Dev server on port 9090 (remote mode) + - `p` - Change default ports +- **Connection info**: Shows local and network URLs when server starts +- **Command line usage**: + - `./start.sh dev` + - `./start.sh dev:8080` + - `./start.sh dev:9090` + - `./start.sh preview` + +--- + +## Usage + +```bash +# Interactive menu +./start.sh + +# Direct commands +./start.sh dev # Default port 5173 +./start.sh dev:8080 # Port 8080 (kiosk) +./start.sh dev:9090 # Port 9090 (remote) +./start.sh preview # Preview on 4173 + +# Change ports via menu (option p) +``` + +**Network access:** Servers now bind to `0.0.0.0` and show both localhost and network IP addresses. diff --git a/start.sh b/start.sh index f6c8c5e77..d82c9e1c5 100755 --- a/start.sh +++ b/start.sh @@ -17,6 +17,10 @@ BOLD='\033[1m' # Project directory PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/sample_interface" && pwd)" +# Default ports +DEV_PORT=5173 +PREVIEW_PORT=4173 + echo -e "${CYAN}${BOLD}" echo "╔══════════════════════════════════════════════════════╗" echo "║ TCK RTU - Development Menu ║" @@ -26,60 +30,141 @@ echo -e "${NC}" show_menu() { echo -e "${BOLD}Select an option:${NC}" echo "" - echo -e " ${GREEN}1)${NC} dev Start development server" - echo -e " ${GREEN}2)${NC} test Run tests" - echo -e " ${GREEN}3)${NC} test:watch Run tests in watch mode" - echo -e " ${GREEN}4)${NC} build Build for production" - echo -e " ${GREEN}5)${NC} preview Preview production build" - echo -e " ${GREEN}6)${NC} lint Run linter" - echo -e " ${GREEN}7)${NC} clean Clean build artifacts" - echo -e " ${GREEN}8)${NC} install Install dependencies" + echo -e " ${GREEN}1)${NC} dev Start development server (port $DEV_PORT)" + echo -e " ${GREEN}2)${NC} dev:8080 Start dev server on port 8080 (kiosk mode)" + echo -e " ${GREEN}3)${NC} dev:9090 Start dev server on port 9090 (remote mode)" + echo -e " ${GREEN}4)${NC} test Run tests" + echo -e " ${GREEN}5)${NC} test:watch Run tests in watch mode" + echo -e " ${GREEN}6)${NC} build Build for production" + echo -e " ${GREEN}7)${NC} preview Preview production (port $PREVIEW_PORT)" + echo -e " ${GREEN}8)${NC} lint Run linter" + echo -e " ${GREEN}9)${NC} clean Clean build artifacts" + echo -e " ${GREEN}10)${NC} install Install dependencies" + echo -e " ${GREEN}p)${NC} port Change default port" echo "" echo -e " ${RED}0)${NC} Exit" echo "" } +get_ip_address() { + # Try to get the primary IP address + if command -v ip &> /dev/null; then + IP=$(ip route get 1.1.1.1 2>/dev/null | grep -oP 'src \K[^ ]+' | head -1) + elif command -v ifconfig &> /dev/null; then + IP=$(ifconfig 2>/dev/null | grep -oP 'inet \K[\d.]+' | grep -v '127.0.0.1' | head -1) + fi + + if [ -z "$IP" ]; then + IP="localhost" + fi + echo "$IP" +} + +show_connection_info() { + local port=$1 + local IP=$(get_ip_address) + echo "" + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo -e "${GREEN} Server running at:${NC}" + echo -e "${GREEN} - Local: http://localhost:$port${NC}" + echo -e "${GREEN} - Network: http://$IP:$port${NC}" + echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" + echo "" +} + +run_dev_server() { + local port=${1:-$DEV_PORT} + cd "$PROJECT_DIR" + echo -e "${BLUE}Starting development server on port $port...${NC}" + echo -e "${YELLOW}(Press Ctrl+C to stop)${NC}" + echo "" + VITE_PORT=$port npm run dev -- --host & + DEV_PID=$! + show_connection_info $port + wait $DEV_PID +} + +run_preview_server() { + local port=${1:-$PREVIEW_PORT} + cd "$PROJECT_DIR" + echo -e "${BLUE}Starting preview server on port $port...${NC}" + echo -e "${YELLOW}(Press Ctrl+C to stop)${NC}" + echo "" + VITE_PORT=$port npm run preview -- --host & + PREVIEW_PID=$! + show_connection_info $port + wait $PREVIEW_PID +} + +change_port() { + echo -e "${BOLD}Change Default Port${NC}" + echo "" + echo -e "Current: Dev=$DEV_PORT, Preview=$PREVIEW_PORT" + echo "" + echo -n "Enter new dev port (current: $DEV_PORT): " + read -r new_dev_port + if [ -n "$new_dev_port" ]; then + DEV_PORT=$new_dev_port + fi + + echo -n "Enter new preview port (current: $PREVIEW_PORT): " + read -r new_preview_port + if [ -n "$new_preview_port" ]; then + PREVIEW_PORT=$new_preview_port + fi + + echo -e "${GREEN}Ports updated! Dev=$DEV_PORT, Preview=$PREVIEW_PORT${NC}" + echo "" +} + run_command() { local option=$1 cd "$PROJECT_DIR" case $option in 1|dev) - echo -e "${BLUE}Starting development server...${NC}" - npm run dev + run_dev_server $DEV_PORT ;; - 2|test) + 2|dev:8080) + run_dev_server 8080 + ;; + 3|dev:9090) + run_dev_server 9090 + ;; + 4|test) echo -e "${BLUE}Running tests...${NC}" npm test ;; - 3|test:watch) + 5|test:watch) echo -e "${BLUE}Running tests in watch mode...${NC}" npm run test:watch ;; - 4|build) + 6|build) echo -e "${BLUE}Building for production...${NC}" npm run build echo -e "${GREEN}Build complete!${NC}" ;; - 5|preview) - echo -e "${BLUE}Previewing production build...${NC}" - npm run preview + 7|preview) + run_preview_server $PREVIEW_PORT ;; - 6|lint) + 8|lint) echo -e "${BLUE}Running linter...${NC}" npm run lint ;; - 7|clean) + 9|clean) echo -e "${YELLOW}Cleaning build artifacts...${NC}" rm -rf "$PROJECT_DIR/dist" rm -rf "$PROJECT_DIR/node_modules/.vite" echo -e "${GREEN}Clean complete!${NC}" ;; - 8|install) + 10|install) echo -e "${BLUE}Installing dependencies...${NC}" npm install echo -e "${GREEN}Dependencies installed!${NC}" ;; + p|port) + change_port + ;; 0|exit) echo -e "${GREEN}Goodbye!${NC}" exit 0 @@ -97,16 +182,25 @@ if [ ! -d "$PROJECT_DIR/node_modules" ]; then npm install fi -# If arguments provided, run directly +# Parse command line arguments if [ $# -gt 0 ]; then - run_command "$1" + # Check for port override + if [[ "$1" == dev:* ]]; then + port="${1#dev:}" + run_dev_server "$port" + elif [[ "$1" == preview:* ]]; then + port="${1#preview:}" + run_preview_server "$port" + else + run_command "$1" + fi exit 0 fi # Interactive menu while true; do show_menu - echo -n -e "${BOLD}Enter your choice (0-8): ${NC}" + echo -n -e "${BOLD}Enter your choice (0-10 or p): ${NC}" read -r choice echo "" run_command "$choice"