Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
9bfbe00
feat(irc): add IRC client, backend services, and auto-launch
invalid-email-address Nov 22, 2025
1bbe0ea
feat(nginx): add IRC websocket proxy config
invalid-email-address Nov 22, 2025
ab93dbd
chore(irc): build webircgateway locally
invalid-email-address Nov 22, 2025
75b6b7d
fix(irc): configure webircgateway
invalid-email-address Nov 23, 2025
cf82036
fix(irc): let inspircd use default config
invalid-email-address Nov 23, 2025
0ec2ed7
fix(irc): correct gateway URL fallback and improve scroll behavior
invalid-email-address Nov 23, 2025
187f66f
fix(irc): proxy /ws/irc to webircgateway websocket
invalid-email-address Nov 23, 2025
8efbe2e
chore(irc): relax connectban for docker gateway
invalid-email-address Nov 23, 2025
a753aa1
fix(irc): configure WEBIRC cgihost for gateway
invalid-email-address Nov 23, 2025
2f603f3
chore(irc): relax connectban and randomize guest nick
invalid-email-address Nov 23, 2025
be54fd0
Fix ModelSettings.tsx corruption and verify IrcClient.tsx features
invalid-email-address Nov 23, 2025
731154b
Fix IRCd connectban issues by mounting config and relaxing limits
invalid-email-address Nov 23, 2025
ffb8aab
Re-apply m_connectban.so module and disable ban for main connect block
invalid-email-address Nov 23, 2025
32ce1ec
Remove includes to fix potential module mismatch crash
invalid-email-address Nov 23, 2025
ad45e15
Fix WebSocket URL path doubling and remove hardcoded localhost env var
invalid-email-address Nov 23, 2025
697cef4
Disable DNSBL in IRC gateway to prevent connection drops
invalid-email-address Nov 23, 2025
f1e9490
Add debug logging and disable DNSBL
invalid-email-address Nov 23, 2025
0109ed7
Fix gateway crash by commenting out DNSBL config instead of using inv…
invalid-email-address Nov 23, 2025
ed9213e
Disable WebIRC IP forwarding to hide user IPs from server
invalid-email-address Nov 23, 2025
cfa936d
Completely remove DNSBL config sections from gateway.conf
invalid-email-address Nov 23, 2025
408c37b
Remove debug logging from IrcClient after connection fix
invalid-email-address Nov 23, 2025
df8bdb7
Add Connect/Disconnect toggle and mIRC desktop icon
invalid-email-address Nov 23, 2025
e65b40c
Increase gateway timeout and disable throttling to fix connection drops
invalid-email-address Nov 23, 2025
ba968b3
Fix malformed HTML in IrcClient header
invalid-email-address Nov 23, 2025
4848cfb
Fix disconnect button logic to ensure socket closure and state update
invalid-email-address Nov 23, 2025
227a7ad
Re-enable WebIRC to restore gateway connectivity
invalid-email-address Nov 23, 2025
5f28bd4
Fix InspIRCd config: remove HTML comments causing parse error and res…
invalid-email-address Nov 23, 2025
2f354b6
Override InspIRCd entrypoint to use mounted config file
invalid-email-address Nov 23, 2025
f1c2901
Use environment variable to specify InspIRCd config file
invalid-email-address Nov 23, 2025
77638a0
Switch to ergonlogic/inspircd image with proper volume mounts
invalid-email-address Nov 23, 2025
d94c7bd
Switch to ngircd IRC server with simple configuration
invalid-email-address Nov 23, 2025
e5ee407
Switch to ircd-hybrid with simple config
invalid-email-address Nov 23, 2025
ee63400
Fix timezone in IRC server container
invalid-email-address Nov 23, 2025
f9aac53
Rename irc-server to ircd to force new container
invalid-email-address Nov 23, 2025
ce45b5d
Fix irc-gateway dependency to use ircd service
invalid-email-address Nov 23, 2025
34695b3
Restore InspIRCd IRC server and harden WebIRC/gateway config
invalid-email-address Nov 23, 2025
406a2b8
Simplify IRC: use default InspIRCd config and plain gateway client
invalid-email-address Nov 23, 2025
756ec98
Disable STREAMING_SECRET in dev docker-compose to avoid 403 on /api
invalid-email-address Nov 23, 2025
29db927
fix(irc): mount inspircd config volumes and add debug script
invalid-email-address Nov 23, 2025
e66dd4d
fix(irc): move conf.d to correct location and ensure data dir exists
invalid-email-address Nov 23, 2025
ec5ade3
fix(irc): remove invalid config wrapper tags from inspircd.conf
invalid-email-address Nov 23, 2025
ee7457c
fix(irc): remove .so extension from module names
invalid-email-address Nov 23, 2025
53717fb
fix(irc): force update inspircd.conf with version 2
invalid-email-address Nov 23, 2025
5110961
fix(irc): remove xml comment causing syntax error
invalid-email-address Nov 23, 2025
7608142
fix(irc): temporarily disable webirc modules to debug startup
invalid-email-address Nov 23, 2025
eadec11
fix(irc): remove webirc modules and config to allow startup
invalid-email-address Nov 23, 2025
49ea981
fix(nginx): improve websocket proxy headers and add debug
invalid-email-address Nov 23, 2025
d5ba968
fix(irc): disable ident lookups to prevent connection timeouts
invalid-email-address Nov 23, 2025
e15f2a0
fix(irc): increase gateway log level to debug connection issues
invalid-email-address Nov 23, 2025
31ee996
feat(irc): enable native websocket support in inspircd
invalid-email-address Nov 23, 2025
b504f67
refactor(irc): switch to native inspircd websocket support, remove ga…
invalid-email-address Nov 23, 2025
8b79cdd
fix(irc): rename config to inspircd_v2.conf to force docker volume re…
invalid-email-address Nov 23, 2025
9d2fa86
fix(irc): inline gateway config to avoid missing include file in sing…
invalid-email-address Nov 23, 2025
1a5723f
fix(irc): update websocket config syntax for inspircd 4
invalid-email-address Nov 23, 2025
0a85c5e
fix(irc): remove self-closing slash from websocket tag
invalid-email-address Nov 23, 2025
2c83ab9
fix(irc): use origins attribute for websocket config
invalid-email-address Nov 23, 2025
9aa4c17
fix(irc): use wsorigin tag instead of websocket tag
invalid-email-address Nov 23, 2025
26a13bf
fix(irc): correct websocket module config - use websocket not m_webso…
invalid-email-address Nov 23, 2025
00e309b
fix(irc): use sha256 instead of sha1 for inspircd 4, add wildcard to …
invalid-email-address Nov 23, 2025
d023761
fix(nginx): use IP address instead of hostname for ircd to bypass DNS…
invalid-email-address Nov 23, 2025
ade86b3
fix(nginx): use container name devussy-ircd instead of IP
invalid-email-address Nov 23, 2025
31075fb
fix(nginx): add websocket map directive and docker dns resolver
invalid-email-address Nov 23, 2025
02033eb
fix(nginx): force dynamic dns resolution with variable
invalid-email-address Nov 23, 2025
1775f36
fix(nginx): use ip in variable to bypass dns
invalid-email-address Nov 23, 2025
e4a7293
fix(nginx): remove http2 and simplify proxy_pass to debug websocket 503
invalid-email-address Nov 23, 2025
2995a04
fix(nginx): hardcode ircd IP and add timeout to debug 503
invalid-email-address Nov 23, 2025
938c3e8
chore: add debug_irc.py script for vps troubleshooting
invalid-email-address Nov 23, 2025
833fbfc
fix(irc): load sha1 module required for websocket handshake
invalid-email-address Nov 23, 2025
e28e9d4
fix(irc): enable debug logging to troubleshoot websocket connection
invalid-email-address Nov 23, 2025
f633092
fix(irc): disable dns resolution to prevent hangs on docker hostnames…
invalid-email-address Nov 23, 2025
15372fe
fix(docker): restore docker-compose.yml and set hostname for nginx
invalid-email-address Nov 23, 2025
c8e5f8c
fix(irc): remove modes=+x to prevent dns lookup for cloaking
invalid-email-address Nov 23, 2025
70435b9
fix(irc): remove duplicate keys in inspircd config
invalid-email-address Nov 23, 2025
f3f374f
fix(irc): auto-retry with new nickname on 433 collision
invalid-email-address Nov 23, 2025
3637f61
docs: update readme and plan with irc feature details and architectur…
invalid-email-address Nov 23, 2025
41d822c
Fix IRC nick sync and add click-to-PM
invalid-email-address Nov 23, 2025
1789a93
Update IRC configurations and add soju.cfg
invalid-email-address Nov 23, 2025
3413d16
Increase IRC connection limits per IP
invalid-email-address Nov 23, 2025
9973576
Fix IRC timeout issues and add dedicated Status tab for server logs
invalid-email-address Nov 23, 2025
3574e31
Fix undefined conversation error in tabs
invalid-email-address Nov 23, 2025
4acb883
Update help content, startup behavior, and Bliss theme IRC username d…
invalid-email-address Nov 23, 2025
0dd93a1
feat(web): add backend analytics with opt-out
invalid-email-address Nov 23, 2025
c01ef09
fix(analytics): normalize languages for SQLite logging
invalid-email-address Nov 23, 2025
80d9482
fix: update IRC WebSocket proxy to ircd service
invalid-email-address Nov 23, 2025
d240aea
feat: adaptive mock backend pipeline and docs
invalid-email-address Nov 26, 2025
fae9064
Update devplan, templates, generators, and tests
invalid-email-address Nov 26, 2025
aaaa5a4
docs: add anchor-based context management and adaptive pipeline docs
invalid-email-address Nov 26, 2025
1a1b592
chore: archive old planning documents
invalid-email-address Nov 26, 2025
3a47c48
feat(adaptive): add adaptive pipeline methods, streaming prefixes, sc…
invalid-email-address Nov 26, 2025
54db909
feat: CLI, E2E tests, Jinja templates for adaptive pipeline (Mileston…
invalid-email-address Nov 26, 2025
ee389ea
feat: ComplexityAssessment component, FastAPI adaptive endpoints, rea…
invalid-email-address Nov 26, 2025
b79f92a
docs: update handoff, devplan, and progress tracking for Milestone 6
invalid-email-address Nov 26, 2025
4602acd
Update devplan and handoff; update DesignView; add CorrectionTimeline…
invalid-email-address Nov 26, 2025
ff559ca
feat(frontend): wire ValidationReport and CorrectionTimeline into Des…
invalid-email-address Nov 26, 2025
1407cab
feat(frontend): add component tests, Storybook, and documentation for…
invalid-email-address Nov 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,7 @@ GIT_AUTO_PUSH=false # Automatically push commits to remote
MAX_CONCURRENT_REQUESTS=5
STREAMING_ENABLED=false
ENABLE_CHECKPOINTS=true

# IRC Configuration
NEXT_PUBLIC_IRC_WS_URL=ws://localhost:8080
NEXT_PUBLIC_IRC_CHANNEL=#devussy-chat
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,6 @@ QUICK_SETUP.md
START_HERE.txt

# Generated project outputs (in root)
/devplan.md
/handoff_prompt.md
/project_design.md
/phase*.md
Expand Down Expand Up @@ -116,3 +115,4 @@ yarn-error.log*
.yarn/
dist/
.vite/
devussy-web/streaming_server/analytics.db
56 changes: 56 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,62 @@

This file provides guidance to agents when working with code in this repository.

## 🔗 CRITICAL: Anchor-Based Context Management

> **⚠️ READ THIS FIRST - This is the most important pattern in this project.**

Devussy uses **stable HTML comment anchors** for efficient context management and safe file updates. **All agents MUST use anchors** when reading/writing devplan, phase, and handoff files.

### Required Anchors

| File | Anchor | Purpose |
|------|--------|---------|
| devplan.md | `<!-- PROGRESS_LOG_START -->` / `<!-- PROGRESS_LOG_END -->` | Track completed work |
| devplan.md | `<!-- NEXT_TASK_GROUP_START -->` / `<!-- NEXT_TASK_GROUP_END -->` | Current 3-5 tasks to execute |
| phase*.md | `<!-- PHASE_TASKS_START -->` / `<!-- PHASE_TASKS_END -->` | Phase-specific tasks |
| phase*.md | `<!-- PHASE_PROGRESS_START -->` / `<!-- PHASE_PROGRESS_END -->` | Outcomes and blockers |
| handoff_prompt.md | `<!-- QUICK_STATUS_START -->` / `<!-- QUICK_STATUS_END -->` | Status snapshot |
| handoff_prompt.md | `<!-- HANDOFF_NOTES_START -->` / `<!-- HANDOFF_NOTES_END -->` | Agent handoff notes |

### How to Use Anchors

**Reading (CORRECT):**
```
Read devplan.md lines between <!-- NEXT_TASK_GROUP_START --> and <!-- NEXT_TASK_GROUP_END -->
# Result: ~100 tokens loaded
```

**Reading (WRONG):**
```
Read entire devplan.md
# Result: ~3000 tokens wasted
```

**Writing:** Always use `safe_write_devplan()` from `src/file_manager.py`:
- Creates `.bak` backup before writing
- Validates anchors exist in new content
- Refuses to overwrite if anchors missing (writes to `.tmp` instead)

### Token Budget

| File | Section | ~Tokens | When to Read |
|------|---------|---------|--------------|
| handoff.md | Progress Log | ~200 | Start of session |
| devplan.md | NEXT_TASK_GROUP | ~100 | Every turn |
| devplan.md | PROGRESS_LOG | ~100 | If needed |
| phase*.md | PHASE_TASKS | ~80 | When working on phase |

**Target: Stay under 500 tokens per turn by reading ONLY anchored sections.**

### Validation

`file_manager.py:_validate_devplan_content()` enforces:
- Header: `# Development Plan` or `## 📋 Project Dashboard`
- Phase table: `### 🚀 Phase Overview` with `| Phase |`
- Anchors: `<!-- PROGRESS_LOG_START -->` and `<!-- NEXT_TASK_GROUP_START -->`

---

## Critical Commands (Non-Obvious)
- **Test single file**: `pytest tests/unit/test_cli.py::TestGenerateDesignCommand::test_generate_design_minimal_args -v`
- **Run integration tests**: `pytest tests/integration/ -v`
Expand Down
86 changes: 18 additions & 68 deletions DevDocs/JINJA_DATA_SAMPLES/basic_devplan.jinja.json
Original file line number Diff line number Diff line change
@@ -1,83 +1,33 @@
{
"repo_context": {
"project_type": "python",
"structure": {
"source_dirs": [
"src"
],
"test_dirs": [
"tests"
],
"config_dirs": [
"config"
],
"has_ci": true
},
"dependencies": {
"python": [
"fastapi",
"uvicorn"
]
},
"metrics": {
"total_files": 42,
"total_lines": 1337
},
"patterns": {
"test_frameworks": [
"pytest"
],
"build_tools": [
"poetry"
]
},
"project_name": "ExistingApp",
"description": "An existing app",
"version": "1.0.0",
"author": "Dev"
},
"project_design": {
"project_name": "SuperApp",
"languages": [
"Python",
"TypeScript"
],
"frameworks": [
"FastAPI",
"React"
],
"apis": [
"OpenAI",
"Stripe"
],
"requirements": "Build a scalable web app.",
"project_name": "test-project",
"objectives": [
"High performance",
"User friendly"
"Build web application",
"Create API"
],
"tech_stack": [
"Python 3.11",
"React 18",
"Python",
"FastAPI",
"PostgreSQL"
],
"architecture_overview": "Microservices architecture...",
"architecture_overview": "Test architecture overview",
"dependencies": [
"sqlalchemy",
"pydantic"
"requests",
"pydantic",
"uvicorn"
],
"challenges": [
"Concurrency",
"Data consistency"
"Performance optimization",
"Scalability"
],
"mitigations": [
"Use async/await",
"Use transactions"
"Use caching",
"Load balancing"
],
"complexity": "Medium",
"estimated_phases": 5
"raw_llm_response": null,
"complexity": null,
"estimated_phases": null
},
"code_samples": "def hello(): pass",
"interactive_session": {
"question_count": 5
}
"task_group_size": 3,
"detail_level": "normal"
}
53 changes: 7 additions & 46 deletions DevDocs/JINJA_DATA_SAMPLES/detailed_devplan.jinja.json
Original file line number Diff line number Diff line change
@@ -1,48 +1,9 @@
{
"repo_context": {
"project_type": "python",
"structure": {
"source_dirs": [
"src"
],
"test_dirs": [
"tests"
],
"config_dirs": [
"config"
],
"has_ci": true
},
"dependencies": {
"python": [
"fastapi",
"uvicorn"
]
},
"metrics": {
"total_files": 42,
"total_lines": 1337
},
"patterns": {
"test_frameworks": [
"pytest"
],
"build_tools": [
"poetry"
]
},
"project_name": "ExistingApp",
"description": "An existing app",
"version": "1.0.0",
"author": "Dev"
},
"phase_number": 1,
"phase_title": "Setup",
"phase_description": "Initialize the project.",
"project_name": "SuperApp",
"tech_stack": [
"Python",
"Git"
],
"code_samples": "print('hello')"
"phase_number": 3,
"phase_title": "Phase 3",
"phase_description": "",
"project_name": "test",
"tech_stack": [],
"task_group_size": 3,
"detail_level": "normal"
}
50 changes: 7 additions & 43 deletions DevDocs/JINJA_DATA_SAMPLES/handoff_prompt.jinja.json
Original file line number Diff line number Diff line change
@@ -1,45 +1,9 @@
{
"project_name": "SuperApp",
"repo_context": {
"project_type": "python",
"structure": {
"source_dirs": [
"src"
],
"test_dirs": [
"tests"
],
"config_dirs": [
"config"
],
"has_ci": true
},
"dependencies": {
"python": [
"fastapi",
"uvicorn"
]
},
"metrics": {
"total_files": 42,
"total_lines": 1337
},
"patterns": {
"test_frameworks": [
"pytest"
],
"build_tools": [
"poetry"
]
},
"project_name": "ExistingApp",
"description": "An existing app",
"version": "1.0.0",
"author": "Dev"
},
"current_phase_number": 2,
"current_phase_name": "Core Logic",
"next_task_id": "2.1",
"next_task_description": "Implement auth",
"blockers": "None"
"project_name": "TestProject",
"current_phase_number": "None",
"current_phase_name": "No active phase",
"next_task_id": "1.1",
"next_task_description": "Initialize project",
"blockers": "None known",
"detail_level": "normal"
}
42 changes: 8 additions & 34 deletions DevDocs/JINJA_DATA_SAMPLES/project_design.jinja.json
Original file line number Diff line number Diff line change
@@ -1,40 +1,14 @@
{
"project_name": "SuperApp",
"project_name": "Test Project",
"requirements": [
"Req 1",
"Req 2"
],
"languages": [
"Python",
"TypeScript"
"Python"
],
"frameworks": [
"FastAPI",
"React"
],
"apis": [
"OpenAI",
"Stripe"
],
"requirements": "Build a scalable web app.",
"objectives": [
"High performance",
"User friendly"
],
"tech_stack": [
"Python 3.11",
"React 18",
"PostgreSQL"
],
"architecture_overview": "Microservices architecture...",
"dependencies": [
"sqlalchemy",
"pydantic"
],
"challenges": [
"Concurrency",
"Data consistency"
],
"mitigations": [
"Use async/await",
"Use transactions"
"FastAPI"
],
"complexity": "Medium",
"estimated_phases": 5
"apis": []
}
Loading