Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Pull request overview
Removes the legacy gRPC/protobuf implementation from Task Wizard to proceed with the REST + WebSocket architecture (simplifying both backend and frontend and dropping gRPC-Web support).
Changes:
- Deleted protobuf contract files and proto code generation scripts.
- Removed generated gRPC client/server code and related dependencies (TS + Go).
- Updated API server HTTP wiring and documentation to reflect the HTTP/WebSocket direction.
Reviewed changes
Copilot reviewed 28 out of 30 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| proto/user.proto | Removed user-related protobuf message definitions. |
| proto/task_service.proto | Removed gRPC service definitions (Task/Label/User/Token/Auth). |
| proto/task.proto | Removed task-related protobuf message definitions. |
| proto/label.proto | Removed label-related protobuf message definitions. |
| proto/common.proto | Removed shared protobuf enums/messages (frequency/notifications/scopes). |
| proto/generate.ps1 | Removed proto generation orchestrator script. |
| proto/generate-ts.ps1 | Removed TypeScript gRPC client generation script. |
| proto/generate-go.ps1 | Removed Go protobuf/gRPC generation script. |
| frontend/package.json | Dropped grpc-web / ts-proto / bufbuild protobuf dependencies. |
| frontend/yarn.lock | Updated lockfile to reflect removed gRPC/protobuf dependencies. |
| frontend/src/grpc/client.ts | Removed gRPC-Web client implementation. |
| frontend/src/grpc/common.ts | Removed generated TS protobuf types/helpers for common.proto. |
| frontend/src/grpc/label.ts | Removed generated TS protobuf types/helpers for label.proto. |
| frontend/src/grpc/task_service.ts | Removed generated TS service descriptors for gRPC services. |
| frontend/src/grpc/user.ts | Removed generated TS protobuf types/helpers for user.proto. |
| apiserver/main.go | Dropped h2c/http2 handler wiring and served Gin directly over net/http. |
| apiserver/go.mod | Removed gRPC module dependency and updated remaining indirect requirements. |
| apiserver/go.sum | Cleaned sums to reflect removed gRPC/protobuf-related modules. |
| apiserver/internal/grpc/common.pb.go | Removed generated Go protobuf code for common.proto. |
| apiserver/internal/grpc/label.pb.go | Removed generated Go protobuf code for label.proto. |
| apiserver/internal/grpc/task.pb.go | Removed generated Go protobuf code for task.proto. |
| apiserver/internal/grpc/task_service.pb.go | Removed generated Go protobuf code for task_service.proto. |
| apiserver/internal/grpc/user.pb.go | Removed generated Go protobuf code for user.proto. |
| apiserver/internal/grpc/label.go | Removed Go gRPC service implementation for labels. |
| apiserver/internal/grpc/task.go | Removed Go gRPC service implementation for tasks. |
| apiserver/internal/grpc/user.go | Removed Go gRPC service implementation for users. |
| .github/copilot-instructions.md | Updated contributor instructions to reflect HTTP-based approach and removed proto workflow. |
| .agents/architecture.md | Updated architecture doc to remove protobuf layer and describe REST + WebSocket transport. |
| import ( | ||
| "context" | ||
| "flag" | ||
| "fmt" | ||
| "log" | ||
| "net/http" | ||
|
|
||
| "dkhalife.com/tasks/core/backend" | ||
| "dkhalife.com/tasks/core/config" | ||
| "dkhalife.com/tasks/core/frontend" | ||
| auth "dkhalife.com/tasks/core/internal/middleware/auth" | ||
| "dkhalife.com/tasks/core/internal/migrations" | ||
| database "dkhalife.com/tasks/core/internal/utils/database" | ||
| "dkhalife.com/tasks/core/internal/utils/email" | ||
| utils "dkhalife.com/tasks/core/internal/utils/middleware" | ||
| ws "dkhalife.com/tasks/core/internal/ws" | ||
| "github.com/gin-contrib/cors" | ||
| "github.com/gin-gonic/gin" | ||
| "go.uber.org/fx" | ||
| "go.uber.org/fx/fxevent" | ||
| "go.uber.org/zap/zapcore" | ||
| "golang.org/x/net/http2" | ||
| "golang.org/x/net/http2/h2c" | ||
|
|
||
| "gorm.io/gorm" | ||
|
|
There was a problem hiding this comment.
The import block ordering/grouping in this file doesn’t match the Go import grouping convention used elsewhere in the codebase (stdlib → internal dkhalife.com/tasks/... → external). Since this hunk touches the imports, consider running goimports/gofmt to regroup/sort them to keep consistency and avoid future churn (e.g., compare with apiserver/internal/apis/task.go import grouping).
| ## Project Overview | ||
|
|
||
| Task Wizard is a self-hosted, privacy-focused task management app: React frontend communicates via gRPC-Web/HTTP → Go API server handles business logic and persistence → SQLite/MySQL via GORM. A .NET MCP server exposes tools for AI assistants. | ||
| Task Wizard is a self-hosted, privacy-focused task management app: React frontend communicates via HTTP → Go API server handles business logic and persistence → SQLite/MySQL via GORM. A .NET MCP server exposes tools for AI assistants. |
There was a problem hiding this comment.
This overview now says the frontend communicates via HTTP only, but the codebase still includes a WebSocket transport/path (and this PR description mentions WebSocket). Consider updating this sentence to explicitly mention WebSocket (e.g., “HTTP + WebSocket”) to keep the high-level docs accurate/consistent with .agents/architecture.md.
| Task Wizard is a self-hosted, privacy-focused task management app: React frontend communicates via HTTP → Go API server handles business logic and persistence → SQLite/MySQL via GORM. A .NET MCP server exposes tools for AI assistants. | |
| Task Wizard is a self-hosted, privacy-focused task management app: React frontend communicates via HTTP + WebSocket → Go API server handles business logic and persistence → SQLite/MySQL via GORM. A .NET MCP server exposes tools for AI assistants. |
Will proceed with the REST & Websocket implementations