From 0e5c685cfd8631e03c3c70d1b79f0e90db28b067 Mon Sep 17 00:00:00 2001 From: MarekWo Date: Mon, 22 Dec 2025 14:48:19 +0100 Subject: [PATCH] fix: Remove .claude directory from Git tracking MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Updated .gitignore to properly exclude the entire .claude/ directory and removed previously tracked .claude/instructions.md from repository. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 --- .claude/instructions.md | 119 ---------------------------------------- .gitignore | 2 +- 2 files changed, 1 insertion(+), 120 deletions(-) delete mode 100644 .claude/instructions.md diff --git a/.claude/instructions.md b/.claude/instructions.md deleted file mode 100644 index e8b3104..0000000 --- a/.claude/instructions.md +++ /dev/null @@ -1,119 +0,0 @@ -# mc-webui - Project Instructions for Claude Code - -## Project Overview - -**mc-webui** is a lightweight Flask web interface for meshcore-cli. It provides browser-based access to MeshCore mesh network chat without requiring SSH/terminal access. - -## Tech Stack - -- Python 3.11+ / Flask -- Bootstrap 5 / vanilla JS -- Docker deployment -- subprocess calls to meshcli - -## Key Commands - -```bash -# meshcli base command (serial port varies per setup) -meshcli -s $MC_SERIAL_PORT - -# Common commands: -recv # Fetch new messages -public "message" # Send to Public channel -public "@[User] msg" # Reply to user -contacts # List contacts -"apply_to u<48h,t=1 remove_contact" # Clean old contacts -infos # Device info -``` - -## Message File Format - -Location: `~/.config/meshcore/.msgs` (JSON Lines) - -```json -{"type": "CHAN", "text": "User: message", "timestamp": 1766300846} -{"type": "SENT_CHAN", "text": "my message", "name": "DeviceName", "timestamp": 1766309432} -``` - -## Code Style Guidelines - -- **Language:** All code, comments, docs in English -- **Simplicity:** MVP approach, avoid over-engineering -- **Error handling:** meshcli can timeout/fail - handle gracefully -- **No auth:** Trusted network assumption - -## Environment Variables - -``` -MC_SERIAL_PORT - Serial device path -MC_DEVICE_NAME - Device name (for .msgs file) -MC_CONFIG_DIR - meshcore config directory -MC_REFRESH_INTERVAL - Auto-refresh seconds (default: 60) -MC_INACTIVE_HOURS - Contact cleanup threshold (default: 48) -MC_ARCHIVE_DIR - Archive directory path (default: /root/.archive/meshcore) -MC_ARCHIVE_ENABLED - Enable automatic archiving (default: true) -MC_ARCHIVE_RETENTION_DAYS - Days to show in live view (default: 7) -FLASK_PORT - Web server port (default: 5000) -``` - -## Project Structure - -``` -mc-webui/ -├── Dockerfile -├── docker-compose.yml -├── app/ -│ ├── main.py # Flask entry point -│ ├── config.py # Environment config -│ ├── meshcore/ -│ │ ├── cli.py # meshcli subprocess wrapper -│ │ └── parser.py # .msgs file parser -│ ├── archiver/ -│ │ └── manager.py # Archive scheduler and management -│ ├── routes/ -│ │ ├── api.py # REST endpoints -│ │ └── views.py # HTML views -│ ├── static/ # CSS, JS -│ └── templates/ # Jinja2 templates -├── PRD.md # Full requirements doc -└── README.md -``` - -## API Endpoints - -``` -GET /api/messages - List messages (supports ?archive_date=YYYY-MM-DD&days=N) -POST /api/messages - Send message -GET /api/status - Connection status -POST /api/contacts/cleanup - Remove inactive contacts -GET /api/archives - List available archives -POST /api/archive/trigger - Manually trigger archiving -GET /api/device/info - Device information -POST /api/sync - Trigger message sync -``` - -## Important Files - -- **PRD.md** - Complete requirements, wireframes, architecture -- **CLAUDE_CODE_PROMPT.md** - Detailed implementation guide - -## Testing Environment - -**Production/Test Server:** http://192.168.131.80:5000 -- Debian VM with Heltec V4 device connected via USB -- All testing must be done on this server (local testing not possible) -- Real meshcore network - no mock available - -**Server Requirements:** -- Docker (20.10+) -- Docker Compose (2.0+) -- Git -- meshcore-cli installed on host (for device configuration) -- USB device access permissions configured - -**Deployment Workflow:** -1. Develop locally (Windows/WSL) -2. Push to GitHub -3. Pull on server (192.168.131.80) -4. Build and run: `docker compose up -d --build` -5. Test on http://192.168.131.80:5000 \ No newline at end of file diff --git a/.gitignore b/.gitignore index 653dce1..44d786e 100644 --- a/.gitignore +++ b/.gitignore @@ -81,4 +81,4 @@ Thumbs.db # ============================================ # Miscellaneous # ============================================ -.claude/*.* \ No newline at end of file +.claude/ \ No newline at end of file