Files
Mike Swanson 75ce1c2fd5 feat: Add Sequential Thinking to Code Review + Frontend Validation
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>
2026-01-17 16:23:52 -07:00

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