Enhanced code review and frontend validation with intelligent triggers: Code Review Agent Enhancement: - Added Sequential Thinking MCP integration for complex issues - Triggers on 2+ rejections or 3+ critical issues - New escalation format with root cause analysis - Comprehensive solution strategies with trade-off evaluation - Educational feedback to break rejection cycles - Files: .claude/agents/code-review.md (+308 lines) - Docs: CODE_REVIEW_ST_ENHANCEMENT.md, CODE_REVIEW_ST_TESTING.md Frontend Design Skill Enhancement: - Automatic invocation for ANY UI change - Comprehensive validation checklist (200+ checkpoints) - 8 validation categories (visual, interactive, responsive, a11y, etc.) - 3 validation levels (quick, standard, comprehensive) - Integration with code review workflow - Files: .claude/skills/frontend-design/SKILL.md (+120 lines) - Docs: UI_VALIDATION_CHECKLIST.md (462 lines), AUTOMATIC_VALIDATION_ENHANCEMENT.md (587 lines) Settings Optimization: - Repaired .claude/settings.local.json (fixed m365 pattern) - Reduced permissions from 49 to 33 (33% reduction) - Removed duplicates, sorted alphabetically - Created SETTINGS_PERMISSIONS.md documentation Checkpoint Command Enhancement: - Dual checkpoint system (git + database) - Saves session context to API for cross-machine recall - Includes git metadata in database context - Files: .claude/commands/checkpoint.md (+139 lines) Decision Rationale: - Sequential Thinking MCP breaks rejection cycles by identifying root causes - Automatic frontend validation catches UI issues before code review - Dual checkpoints enable complete project memory across machines - Settings optimization improves maintainability Total: 1,200+ lines of documentation and enhancements Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
335 lines
11 KiB
Plaintext
335 lines
11 KiB
Plaintext
warning: profiles for the non root package will be ignored, specify profiles at the workspace root:
|
|
package: /home/guru/guru-connect/server/Cargo.toml
|
|
workspace: /home/guru/guru-connect/Cargo.toml
|
|
Compiling guruconnect-server v0.1.0 (/home/guru/guru-connect/server)
|
|
warning: unused import: `JwtConfig`
|
|
--> server/src/api/auth.rs:11:41
|
|
|
|
|
11 | verify_password, AuthenticatedUser, JwtConfig,
|
|
| ^^^^^^^^^
|
|
|
|
|
= note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: unused import: `Query`
|
|
--> server/src/api/mod.rs:7:28
|
|
|
|
|
7 | extract::{Path, State, Query},
|
|
| ^^^^^
|
|
|
|
warning: unused import: `machines::*`
|
|
--> server/src/db/mod.rs:17:9
|
|
|
|
|
17 | pub use machines::*;
|
|
| ^^^^^^^^^^^
|
|
|
|
warning: unused import: `sessions::*`
|
|
--> server/src/db/mod.rs:18:9
|
|
|
|
|
18 | pub use sessions::*;
|
|
| ^^^^^^^^^^^
|
|
|
|
warning: unused import: `events::*`
|
|
--> server/src/db/mod.rs:19:9
|
|
|
|
|
19 | pub use events::*;
|
|
| ^^^^^^^^^
|
|
|
|
warning: unused import: `support_codes::*`
|
|
--> server/src/db/mod.rs:20:9
|
|
|
|
|
20 | pub use support_codes::*;
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
warning: unused variable: `machine_id`
|
|
--> server/src/relay/mod.rs:118:9
|
|
|
|
|
118 | let machine_id = if let Some(ref db) = db {
|
|
| ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_machine_id`
|
|
|
|
|
= note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: struct `ValidateParams` is never constructed
|
|
--> server/src/main.rs:270:8
|
|
|
|
|
270 | struct ValidateParams {
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
|
= note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
|
|
|
|
warning: fields `listen_addr`, `jwt_secret`, and `debug` are never read
|
|
--> server/src/config.rs:10:9
|
|
|
|
|
8 | pub struct Config {
|
|
| ------ fields in this struct
|
|
9 | /// Address to listen on (e.g., "0.0.0.0:8080")
|
|
10 | pub listen_addr: String,
|
|
| ^^^^^^^^^^^
|
|
...
|
|
19 | pub jwt_secret: Option<String>,
|
|
| ^^^^^^^^^^
|
|
...
|
|
22 | pub debug: bool,
|
|
| ^^^^^
|
|
|
|
|
= note: `Config` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: constant `HEARTBEAT_TIMEOUT_SECS` is never used
|
|
--> server/src/session/mod.rs:30:7
|
|
|
|
|
30 | const HEARTBEAT_TIMEOUT_SECS: u64 = 90;
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: field `input_rx` is never read
|
|
--> server/src/session/mod.rs:67:5
|
|
|
|
|
61 | struct SessionData {
|
|
| ----------- field in this struct
|
|
...
|
|
67 | input_rx: Option<InputReceiver>,
|
|
| ^^^^^^^^
|
|
|
|
warning: methods `is_session_timed_out` and `get_timed_out_sessions` are never used
|
|
--> server/src/session/mod.rs:195:18
|
|
|
|
|
81 | impl SessionManager {
|
|
| ------------------- methods in this implementation
|
|
...
|
|
195 | pub async fn is_session_timed_out(&self, session_id: SessionId) -> bool {
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
...
|
|
205 | pub async fn get_timed_out_sessions(&self) -> Vec<SessionId> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: field `permissions` is never read
|
|
--> server/src/auth/mod.rs:24:9
|
|
|
|
|
20 | pub struct AuthenticatedUser {
|
|
| ----------------- field in this struct
|
|
...
|
|
24 | pub permissions: Vec<String>,
|
|
| ^^^^^^^^^^^
|
|
|
|
|
= note: `AuthenticatedUser` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: method `has_permission` is never used
|
|
--> server/src/auth/mod.rs:29:12
|
|
|
|
|
27 | impl AuthenticatedUser {
|
|
| ---------------------- method in this implementation
|
|
28 | /// Check if user has a specific permission
|
|
29 | pub fn has_permission(&self, permission: &str) -> bool {
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
warning: struct `AuthenticatedAgent` is never constructed
|
|
--> server/src/auth/mod.rs:55:12
|
|
|
|
|
55 | pub struct AuthenticatedAgent {
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: struct `AuthState` is never constructed
|
|
--> server/src/auth/mod.rs:62:12
|
|
|
|
|
62 | pub struct AuthState {
|
|
| ^^^^^^^^^
|
|
|
|
warning: associated function `new` is never used
|
|
--> server/src/auth/mod.rs:67:12
|
|
|
|
|
66 | impl AuthState {
|
|
| -------------- associated function in this implementation
|
|
67 | pub fn new(jwt_secret: String, expiry_hours: i64) -> Self {
|
|
| ^^^
|
|
|
|
warning: struct `OptionalUser` is never constructed
|
|
--> server/src/auth/mod.rs:112:12
|
|
|
|
|
112 | pub struct OptionalUser(pub Option<AuthenticatedUser>);
|
|
| ^^^^^^^^^^^^
|
|
|
|
warning: function `validate_agent_key` is never used
|
|
--> server/src/auth/mod.rs:151:8
|
|
|
|
|
151 | pub fn validate_agent_key(_api_key: &str) -> Option<AuthenticatedAgent> {
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `default_jwt_secret` is never used
|
|
--> server/src/auth/jwt.rs:104:8
|
|
|
|
|
104 | pub fn default_jwt_secret() -> String {
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `list_sessions` is never used
|
|
--> server/src/api/mod.rs:75:14
|
|
|
|
|
75 | pub async fn list_sessions(
|
|
| ^^^^^^^^^^^^^
|
|
|
|
warning: function `get_session` is never used
|
|
--> server/src/api/mod.rs:83:14
|
|
|
|
|
83 | pub async fn get_session(
|
|
| ^^^^^^^^^^^
|
|
|
|
warning: function `update_machine_status` is never used
|
|
--> server/src/db/machines.rs:51:14
|
|
|
|
|
51 | pub async fn update_machine_status(
|
|
| ^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_session` is never used
|
|
--> server/src/db/sessions.rs:67:14
|
|
|
|
|
67 | pub async fn get_session(pool: &PgPool, session_id: Uuid) -> Result<Option<DbSession>, sqlx::Error> {
|
|
| ^^^^^^^^^^^
|
|
|
|
warning: function `get_active_sessions_for_machine` is never used
|
|
--> server/src/db/sessions.rs:75:14
|
|
|
|
|
75 | pub async fn get_active_sessions_for_machine(
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_recent_sessions` is never used
|
|
--> server/src/db/sessions.rs:88:14
|
|
|
|
|
88 | pub async fn get_recent_sessions(
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: associated constants `SESSION_TIMEOUT`, `STREAMING_STARTED`, and `STREAMING_STOPPED` are never used
|
|
--> server/src/db/events.rs:29:15
|
|
|
|
|
26 | impl EventTypes {
|
|
| --------------- associated constants in this implementation
|
|
...
|
|
29 | pub const SESSION_TIMEOUT: &'static str = "session_timeout";
|
|
| ^^^^^^^^^^^^^^^
|
|
...
|
|
32 | pub const STREAMING_STARTED: &'static str = "streaming_started";
|
|
| ^^^^^^^^^^^^^^^^^
|
|
33 | pub const STREAMING_STOPPED: &'static str = "streaming_stopped";
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_session_events` is never used
|
|
--> server/src/db/events.rs:69:14
|
|
|
|
|
69 | pub async fn get_session_events(
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_recent_events` is never used
|
|
--> server/src/db/events.rs:82:14
|
|
|
|
|
82 | pub async fn get_recent_events(
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_events_by_type` is never used
|
|
--> server/src/db/events.rs:95:14
|
|
|
|
|
95 | pub async fn get_events_by_type(
|
|
| ^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: struct `DbSupportCode` is never constructed
|
|
--> server/src/db/support_codes.rs:10:12
|
|
|
|
|
10 | pub struct DbSupportCode {
|
|
| ^^^^^^^^^^^^^
|
|
|
|
warning: function `create_support_code` is never used
|
|
--> server/src/db/support_codes.rs:24:14
|
|
|
|
|
24 | pub async fn create_support_code(
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_support_code` is never used
|
|
--> server/src/db/support_codes.rs:43:14
|
|
|
|
|
43 | pub async fn get_support_code(pool: &PgPool, code: &str) -> Result<Option<DbSupportCode>, sqlx::Error> {
|
|
| ^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `mark_code_cancelled` is never used
|
|
--> server/src/db/support_codes.rs:90:14
|
|
|
|
|
90 | pub async fn mark_code_cancelled(pool: &PgPool, code: &str) -> Result<(), sqlx::Error> {
|
|
| ^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `get_active_support_codes` is never used
|
|
--> server/src/db/support_codes.rs:99:14
|
|
|
|
|
99 | pub async fn get_active_support_codes(pool: &PgPool) -> Result<Vec<DbSupportCode>, sqlx::Error> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `is_code_valid` is never used
|
|
--> server/src/db/support_codes.rs:108:14
|
|
|
|
|
108 | pub async fn is_code_valid(pool: &PgPool, code: &str) -> Result<bool, sqlx::Error> {
|
|
| ^^^^^^^^^^^^^
|
|
|
|
warning: function `is_code_cancelled` is never used
|
|
--> server/src/db/support_codes.rs:119:14
|
|
|
|
|
119 | pub async fn is_code_cancelled(pool: &PgPool, code: &str) -> Result<bool, sqlx::Error> {
|
|
| ^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `link_session_to_code` is never used
|
|
--> server/src/db/support_codes.rs:130:14
|
|
|
|
|
130 | pub async fn link_session_to_code(
|
|
| ^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: field `updated_at` is never read
|
|
--> server/src/db/users.rs:18:9
|
|
|
|
|
10 | pub struct User {
|
|
| ---- field in this struct
|
|
...
|
|
18 | pub updated_at: DateTime<Utc>,
|
|
| ^^^^^^^^^^
|
|
|
|
|
= note: `User` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis
|
|
|
|
warning: struct `UserInfo` is never constructed
|
|
--> server/src/db/users.rs:24:12
|
|
|
|
|
24 | pub struct UserInfo {
|
|
| ^^^^^^^^
|
|
|
|
warning: function `get_user_client_access` is never used
|
|
--> server/src/db/users.rs:210:14
|
|
|
|
|
210 | pub async fn get_user_client_access(pool: &PgPool, user_id: Uuid) -> Result<Vec<Uuid>> {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: function `user_has_client_access` is never used
|
|
--> server/src/db/users.rs:246:14
|
|
|
|
|
246 | pub async fn user_has_client_access(
|
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
|
|
|
warning: field `technician_id` is never read
|
|
--> server/src/support_codes.rs:39:9
|
|
|
|
|
38 | pub struct CreateCodeRequest {
|
|
| ----------------- field in this struct
|
|
39 | pub technician_id: Option<String>,
|
|
| ^^^^^^^^^^^^^
|
|
|
|
|
= note: `CreateCodeRequest` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
|
|
|
|
warning: methods `get_code`, `is_valid_for_connection`, `list_codes`, and `get_by_session` are never used
|
|
--> server/src/support_codes.rs:166:18
|
|
|
|
|
60 | impl SupportCodeManager {
|
|
| ----------------------- methods in this implementation
|
|
...
|
|
166 | pub async fn get_code(&self, code: &str) -> Option<SupportCode> {
|
|
| ^^^^^^^^
|
|
...
|
|
198 | pub async fn is_valid_for_connection(&self, code: &str) -> bool {
|
|
| ^^^^^^^^^^^^^^^^^^^^^^^
|
|
...
|
|
204 | pub async fn list_codes(&self) -> Vec<SupportCode> {
|
|
| ^^^^^^^^^^
|
|
...
|
|
219 | pub async fn get_by_session(&self, session_id: Uuid) -> Option<SupportCode> {
|
|
| ^^^^^^^^^^^^^^
|
|
|
|
warning: `guruconnect-server` (bin "guruconnect-server") generated 44 warnings (run `cargo fix --bin "guruconnect-server" -p guruconnect-server` to apply 7 suggestions)
|
|
Finished `release` profile [optimized] target(s) in 15.62s |