Compare commits
No commits in common. "c2028f45c53ed8017bdbbbcad2c2fbd1aa4c607b" and "3e1135ed2b6c97800a446f5d1ec5341a0c4c84a2" have entirely different histories.
c2028f45c5
...
3e1135ed2b
273
CHANGE.md
273
CHANGE.md
@ -6,50 +6,48 @@ This document tracks all significant changes to Gadget Code, organized by date.
|
|||||||
|
|
||||||
## 2026-05-17 (Sunday)
|
## 2026-05-17 (Sunday)
|
||||||
|
|
||||||
**Release Hardening, Subagent Improvements, and Workspace Intelligence**
|
**Subagent Context Management and Tooling Stability**
|
||||||
|
|
||||||
The day focused on preparing the v1.0.1 release with a hardened release script, fixing subagent context management, adding prompt draft persistence, and implementing intelligent workspace startup that detects the workspace directory by walking up the file hierarchy.
|
Today's focus shifted towards improving subagent context management and stabilizing developmental tools, including a fix for the prompt editor.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Release**: Added hardened release script with error handling and pre-flight checks.
|
- **Subagent**: Implemented improvements to subagent context management.
|
||||||
- **Subagent**: Improved subagent context management for more reliable agent operations.
|
- **Development**: Fixed prompt editor functionality.
|
||||||
- **Chat Session**: Implemented prompt draft save/restore so in-progress prompts survive view changes.
|
- **Documentation**: Added gadget-tasks architecture documentation and updated technical documentation (README, `agent-toolbox.md`).
|
||||||
- **Workspace**: Added intelligent startup — drone detects workspace by walking up directory hierarchy.
|
- **Dependencies/Build**: Addressed installation and global link issues.
|
||||||
- **Agent Tools**: Updated plan tool with improved prompt language and behavior.
|
|
||||||
- **Prompt Editor**: Expanded prompt editor capabilities.
|
|
||||||
- **gadget-tasks**: Course correction — converted to headless IDE client architecture (no direct DB access).
|
|
||||||
- **Documentation**: Added gadget-tasks architecture documentation; updated README and agent-toolbox docs.
|
|
||||||
- **Build**: Fixed installation and global link issues.
|
|
||||||
- **Tests**: Updated code-session tests to match current API expectations.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-16 (Saturday)
|
## 2026-05-16 (Saturday)
|
||||||
|
|
||||||
**AI Toolbox Extraction and Project Manager Upgrades**
|
**Gadget-Tasks Architecture Correction and AI Toolbox Refactor**
|
||||||
|
|
||||||
Completed the refactor extracting the AI toolbox from `@gadget/ai` into `@gadget/ai-toolbox`, and implemented Project Manager upgrades across Phases 1–4. Cleaned up incorrect dependencies.
|
This update covers major architectural changes to `gadget-tasks` transition to a headless IDE client and the reorganization of the AI toolbox structure.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **AI Toolbox**: Completed refactor and extraction from `@gadget/ai` into `@gadget/ai-toolbox`.
|
- **Architecture**: Converted `gadget-tasks` from directly accessing MongoDB to a headless IDE client architecture using REST API and Socket.IO.
|
||||||
- **Project Manager**: Implemented upgrades across Phases 1–4.
|
- **Infrastructure**: Added `platform.ts` (headless IDE client with session lock and workspace mode) to `gadget-tasks`.
|
||||||
- **Dependencies**: Removed incorrect `simple-git` package; fixed type references.
|
- **Cleanup**: Removed duplicated/no longer needed code in `gadget-tasks` (Mongoose models, internal prompt templates, task executor, AI services, and workspace management).
|
||||||
|
- **AI Toolbox**: Completed refactor and extraction of the AI toolbox from `@gadget/ai` into `@gadget/ai-toolbox`.
|
||||||
|
- **Project Manager**: Implemented upgrades across Phases 1-4.
|
||||||
|
- **Infrastructure**: Added necessary backend routes (`PATCH /api/v1/projects/:projectId/tasks/:taskId/lastRun`) and service methods for atomic task field updates.
|
||||||
|
- **Project Configuration**: Updated `GadgetTasksConfig` and removed unneeded dependencies (`mongoose`, `dayjs`, `simple-git`, etc.).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-15 (Thursday)
|
## 2026-05-15 (Thursday)
|
||||||
|
|
||||||
**Pull Project, Tool Call Observability, and Context Window Configuration**
|
**Context Window Configuration Added**
|
||||||
|
|
||||||
Introduced the Pull Project feature for cloning remote repositories, added tool call observability to the chat session view, and added `numCtx` (Context Window) configuration to the SESSION panel. Also refactored ChatSessionView and added the Gab AI affiliate link.
|
The most recent change introduces the `numCtx` (Context Window) setting to the SESSION panel, allowing users to configure the context window size for their AI model sessions. This setting is part of a broader enhancement to the model configuration pipeline that also includes `numPredict` and `maxCompletionTokens` parameters.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Pull Project**: Initial implementation for cloning remote repositories into the workspace.
|
- Added `numCtx` setting to SESSION panel
|
||||||
- **Observability**: Added tool call observability to the chat session view.
|
- Updated model configuration pipeline to include `numPredict`, `numCtx`, and `maxCompletionTokens`
|
||||||
- **File Operations**: Added new file creation capability.
|
- Modified ChatSessionView to handle new context window settings
|
||||||
- **SESSION Panel**: Added `numCtx` (Context Window) setting; updated model config pipeline with `numPredict`, `numCtx`, and `maxCompletionTokens`.
|
- Updated session initialization logic to apply context window configuration
|
||||||
- **ChatSessionView**: Refactored for improved structure; added scripts directory.
|
- Added Gab AI affiliate link
|
||||||
- **Provider**: Added Gab AI affiliate link; changed Ollama abort procedure.
|
- Changed Ollama abort procedure
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -57,74 +55,84 @@ Introduced the Pull Project feature for cloning remote repositories, added tool
|
|||||||
|
|
||||||
**SubProcess Observability Implementation**
|
**SubProcess Observability Implementation**
|
||||||
|
|
||||||
Implemented comprehensive observability for SubProcess operations within the DroneManager and DroneInspector components, including status tracking, event emission, and UI display of subprocess execution details.
|
This week focused on implementing comprehensive observability for SubProcess operations within the DroneManager and DroneInspector components, including detailed logging, status tracking, and event emission capabilities.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **SubProcess**: Implemented Phase 1 (SubProcess service and agent tool) and Phase 2 (observability in DroneManager and DroneInspector).
|
- Implemented Phase 2: SubProcess observability in DroneManager and DroneInspector
|
||||||
- **UI**: Updated to display subprocess execution details.
|
- Added subprocess status tracking and event emission
|
||||||
- **Fixes**: Fixed mode change log message formatting.
|
- Updated UI to display subprocess execution details
|
||||||
|
- Fixed mode change log message formatting
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-13 (Tuesday)
|
## 2026-05-13 (Tuesday)
|
||||||
|
|
||||||
**CodeMirror Editor Fix and User Mode Documentation**
|
**Documentation and Editor Improvements**
|
||||||
|
|
||||||
Fixed a critical CodeMirror editor height constraint in flex layouts, and added documentation for User Mode continuation prompts and MVP completion summary.
|
Documentation updates include adding continuation prompts and remaining steps for User Mode, session summary documentation for MVP completion, and formatting cleanup in AGENTS.md. The editor improvements address a critical issue with CodeMirror editor height constraints in flex layouts.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Editor**: Fixed CodeMirror editor height constraint in flex layout.
|
- Added continuation prompt and remaining steps for User Mode documentation
|
||||||
- **Documentation**: Added continuation prompt and remaining steps for User Mode; added session summary for MVP completion; formatting cleanup in AGENTS.md.
|
- Added session summary for User Mode MVP completion
|
||||||
- **Infrastructure**: Prep work for landing page project.
|
- Fixed CodeMirror editor height constraint in flex layout
|
||||||
|
- Minor formatting cleanup in AGENTS.md
|
||||||
|
- Created new files and prep work for landing page project
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-12 (Monday)
|
## 2026-05-12 (Monday)
|
||||||
|
|
||||||
**FILES Panel, Editor Integration, and Abort Controller**
|
**FILES Panel and Editor Integration**
|
||||||
|
|
||||||
Major milestone: implemented the FILES panel foundation with lazy-loading file tree, replaced react-ace with @uiw/react-codemirror (React 19 compat), added an abort controller for work order processing, and fixed numerous file tree and layout issues.
|
This week marked a significant milestone with the implementation of the FILES panel foundation featuring lazy-loading file tree capabilities. The implementation replaced react-ace with @uiw/react-codemirror to resolve React 19 compatibility issues and Vite dev server problems.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **FILES Panel**: Implemented foundation with lazy-loading file tree; fixed scrolling, duplication, corruption, and expand/collapse rendering issues.
|
- Implemented FILES panel foundation with lazy-loading file tree
|
||||||
- **Editor**: Replaced react-ace with @uiw/react-codemirror for React 19 compatibility; fixed ACE editor crash (Vite `?url` pattern, Error Boundary).
|
- Replaced react-ace with @uiw/react-codemirror
|
||||||
- **Layout**: Fixed flexbox scrolling for sidebar; added `shrink-0` to SESSION and PROJECT panels.
|
- Fixed flexbox scrolling for FILES panel sidebar
|
||||||
- **Abort Controller**: Implemented abort controller for work order processing; added Aborted status.
|
- Added shrink-0 to SESSION and PROJECT panels for proper flex layout
|
||||||
- **Navigation**: Added navigation to project in Project Manager using slug.
|
- Fixed file tree scrolling and text selection issues
|
||||||
- **Socket**: Defined missing socket event types; enforced typed events in frontend build.
|
- Fixed file tree backend recursion breaking lazy loading
|
||||||
- **AI**: Fixed OpenAI API tool call processing correctness.
|
- Fixed file tree showing entire workspace instead of project directory
|
||||||
- **Agent**: Moved plan prompt language from common block; added plan for project-specific agent instructions.
|
- Fixed file tree duplication and corruption on expand
|
||||||
|
- Fixed file tree expand/collapse not rendering children
|
||||||
|
- Added navigation to project in Project Manager using slug
|
||||||
|
- Fixed ACE editor integration crash — React 19 compat, Vite ?url pattern, Error Boundary
|
||||||
|
- Fixed file tree duplication and corruption on expand
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-11 (Sunday)
|
## 2026-05-11 (Sunday)
|
||||||
|
|
||||||
**Subagent Processing, Authentication, and Deployment Documentation**
|
**Subagent Processing and Authentication Fixes**
|
||||||
|
|
||||||
Focused on subagent processing improvements and authentication fixes, including subagent response handling, session data management, persona field in sign-in responses, and JWT/heartbeat fixes. Added deployment documentation with installation guides, config examples, and systemd service files.
|
This weekend's work focused on subagent processing improvements and authentication fixes, including fixes for subagent response handling, session data management, and adding the persona field to sign-in responses.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Subagent**: Fixed subagent response handling and session data; crushed whitespace in subagent markdown output.
|
- Fixed subagent response handling and session data
|
||||||
- **Auth**: Added persona field to sign-in response; fixed JWT expiration bugs and drone heartbeat timeouts.
|
- Added persona field to sign-in response
|
||||||
- **ChatSession**: Added reconnect logic; fixed crash.
|
- Fixed JWT expiration bugs and drone heartbeat timeouts
|
||||||
- **Deployment**: Added installation guides, config examples, and systemd service files.
|
- Added installation guides, config examples, and systemd service files
|
||||||
- **Model Config**: Added `numPredict`, `numCtx`, `maxCompletionTokens` to model configuration pipeline.
|
- Fixed subagent markdown output whitespace using .subagent-compact.gadget-markdown
|
||||||
- **Style**: CSS and style fixes for subagent display; updated build prompt.
|
- Applied CSS and style fixes for subagent display
|
||||||
- **Architecture**: Integrated docs/archive for reference; subagents system (written by an agent, for an agent).
|
- Updated build prompt
|
||||||
|
- Fixed auth: include persona field in sign-in response
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-10 (Saturday)
|
## 2026-05-10 (Saturday)
|
||||||
|
|
||||||
**Workspace and Project Philosophy Refinement**
|
**Workspace and Project Philosophy Shift**
|
||||||
|
|
||||||
Refined the conceptual model separating Workspaces from Projects, improved the chat interface, and fixed credential provider and API key distribution issues.
|
This weekend involved a philosophical shift in how Workspaces and Projects are conceptualized and implemented, with improved separation of concerns and clearer boundaries between the two concepts.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Architecture**: Applied philosophy shifts for Workspaces and Projects; updated conceptual model.
|
- Applied philosophy shifts for Workspaces and Projects
|
||||||
- **Agent Toolbox**: Refactored and updated agent toolbox.
|
- Updated workspace and project conceptual model
|
||||||
- **Fixes**: Fixed credential provider; ensured apiKey is presented to required consumers.
|
- Improved separation of concerns between workspace and project
|
||||||
- **Chat**: Chat interface fixes and cleanup.
|
- Chat interface fixes and cleanup
|
||||||
|
- Credential provider fix
|
||||||
|
- Ensure apiKey is presented to required consumers
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -132,29 +140,34 @@ Refined the conceptual model separating Workspaces from Projects, improved the c
|
|||||||
|
|
||||||
**Agentic Workflow Loop Rebuild**
|
**Agentic Workflow Loop Rebuild**
|
||||||
|
|
||||||
Rebuilt the Agentic Workflow Loop from the ground up for improved reliability and performance, with enhanced streaming response handling, chat session auto-naming, and drone-to-IDE log transport.
|
This week involved a complete rebuild of the Agentic Workflow Loop to improve reliability and performance, including better error handling, improved checkpointing, and enhanced event emission capabilities.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **AWL**: Re-built Agentic Workflow Loop with improved reliability and checkpointing.
|
- Re-built Agentic Workflow Loop with improved reliability
|
||||||
- **Streaming**: Enhanced streaming response handling and correctness.
|
- Enhanced streaming response handling
|
||||||
- **Chat Session**: Implemented auto-naming with IDE update.
|
- Implemented chat session auto-naming with IDE update
|
||||||
- **Logging**: Added GadgetLogTransportSocket for drone-to-IDE log streaming.
|
- Improved checkpointing and event emission
|
||||||
|
- GadgetLogTransportSocket and the drone-to-IDE log
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-08 (Thursday)
|
## 2026-05-08 (Thursday)
|
||||||
|
|
||||||
**Chat Session Heartbeat, User Settings, and Logging Unification**
|
**Chat Session Heartbeat and User Settings**
|
||||||
|
|
||||||
Implemented chat session heartbeat and session unlock, user settings management, configurable reasoning effort, and unified logging into `@gadget/api` as GadgetLog. Redesigned sign-in form and provider/model selection.
|
This week focused on implementing chat session heartbeat functionality and user settings management, ensuring that active sessions are properly tracked and can be recovered in case of unexpected disconnections.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Session**: Implemented chat session heartbeat and session unlock.
|
- Implemented chat session heartbeat and session unlock
|
||||||
- **User Settings**: Added user settings management; made reasoning effort configurable.
|
- Added user settings management
|
||||||
- **Auth**: Redesigned sign-in form and presentation; removed sign-up concept; integrated persona field in User.
|
- Made reasoning effort configurable
|
||||||
- **UI**: Reworked provider/model selection with save/cancel pattern; added editable session name with cog icon; added navigation to return to Project Manager.
|
- Added editable session name with cog icon
|
||||||
- **Logging**: Unified logging into `@gadget/api` as GadgetLog; pre-task cleanup to reduce log spam; fixed logging when file logging is disabled.
|
- Redesigned sign-in form and presentation
|
||||||
- **Streaming**: Fixed streaming response handling for Ollama.
|
- Integrated persona field in User
|
||||||
|
- Reworked provider/model selection with save/cancel pattern
|
||||||
|
- Added navigation to return to Project Manager
|
||||||
|
- Quick fix for when logging.file.enabled is false
|
||||||
|
- Refactor: unify logging into @gadget/api as GadgetLog
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -162,119 +175,135 @@ Implemented chat session heartbeat and session unlock, user settings management,
|
|||||||
|
|
||||||
**Streaming Responses Implementation**
|
**Streaming Responses Implementation**
|
||||||
|
|
||||||
Implemented streaming responses for AI model interactions, including proper handling of streaming data from Ollama and other providers with real-time token delivery and response completion tracking.
|
This week saw the implementation of streaming responses for AI model interactions, including proper handling of streaming data from Ollama and other providers with support for real-time token delivery and response completion tracking.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Streaming**: Implemented streaming responses for Ollama with real-time token delivery and completion tracking.
|
- Implemented streaming responses for Ollama
|
||||||
- **Documentation**: Created documentation for streaming responses.
|
- Added streaming response handling and correctness improvements
|
||||||
|
- Created documentation for streaming responses
|
||||||
|
- Improved real-time token delivery and completion tracking
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-06 (Tuesday)
|
## 2026-05-06 (Tuesday)
|
||||||
|
|
||||||
**Agent Tool and Toolbox Architecture**
|
**Agent Tool and Toolbox Refactoring**
|
||||||
|
|
||||||
Significant refactoring of the agent tool and toolbox architecture, establishing the foundational pattern for tool registration and management.
|
This week involved significant refactoring of the agent tool and toolbox architecture, including unifying logging into @gadget/api as GadgetLog and restructuring the toolbox to support better tool registration and management.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Architecture**: Refactored agent tool and toolbox; established tool registration and management patterns.
|
- Refactored agent tool and toolbox architecture
|
||||||
- **AI Environment**: Agent, tools, toolbox, tool loop, and AI environment foundation.
|
- Unified logging into @gadget/api as GadgetLog
|
||||||
|
- Improved tool registration and management
|
||||||
|
- Reduced log spam through pre-task cleanup
|
||||||
|
- Agent, tools, toolbox, tool loop, AI environment
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-05 (Monday)
|
## 2026-05-05 (Monday)
|
||||||
|
|
||||||
**Basic Chat System Milestone**
|
**Basic Chat System Implementation**
|
||||||
|
|
||||||
Achieved a working basic chat system — the first end-to-end milestone — with provider, model, and mode selection, ChatTurn processing, and agent progress tracking.
|
This week marked a major milestone with the implementation of a working basic chat system, including provider, model, and mode selection capabilities, along with enhanced AgentService.process method functionality.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Chat**: Implemented basic working chat system (checkpoint).
|
- Implemented basic chat system
|
||||||
- **Selection**: Added provider, model, and mode selections.
|
- Added provider, model, and mode selections
|
||||||
- **Processing**: Enhanced AgentService.process method; implemented ChatTurn processing and component.
|
- Enhanced AgentService.process method
|
||||||
- **Infrastructure**: Renamed platform.apiKey to platform.gadgetKey; reduced log output.
|
- Implemented chat turn processing
|
||||||
|
- Added agent progress tracking
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-03 (Saturday)
|
## 2026-05-03 (Saturday)
|
||||||
|
|
||||||
**Workspace Mode Management and Status Display**
|
**Status Message Display Fix**
|
||||||
|
|
||||||
Fixed status message display in the agent interface and implemented workspace mode management with drone status message socket events.
|
This weekend's work focused on fixing the status message display in the agent interface and implementing workspace mode management improvements with drone status message socket events.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Status**: Fixed status message display in agent interface.
|
- Fixed status message display in agent interface
|
||||||
- **Workspace**: Implemented workspace mode management; added drone status message socket events.
|
- Implemented workspace mode management
|
||||||
|
- Added drone status message socket events
|
||||||
|
- Many fixes
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-02 (Friday)
|
## 2026-05-02 (Friday)
|
||||||
|
|
||||||
**Workspace Mode Switching with Validation**
|
**Workspace Mode Switching**
|
||||||
|
|
||||||
Implemented workspace mode switching with validation, ensuring workspace mode changes are validated before being applied, along with session lock and workspace processing refinements.
|
This week involved implementing workspace mode switching functionality with proper validation, ensuring that workspace mode changes are validated before being applied, preventing invalid state transitions.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Workspace**: Implemented workspace mode switching with validation.
|
- Implemented workspace mode switching with validation
|
||||||
- **Session**: Added session lock and workspace processing refinements.
|
- Added session lock and workspace processing refinements
|
||||||
- **Socket**: Socket message and drone workspace cleanup; drone doc updates.
|
- Improved workspace management system
|
||||||
|
- Workspace management progress
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-05-01 (Thursday)
|
## 2026-05-01 (Thursday)
|
||||||
|
|
||||||
**The Grid Home View and GadgetId Migration**
|
**Welcome to The Grid**
|
||||||
|
|
||||||
Implemented the "Welcome to The Grid" home view, fixed JWT processing, refactored session lifecycle management, and completed the transition from Types.ObjectId to GadgetId across the codebase.
|
This week marked the beginning of a new phase with the implementation of the "Welcome to The Grid" home view, including JWT processing fixes, session startup/shutdown/refactoring improvements, and the transition from Types.ObjectId to GadgetId.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Home View**: Implemented "Welcome to The Grid" home view; return to Home on sign out.
|
- Implemented "Welcome to The Grid" home view
|
||||||
- **Auth**: Fixed JWT processing.
|
- Fixed JWT processing
|
||||||
- **Session**: Refactored session startup, shutdown, and import; fixed import errors.
|
- Refactored session startup, shutdown, and import
|
||||||
- **GadgetId**: Completed transition from Types.ObjectId to GadgetId (string alias using nanoid); correctly generate nanoid IDs in default clauses.
|
- Transitioned from Types.ObjectId to GadgetId
|
||||||
|
- Added return to Home on sign out
|
||||||
|
- More populate fixes
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-04-30 (Wednesday)
|
## 2026-04-30 (Wednesday)
|
||||||
|
|
||||||
**Socket Protocol and Drone Manager**
|
**Socket Protocol Implementation**
|
||||||
|
|
||||||
Implemented socket protocol completeness with typed events, created the DroneManager, and finalized Project Manager correctness.
|
This week focused on implementing and refining the socket protocol for drone-to-IDE communication, including defining missing socket event types, enforcing typed events in the frontend build, and adding a setting for max Socket.IO HTTP buffer size.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Socket Protocol**: Implemented socket protocol completeness; defined missing event types; enforced typed events in frontend build.
|
- Implemented socket protocol completeness
|
||||||
- **Drone Manager**: Created DroneManager (WIP).
|
- Defined missing socket event types
|
||||||
- **Config**: Added setting for max Socket.IO HTTP buffer size.
|
- Enforced typed events in frontend build
|
||||||
- **Project Manager**: Wrap-up on Project Manager correctness.
|
- Added max Socket.IO HTTP buffer size setting
|
||||||
|
- Created drone manager
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-04-29 (Tuesday)
|
## 2026-04-29 (Tuesday)
|
||||||
|
|
||||||
**Drone-to-IDE Event Routing and Workspace Persistence**
|
**Workspace Persistence and Crash Recovery**
|
||||||
|
|
||||||
Implemented drone-to-IDE event routing, added event emissions to the Agentic Workflow Loop, and implemented workspace persistence and crash recovery. Added workspace mode to the gadget-drone process.
|
This week involved implementing workspace persistence and crash recovery capabilities, including adding workspace mode to the gadget-drone process, event emissions to the Agentic Workflow Loop, and drone-to-IDE event routing.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Event Routing**: Implemented Drone→IDE event routing (Phase 3); added event emissions to AWL (Phase 4).
|
- Implemented workspace persistence and crash recovery
|
||||||
- **Workspace**: Added workspace mode to gadget-drone process; implemented workspace persistence and crash recovery (Phase 5).
|
- Added workspace mode to gadget-drone process
|
||||||
- **Protocol**: Implemented prompt submission; fixed type conflicts; added socket protocol documentation.
|
- Added event emissions to Agentic Workflow Loop
|
||||||
- **Config**: Added max Socket.IO HTTP buffer size setting; standardized interfaces.
|
- Implemented drone-to-IDE event routing
|
||||||
|
- Fixed type conflicts and implemented prompt submission
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 2026-04-28 (Monday)
|
## 2026-04-28 (Monday)
|
||||||
|
|
||||||
**Dark Industrial Theme, JWT Auth, and Project Manager**
|
**Dark Industrial Theme and JWT Authentication**
|
||||||
|
|
||||||
Significant visual and architectural milestone: implemented the dark industrial theme, Project Manager, and JWT authentication, replacing sign-up with streamlined sign-in.
|
This week marked a significant visual and architectural milestone with the implementation of the dark industrial theme, Project Manager, and JWT authentication, replacing the previous sign-up concept with a more streamlined sign-in experience.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- **Theme**: Implemented dark industrial theme with correct border colors and enforcement.
|
- Implemented dark industrial theme
|
||||||
- **Auth**: Implemented JWT authentication.
|
- Added Project Manager
|
||||||
- **Project Manager**: Added project service.
|
- Implemented JWT authentication
|
||||||
- **Models**: Refactored gadget-code model interfaces to `@gadget/api`.
|
- Enforced theme correctly
|
||||||
- **Infrastructure**: Added workspaceDir to DroneRegistration; E2E tests for theme.
|
- Added project service
|
||||||
|
- Updated DroneRegistration with workspaceDir
|
||||||
|
- Fix: Darken border colors to match dark industrial theme
|
||||||
|
- Theme enforced and correctly implemented; e2e tests added for theme
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -282,8 +311,8 @@ Significant visual and architectural milestone: implemented the dark industrial
|
|||||||
|
|
||||||
**Initial Commit**
|
**Initial Commit**
|
||||||
|
|
||||||
The project was initialized, establishing the foundation for all subsequent development.
|
The project was initialized with the initial commit, establishing the foundation for all subsequent development.
|
||||||
|
|
||||||
### Changes:
|
### Changes:
|
||||||
- Initial project commit.
|
- Initial project commit
|
||||||
- Established basic project structure.
|
- Established basic project structure
|
||||||
|
|||||||
@ -253,5 +253,5 @@ Apache 2.0 — See [LICENSE](./LICENSE) for details.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Status:** v1.0.1 — First release. Self-hosted agentic engineering platform with local/self-hosted AI model support, complete Chat Session UI, subagent processing, and workspace management.
|
**Status:** Production-ready foundation with complete Chat Session UI
|
||||||
**Last Updated:** May 17, 2026
|
**Last Updated:** May 17, 2026
|
||||||
|
|||||||
120
RELEASE.md
120
RELEASE.md
@ -1,120 +0,0 @@
|
|||||||
GADGET CODE v1.0.1
|
|
||||||
NAME: Liberation
|
|
||||||
HASH: ff46c35d38e29be64d9eca0ccc18e8a7f5c3d8ab
|
|
||||||
TAG: v1.0.1
|
|
||||||
|
|
||||||
SUMMARY:
|
|
||||||
|
|
||||||
Today marks the Liberation of Gadget Code — the first public release of a self-hosted agentic engineering platform that puts you in control of your code, your models, and your infrastructure.
|
|
||||||
|
|
||||||
Over 200 commits spanning 21 days of intensive development, Gadget Code has grown from an initial commit into a complete platform for autonomous software engineering. And every line of it is Apache-2.0 licensed, fully open source, and designed to run on *your* terms.
|
|
||||||
|
|
||||||
## What Is Gadget Code?
|
|
||||||
|
|
||||||
Gadget Code is an **Agentic Engineering Platform (AEP)** — a browser-based IDE that drives autonomous AI agents to perform real software engineering work on your behalf. Unlike cloud-locked alternatives, Gadget Code runs entirely in your environment: your servers, your data, your rules.
|
|
||||||
|
|
||||||
The architecture is straightforward and powerful:
|
|
||||||
|
|
||||||
```
|
|
||||||
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
||||||
│ Browser IDE │────▶│ gadget-code │────▶│ gadget-drone │
|
|
||||||
│ (React 19) │◀────│ (Express 5) │◀────│ (Worker) │
|
|
||||||
└──────────────┘ └──────────────┘ └──────────────┘
|
|
||||||
│ │ │
|
|
||||||
│ Socket.IO │ MongoDB │ Files
|
|
||||||
│ JWT Auth │ Redis │ Git
|
|
||||||
```
|
|
||||||
|
|
||||||
A user creates a project in the browser IDE, selects a drone instance, enters a prompt, and the drone executes the Agentic Workflow Loop — thinking, responding, calling tools, spawning subagents — all streamed back in real time.
|
|
||||||
|
|
||||||
## Your Models, Your Way
|
|
||||||
|
|
||||||
This is what Liberation means. Gadget Code ships with first-class support for **Ollama** and any **OpenAI-compatible API**. Run local models on your own GPU. Self-host an inference endpoint behind your firewall. Use a commercial provider when it suits you. Mix and match per session. The `@gadget/ai` package provides a unified abstraction — no consumer code ever imports an SDK directly. Swap providers without changing a line of application logic.
|
|
||||||
|
|
||||||
The model configuration pipeline supports `numCtx` (context window), `numPredict`, and `maxCompletionTokens` settings, giving you fine-grained control over how your models behave.
|
|
||||||
|
|
||||||
## Complete Agentic Engineering Platform
|
|
||||||
|
|
||||||
Gadget Code isn't a chatbot wrapper. It's a full-stack engineering environment:
|
|
||||||
|
|
||||||
- **Project Manager** — Create projects, select available drone instances, manage chat session history.
|
|
||||||
- **Chat Session View** — Real-time streaming responses with collapsible thinking content, tool call summaries, session statistics, and per-session model/mode selection.
|
|
||||||
- **Agentic Workflow Loop** — The drone executes a multi-turn reasoning loop: think, respond, call tools, observe results, and iterate. Work orders are abortable, and the loop supports checkpointing for crash recovery.
|
|
||||||
- **Subagent Processing** — Agents can spawn specialized subagents for decomposition tasks. Subagent context is managed independently and streamed back to the IDE in real time.
|
|
||||||
- **FILE Panel** — Lazy-loading file tree with full workspace navigation and CodeMirror editor integration (React 19 compatible).
|
|
||||||
- **Workspace Management** — Each drone manages a workspace directory with crash recovery via the `.gadget/` directory and intelligent startup that detects the workspace by walking up the file hierarchy.
|
|
||||||
- **Scheduled Tasks (gadget-tasks)** — A headless IDE client that automates the browser flow on a cron schedule. It drives the existing gadget-code platform via the same REST API and Socket.IO protocol the browser uses — no duplicated logic.
|
|
||||||
- **Pull Project** — Clone remote repositories directly into your workspace.
|
|
||||||
- **Abort Controller** — Cancel in-progress work orders with proper state cleanup.
|
|
||||||
|
|
||||||
## Configuration and Dependencies
|
|
||||||
|
|
||||||
Gadget Code requires:
|
|
||||||
|
|
||||||
- **Node.js 22+** and **pnpm 10+**
|
|
||||||
- **MongoDB** on `localhost:27017`
|
|
||||||
- **Redis** on `localhost:6379`
|
|
||||||
- **SSL certificates** in the `ssl/` directory for dev servers
|
|
||||||
- An **Ollama** instance or **OpenAI-compatible API** endpoint for AI features
|
|
||||||
|
|
||||||
The monorepo is organized as follows:
|
|
||||||
|
|
||||||
| Package | Role |
|
|
||||||
| -------------------- | --------------------------------------------------------------- |
|
|
||||||
| `gadget-code` | Web service — agentic IDE, browser UI, API server |
|
|
||||||
| `gadget-drone` | Worker process — runs the agentic workflow loop |
|
|
||||||
| `gadget-tasks` | Scheduled task worker — headless IDE client for cron-driven tasks |
|
|
||||||
| `@gadget/ai` | Shared AI API abstraction — Ollama and OpenAI |
|
|
||||||
| `@gadget/ai-toolbox` | Shared AI tool implementations — search, file, plan, subagent |
|
|
||||||
| `@gadget/api` | Shared TypeScript interfaces — common types across all packages |
|
|
||||||
| `@gadget/config` | Shared YAML config loader — per-package configuration |
|
|
||||||
|
|
||||||
AI providers are managed via CLI:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Add Ollama (no API key needed)
|
|
||||||
pnpm cli provider add "Local Ollama" ollama http://localhost:11434
|
|
||||||
|
|
||||||
# Add OpenAI-compatible provider
|
|
||||||
pnpm cli provider add "OpenAI" openai https://api.openai.com $OPENAI_API_KEY
|
|
||||||
|
|
||||||
# Discover available models
|
|
||||||
pnpm cli provider probe <provider-id>
|
|
||||||
```
|
|
||||||
|
|
||||||
## The Journey to v1.0.1
|
|
||||||
|
|
||||||
This release represents 21 days of development from April 27 through May 17, 2026:
|
|
||||||
|
|
||||||
- **Days 1–2** (Apr 27–28): Project initialization, dark industrial theme, JWT authentication, Project Manager, drone-to-IDE event routing, workspace persistence and crash recovery.
|
|
||||||
- **Days 3–4** (Apr 29–30): Socket protocol completeness, DroneManager, GadgetId migration from ObjectId to nanoid-based string IDs, "Welcome to The Grid" home view.
|
|
||||||
- **Days 5–6** (May 1–3): Workspace mode switching with validation, session locks, basic chat system milestone — the first end-to-end working demo.
|
|
||||||
- **Days 7–8** (May 5–6): Agent tool and toolbox architecture, tool registration patterns, AI environment foundation.
|
|
||||||
- **Day 9** (May 7): Streaming responses implementation — real-time token delivery from Ollama.
|
|
||||||
- **Day 10** (May 8): Chat session heartbeat, user settings, logging unification into `@gadget/api` as GadgetLog, redesigned sign-in form.
|
|
||||||
- **Day 9 continued** (May 9): Agentic Workflow Loop rebuild, chat session auto-naming, drone-to-IDE log transport.
|
|
||||||
- **Day 11** (May 10): Workspace/project philosophy refinement, agent toolbox refactor, credential provider fixes.
|
|
||||||
- **Day 12** (May 11): Subagent processing, authentication fixes, deployment documentation with systemd service files.
|
|
||||||
- **Day 13** (May 12): FILES panel with lazy-loading file tree, CodeMirror editor integration (replacing react-ace for React 19 compat), abort controller.
|
|
||||||
- **Day 14** (May 13): Editor height fixes, User Mode documentation.
|
|
||||||
- **Day 15** (May 14): SubProcess observability — tracking spawned processes in the DroneManager and DroneInspector.
|
|
||||||
- **Day 16** (May 15): Pull Project feature, tool call observability, context window configuration, Gab AI affiliate link.
|
|
||||||
- **Days 17–18** (May 16–17): AI toolbox extraction into `@gadget/ai-toolbox`, Project Manager upgrades, gadget-tasks headless client architecture, release hardening.
|
|
||||||
|
|
||||||
## Project Direction
|
|
||||||
|
|
||||||
Gadget Code is built on a simple conviction: **your code, your models, your infrastructure**. The cloud AI ecosystem has moved toward vendor lock-in at every layer — proprietary models, closed platforms, data harvesting. Liberation is the alternative. Every component of Gadget Code is self-hosted. Every AI call goes through your providers. Every file stays on your disk. Every model runs on your hardware if you want it to.
|
|
||||||
|
|
||||||
This is also the first release where the release document itself is authored by Gadget — the AI agent — as part of the automated release workflow. The agent that writes code for you also writes the release notes. We think that's fitting.
|
|
||||||
|
|
||||||
## Get Started
|
|
||||||
|
|
||||||
Get the latest release at **https://g4dge7.com/** — the official home of Gadget Code.
|
|
||||||
|
|
||||||
Apache-2.0 licensed. Fully open source. No vendor lock-in. No data harvesting. No cloud dependency. Just you, your models, and your code.
|
|
||||||
|
|
||||||
That's Liberation.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
*This RELEASE.md was authored by Gadget — the AI agent itself — as part of the automated release workflow. Gadget Code is licensed under the Apache-2.0 license. Both of these facts — an AI agent that can produce its own release notes, and a permissive open-source license that lets you build anything — are great reasons to switch to Gadget Code today. Get the latest release at https://g4dge7.com/.*
|
|
||||||
@ -19,14 +19,6 @@ vi.mock("../src/services/socket");
|
|||||||
vi.mock("../src/services/chat-session");
|
vi.mock("../src/services/chat-session");
|
||||||
vi.mock("../src/models/chat-turn");
|
vi.mock("../src/models/chat-turn");
|
||||||
vi.mock("../src/models/chat-session");
|
vi.mock("../src/models/chat-session");
|
||||||
vi.mock("../src/lib/tab-lock", () => ({
|
|
||||||
default: {
|
|
||||||
acquire: vi.fn().mockResolvedValue({ success: true }),
|
|
||||||
release: vi.fn().mockResolvedValue(undefined),
|
|
||||||
refresh: vi.fn().mockResolvedValue(true),
|
|
||||||
getInfo: vi.fn().mockResolvedValue(null),
|
|
||||||
},
|
|
||||||
}));
|
|
||||||
|
|
||||||
describe("CodeSession", () => {
|
describe("CodeSession", () => {
|
||||||
let mockSocket: any;
|
let mockSocket: any;
|
||||||
@ -278,14 +270,6 @@ describe("CodeSession", () => {
|
|||||||
ChatSessionService.generateSessionNameFromPrompt,
|
ChatSessionService.generateSessionNameFromPrompt,
|
||||||
).mockResolvedValue(namedSession as any);
|
).mockResolvedValue(namedSession as any);
|
||||||
|
|
||||||
// Mock drone to accept the work order so the success callback runs
|
|
||||||
mockDroneSession.socket.emit = vi.fn((event: string, ...args: any[]) => {
|
|
||||||
const callback = args[args.length - 1];
|
|
||||||
if (typeof callback === "function") {
|
|
||||||
callback(true, "work order accepted");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
await codeSession.onSubmitPrompt("build a rest api", cb);
|
await codeSession.onSubmitPrompt("build a rest api", cb);
|
||||||
|
|
||||||
expect(
|
expect(
|
||||||
@ -350,7 +334,7 @@ describe("CodeSession", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe("onRequestSessionLock", () => {
|
describe("onRequestSessionLock", () => {
|
||||||
it("should set selected drone, chat session, and project on success", async () => {
|
it("should set selected drone, chat session, and project on success", () => {
|
||||||
const mockDroneSession = {
|
const mockDroneSession = {
|
||||||
socket: {
|
socket: {
|
||||||
emit: vi.fn((event: string, ...args: any[]) => {
|
emit: vi.fn((event: string, ...args: any[]) => {
|
||||||
@ -373,11 +357,7 @@ describe("CodeSession", () => {
|
|||||||
callback,
|
callback,
|
||||||
);
|
);
|
||||||
|
|
||||||
// The inner callback is async (awaits TabLock.acquire), so we need to
|
expect(callback).toHaveBeenCalledWith(true, mockChatSession._id);
|
||||||
// wait for the microtask queue to flush before asserting
|
|
||||||
await vi.waitFor(() => {
|
|
||||||
expect(callback).toHaveBeenCalledWith(true, mockChatSession._id);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
it("should not set session data on failure", () => {
|
it("should not set session data on failure", () => {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "gadget-workspace",
|
"name": "gadget-workspace",
|
||||||
"version": "1.0.1",
|
"version": "1.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "Gadget Code monorepo workspace root",
|
"description": "Gadget Code monorepo workspace root",
|
||||||
"packageManager": "pnpm@10.33.2",
|
"packageManager": "pnpm@10.33.2",
|
||||||
|
|||||||
@ -320,9 +320,6 @@ importers:
|
|||||||
'@uiw/react-codemirror':
|
'@uiw/react-codemirror':
|
||||||
specifier: ^4.25.9
|
specifier: ^4.25.9
|
||||||
version: 4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.42.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
version: 4.25.9(@babel/runtime@7.29.2)(@codemirror/autocomplete@6.20.2)(@codemirror/language@6.12.3)(@codemirror/lint@6.9.6)(@codemirror/search@6.7.0)(@codemirror/state@6.6.0)(@codemirror/theme-one-dark@6.1.3)(@codemirror/view@6.42.1)(codemirror@6.0.2)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)
|
||||||
lucide-react:
|
|
||||||
specifier: ^1.16.0
|
|
||||||
version: 1.16.0(react@19.2.5)
|
|
||||||
marked:
|
marked:
|
||||||
specifier: ^16.4.2
|
specifier: ^16.4.2
|
||||||
version: 16.4.2
|
version: 16.4.2
|
||||||
@ -3040,11 +3037,6 @@ packages:
|
|||||||
resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
|
resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==}
|
||||||
engines: {node: 20 || >=22}
|
engines: {node: 20 || >=22}
|
||||||
|
|
||||||
lucide-react@1.16.0:
|
|
||||||
resolution: {integrity: sha512-dYwyPzb4MEKpGUmNYk3WKWPnMrHs3FKM+q94kAnJrcDIqqn1hq2xY8scaS2ovsOCM5D51ey2gaRG3PBb1vgoYQ==}
|
|
||||||
peerDependencies:
|
|
||||||
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
|
|
||||||
|
|
||||||
luxon@3.7.2:
|
luxon@3.7.2:
|
||||||
resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
|
resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
@ -6836,10 +6828,6 @@ snapshots:
|
|||||||
|
|
||||||
lru-cache@11.3.5: {}
|
lru-cache@11.3.5: {}
|
||||||
|
|
||||||
lucide-react@1.16.0(react@19.2.5):
|
|
||||||
dependencies:
|
|
||||||
react: 19.2.5
|
|
||||||
|
|
||||||
luxon@3.7.2: {}
|
luxon@3.7.2: {}
|
||||||
|
|
||||||
lz-string@1.5.0: {}
|
lz-string@1.5.0: {}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user