rails-ai-context 4.3.1 → 4.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +84 -53
- data/CLAUDE.md +2 -2
- data/README.md +268 -197
- data/demo-trace.gif +0 -0
- data/demo-trace.tape +21 -0
- data/demo.gif +0 -0
- data/demo.tape +33 -0
- data/docs/GUIDE.md +9 -9
- data/lib/generators/rails_ai_context/install/install_generator.rb +2 -1
- data/lib/rails_ai_context/configuration.rb +1 -1
- data/lib/rails_ai_context/doctor.rb +4 -2
- data/lib/rails_ai_context/fingerprinter.rb +2 -1
- data/lib/rails_ai_context/introspectors/accessibility_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/action_mailbox_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/action_text_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/active_storage_introspector.rb +6 -3
- data/lib/rails_ai_context/introspectors/api_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/asset_pipeline_introspector.rb +6 -3
- data/lib/rails_ai_context/introspectors/auth_introspector.rb +14 -7
- data/lib/rails_ai_context/introspectors/config_introspector.rb +12 -6
- data/lib/rails_ai_context/introspectors/controller_introspector.rb +20 -10
- data/lib/rails_ai_context/introspectors/convention_detector.rb +2 -1
- data/lib/rails_ai_context/introspectors/design_token_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/devops_introspector.rb +6 -3
- data/lib/rails_ai_context/introspectors/engine_introspector.rb +4 -2
- data/lib/rails_ai_context/introspectors/frontend_framework_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/i18n_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/job_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/middleware_introspector.rb +4 -2
- data/lib/rails_ai_context/introspectors/migration_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/model_introspector.rb +20 -10
- data/lib/rails_ai_context/introspectors/multi_database_introspector.rb +12 -6
- data/lib/rails_ai_context/introspectors/performance_introspector.rb +19 -19
- data/lib/rails_ai_context/introspectors/route_introspector.rb +4 -2
- data/lib/rails_ai_context/introspectors/schema_introspector.rb +14 -7
- data/lib/rails_ai_context/introspectors/seeds_introspector.rb +2 -1
- data/lib/rails_ai_context/introspectors/stimulus_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/test_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/turbo_introspector.rb +22 -11
- data/lib/rails_ai_context/introspectors/view_introspector.rb +8 -4
- data/lib/rails_ai_context/introspectors/view_template_introspector.rb +10 -5
- data/lib/rails_ai_context/serializers/claude_rules_serializer.rb +3 -3
- data/lib/rails_ai_context/serializers/claude_serializer.rb +3 -3
- data/lib/rails_ai_context/serializers/context_file_serializer.rb +2 -1
- data/lib/rails_ai_context/serializers/copilot_instructions_serializer.rb +3 -3
- data/lib/rails_ai_context/serializers/cursor_rules_serializer.rb +4 -4
- data/lib/rails_ai_context/serializers/opencode_rules_serializer.rb +3 -3
- data/lib/rails_ai_context/tasks/rails_ai_context.rake +8 -4
- data/lib/rails_ai_context/tools/analyze_feature.rb +90 -20
- data/lib/rails_ai_context/tools/base_tool.rb +22 -7
- data/lib/rails_ai_context/tools/dependency_graph.rb +4 -1
- data/lib/rails_ai_context/tools/diagnose.rb +9 -7
- data/lib/rails_ai_context/tools/generate_test.rb +32 -4
- data/lib/rails_ai_context/tools/get_callbacks.rb +4 -2
- data/lib/rails_ai_context/tools/get_concern.rb +12 -6
- data/lib/rails_ai_context/tools/get_context.rb +1 -0
- data/lib/rails_ai_context/tools/get_controllers.rb +10 -5
- data/lib/rails_ai_context/tools/get_conventions.rb +4 -2
- data/lib/rails_ai_context/tools/get_design_system.rb +2 -1
- data/lib/rails_ai_context/tools/get_env.rb +8 -4
- data/lib/rails_ai_context/tools/get_helper_methods.rb +6 -3
- data/lib/rails_ai_context/tools/get_job_pattern.rb +2 -1
- data/lib/rails_ai_context/tools/get_model_details.rb +11 -5
- data/lib/rails_ai_context/tools/get_partial_interface.rb +25 -11
- data/lib/rails_ai_context/tools/get_schema.rb +3 -1
- data/lib/rails_ai_context/tools/get_service_pattern.rb +2 -1
- data/lib/rails_ai_context/tools/get_stimulus.rb +2 -1
- data/lib/rails_ai_context/tools/get_test_info.rb +4 -2
- data/lib/rails_ai_context/tools/get_turbo_map.rb +22 -11
- data/lib/rails_ai_context/tools/get_view.rb +6 -3
- data/lib/rails_ai_context/tools/migration_advisor.rb +8 -4
- data/lib/rails_ai_context/tools/onboard.rb +107 -22
- data/lib/rails_ai_context/tools/performance_check.rb +46 -28
- data/lib/rails_ai_context/tools/query.rb +24 -0
- data/lib/rails_ai_context/tools/review_changes.rb +13 -12
- data/lib/rails_ai_context/tools/runtime_info.rb +10 -5
- data/lib/rails_ai_context/tools/search_code.rb +8 -4
- data/lib/rails_ai_context/tools/search_docs.rb +2 -1
- data/lib/rails_ai_context/tools/session_context.rb +15 -9
- data/lib/rails_ai_context/tools/validate.rb +21 -8
- data/lib/rails_ai_context/version.rb +1 -1
- metadata +5 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5568327e1027266892b2514cad27a3665532acfa1405236caecda030ff313739
|
|
4
|
+
data.tar.gz: 6be68e0d310f9a42aafc47161a676d162debba0cfe8a8f4087ee6051f79900cc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 151fec5402860aa577e1c21af3ece8c0378a3f5b50f3e18e34236a43061d01da945a869972347e07d2748601c4e7965a449596fecb04cf1eecb0915a0ef73463
|
|
7
|
+
data.tar.gz: 18f46e2c0c1d638c3822687f949588dc5f9874cb61cf3f827827205e472456c95d7c55f74cec6a157bfa99531ab4849a9e14a9c23fce7676fc554463a934d9d3
|
data/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [4.3.3] — 2026-04-02
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
- **100 bare rescue statements across 46 files** — all replaced with `rescue => e` + conditional debug logging (`$stderr.puts ... if ENV["DEBUG"]`); errors are now visible instead of silently swallowed
|
|
12
|
+
- **database_stats introspector orphaned** — `DatabaseStatsIntrospector` was unreachable (not in any preset); added to `:full` preset (32 → 33 introspectors)
|
|
13
|
+
- **CHANGELOG date errors** — v4.0.0 corrected from 2026-03-26 to 2026-03-27, v4.2.0 from 2026-03-26 to 2026-03-30 (verified against git commit timestamps)
|
|
14
|
+
- **CHANGELOG missing v3.0.1 entry** — added (RubyGems republish, no code changes)
|
|
15
|
+
- **CHANGELOG date separator inconsistency** — normalized all 61 version entries to em dash (`—`)
|
|
16
|
+
- **Documentation preset counts** — CLAUDE.md, README, GUIDE all corrected: `:full` 32→33, `:standard` 14→19 (turbo, auth, accessibility, performance, i18n were added in v4.3.1 but docs not updated)
|
|
17
|
+
- **GUIDE.md standard preset table** — added 5 missing introspectors (turbo, auth, accessibility, performance, i18n) to match `configuration.rb`
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- Full preset: 32 → 33 introspectors (added :database_stats)
|
|
21
|
+
|
|
22
|
+
## [4.3.2] — 2026-04-02
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- **review_changes undefined variable** — `changed_tests` (NameError at runtime) replaced with correct `test_files` variable in `detect_warnings`
|
|
26
|
+
- **N+1 introspector O(n*m*k) view scan** — `detect_n_plus_one` now pre-loads all view file contents once via `preload_view_contents` instead of re-globbing per model+association pair
|
|
27
|
+
- **atomic write collision** — temp filenames now include `SecureRandom.hex(4)` suffix to prevent concurrent process collisions on the same file
|
|
28
|
+
- **bare rescue; end across 7 serializers + 2 tools** — all 16 occurrences replaced with `rescue => e` + stderr logging so errors are visible instead of silently swallowed
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
- Test count: 1176 → 1529 (+353 new tests)
|
|
32
|
+
- 26 new spec files covering previously untested tools, serializer helpers, introspectors, and infrastructure (server, engine, resources, watcher)
|
|
33
|
+
|
|
8
34
|
## [4.3.1] — 2026-04-02
|
|
9
35
|
|
|
10
36
|
### Fixed
|
|
@@ -101,7 +127,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
101
127
|
### Changed
|
|
102
128
|
- Test count: 983 → 998
|
|
103
129
|
|
|
104
|
-
## [4.2.0] — 2026-03-
|
|
130
|
+
## [4.2.0] — 2026-03-30
|
|
105
131
|
|
|
106
132
|
### Added
|
|
107
133
|
- New `rails_search_docs` tool: bundled topic index with weighted keyword search, on-demand GitHub fetch for Rails documentation
|
|
@@ -157,7 +183,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
157
183
|
- Test count: 817 → 893
|
|
158
184
|
- Install generator always writes `config.ai_tools` and `config.tool_mode` uncommented for re-install detection
|
|
159
185
|
|
|
160
|
-
## [4.0.0] — 2026-03-
|
|
186
|
+
## [4.0.0] — 2026-03-27
|
|
161
187
|
|
|
162
188
|
### Added
|
|
163
189
|
|
|
@@ -195,7 +221,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
195
221
|
- Test count: 681 → 806 examples
|
|
196
222
|
- Combustion test app expanded with Stimulus controllers, ViewComponents, accessible views, factories
|
|
197
223
|
|
|
198
|
-
## [3.1.0]
|
|
224
|
+
## [3.1.0] — 2026-03-26
|
|
199
225
|
|
|
200
226
|
### Fixed
|
|
201
227
|
|
|
@@ -211,7 +237,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
211
237
|
- **File path suggestions in validate** — `files=["cook.rb"]` now suggests `app/models/cook.rb` when the file isn't found at the given path.
|
|
212
238
|
- **Empty parameter validation** — `edit_context` now returns friendly messages for empty `file` or `near` parameters instead of hard errors.
|
|
213
239
|
|
|
214
|
-
## [3.0.
|
|
240
|
+
## [3.0.1] — 2026-03-26
|
|
241
|
+
|
|
242
|
+
### Changed
|
|
243
|
+
- Patch for RubyGems publish — no code changes from v3.0.0.
|
|
244
|
+
|
|
245
|
+
## [3.0.0] — 2026-03-26
|
|
215
246
|
|
|
216
247
|
### Removed
|
|
217
248
|
|
|
@@ -238,14 +269,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
238
269
|
- All CLI examples use zsh-safe quoting: `rails 'ai:tool[X]'` (brackets are glob patterns in zsh).
|
|
239
270
|
- README rewritten with real-world workflow examples, categorized tool table, MCP vs CLI showcase.
|
|
240
271
|
|
|
241
|
-
## [2.0.5]
|
|
272
|
+
## [2.0.5] — 2026-03-25
|
|
242
273
|
|
|
243
274
|
### Changed
|
|
244
275
|
|
|
245
276
|
- **Task-based MCP tool instructions** — all 6 serializers (Claude, Cursor, Copilot, Windsurf, OpenCode) rewritten from tool-first to task-first: "What are you trying to do?" → exact tool call. 7 task categories: understand a feature, trace a method, add a field, fix a controller, build a view, write tests, find code. Every AI agent now understands which tool to use for any task.
|
|
246
277
|
- **Concern detail:"full" bug fix** — `\b` after `?`/`!` prevented 13 of 15 method bodies from being extracted. All methods now show source code.
|
|
247
278
|
|
|
248
|
-
## [2.0.4]
|
|
279
|
+
## [2.0.4] — 2026-03-25
|
|
249
280
|
|
|
250
281
|
### Added
|
|
251
282
|
|
|
@@ -256,14 +287,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
256
287
|
- **analyze_feature: service test gaps** — checks services for missing test files, not just models/controllers/jobs.
|
|
257
288
|
- **All 6 serializers updated** — Claude, Cursor, Copilot, Windsurf, OpenCode all document trace mode, concern source, orphaned tables, inherited filters.
|
|
258
289
|
|
|
259
|
-
## [2.0.3]
|
|
290
|
+
## [2.0.3] — 2026-03-25
|
|
260
291
|
|
|
261
292
|
### Added
|
|
262
293
|
|
|
263
294
|
- **Trace mode 100%** — `match_type:"trace"` now shows 7 sections: definition with class/module context, source code, internal calls, sibling methods (same file), app callers with route chain hints, and test coverage (separated from app code). Zero follow-up calls needed.
|
|
264
295
|
- **README rewrite** — neuro marketing techniques: loss aversion hook, measured token savings table, trace output inline, architecture diagram. 456→261 lines.
|
|
265
296
|
|
|
266
|
-
## [2.0.2]
|
|
297
|
+
## [2.0.2] — 2026-03-25
|
|
267
298
|
|
|
268
299
|
### Added
|
|
269
300
|
|
|
@@ -281,7 +312,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
281
312
|
|
|
282
313
|
- **Documentation audit** — fixed max_tool_response_chars reference (120K→200K), added missing search_code params to GUIDE, added config.ai_tools to config reference.
|
|
283
314
|
|
|
284
|
-
## [2.0.1]
|
|
315
|
+
## [2.0.1] — 2026-03-25
|
|
285
316
|
|
|
286
317
|
### Fixed
|
|
287
318
|
|
|
@@ -292,7 +323,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
292
323
|
- **Issue #14** — `multi_db[:databases].keys` crash on Array fixed.
|
|
293
324
|
- **Search code NON_CODE_GLOBS** — excludes lock files, docs, CI configs, generated context from all searches.
|
|
294
325
|
|
|
295
|
-
## [2.0.0]
|
|
326
|
+
## [2.0.0] — 2026-03-24
|
|
296
327
|
|
|
297
328
|
### Added
|
|
298
329
|
|
|
@@ -337,14 +368,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
337
368
|
|
|
338
369
|
- **JS fallback validator false-positives** — escaped backslashes before string-closing quotes (`"path\\"`) no longer cause false bracket mismatch errors. Replaced `prev_char` check with proper `escaped` toggle flag.
|
|
339
370
|
|
|
340
|
-
## [1.3.1]
|
|
371
|
+
## [1.3.1] — 2026-03-23
|
|
341
372
|
|
|
342
373
|
### Fixed
|
|
343
374
|
|
|
344
375
|
- **Documentation audit** — updated tool count from 14 to 15 across README, GUIDE, CONTRIBUTING, server.json. Added `rails_get_design_system` documentation section to GUIDE.md. Updated SECURITY.md supported versions. Fixed spec count in CLAUDE.md. Added `rails_get_design_system` to README tool table. Updated `rails_analyze_feature` description to reflect full-stack discovery (services, jobs, views, Stimulus, tests, related models, env deps).
|
|
345
376
|
- **analyze_feature crash on complex models** — added type guards (`is_a?(Hash)`, `is_a?(Array)`) to all data access points preventing `no implicit conversion of Symbol into Integer` errors on models with many associations or complex data.
|
|
346
377
|
|
|
347
|
-
## [1.3.0]
|
|
378
|
+
## [1.3.0] — 2026-03-23
|
|
348
379
|
|
|
349
380
|
### Added
|
|
350
381
|
|
|
@@ -366,7 +397,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
366
397
|
- **Rules serializer methods cap raised to 20** (RS1) — uses introspector's pre-filtered methods directly instead of redundant re-filtering
|
|
367
398
|
- **oklch token noise filtered** (DS21) — complex color values (oklch, calc, var) hidden from summary, only shown in `detail:"full"`
|
|
368
399
|
|
|
369
|
-
## [1.2.1]
|
|
400
|
+
## [1.2.1] — 2026-03-23
|
|
370
401
|
|
|
371
402
|
### Fixed
|
|
372
403
|
|
|
@@ -380,7 +411,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
380
411
|
- **Column defaults shown in generated rules** — columns with non-nil defaults now show `(=value)` inline.
|
|
381
412
|
- **`analyze_feature` matches models by table name and underscore form** — `feature:"share"` now finds `CookShare` (via `cook_shares` table and `cook_share` underscore form), not just exact model name substring.
|
|
382
413
|
|
|
383
|
-
## [1.2.0]
|
|
414
|
+
## [1.2.0] — 2026-03-23
|
|
384
415
|
|
|
385
416
|
### Added
|
|
386
417
|
|
|
@@ -394,7 +425,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
394
425
|
- **"UI Patterns" section renamed to "Design System"** — richer content with color palette, typography, components, spacing conventions, interactive states, and design rules.
|
|
395
426
|
- **Design tokens consumed for the first time** — `context[:design_tokens]` data was previously extracted but never rendered. Now merged into design system output in all serializers and the new MCP tool.
|
|
396
427
|
|
|
397
|
-
## [1.1.1]
|
|
428
|
+
## [1.1.1] — 2026-03-23
|
|
398
429
|
|
|
399
430
|
### Added
|
|
400
431
|
|
|
@@ -405,13 +436,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
405
436
|
|
|
406
437
|
- **Tool count corrected from 13 to 14** across all serializers to reflect `rails_analyze_feature` added in v1.0.0.
|
|
407
438
|
|
|
408
|
-
## [1.1.0]
|
|
439
|
+
## [1.1.0] — 2026-03-23
|
|
409
440
|
|
|
410
441
|
### Changed
|
|
411
442
|
|
|
412
443
|
- **Default preset changed to `:full`** — all 28 introspectors now run by default, giving AI assistants richer context out of the box. Introspectors that don't find relevant data return empty hashes with zero overhead. Use `config.preset = :standard` for the previous 13-core default.
|
|
413
444
|
|
|
414
|
-
## [1.0.0]
|
|
445
|
+
## [1.0.0] — 2026-03-23
|
|
415
446
|
|
|
416
447
|
### Added
|
|
417
448
|
|
|
@@ -424,25 +455,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
424
455
|
|
|
425
456
|
- **LLM-optimized tool descriptions (all 14 tools)** — every description now follows "what it does / Use when: / key params" format so AI agents pick the right tool on first try.
|
|
426
457
|
|
|
427
|
-
## [0.15.10]
|
|
458
|
+
## [0.15.10] — 2026-03-23
|
|
428
459
|
|
|
429
460
|
### Changed
|
|
430
461
|
|
|
431
462
|
- **Gemspec description rewritten** — repositioned from feature list to value proposition: mental model, semantic validation, cross-file error detection.
|
|
432
463
|
|
|
433
|
-
## [0.15.9]
|
|
464
|
+
## [0.15.9] — 2026-03-23
|
|
434
465
|
|
|
435
466
|
### Added
|
|
436
467
|
|
|
437
468
|
- **Deep diagnostic checks in `rails ai:doctor`** — upgraded from 13 shallow file-existence checks to 20 deep checks: pending migrations, context file freshness, .mcp.json validation, introspector health (dry-runs each one), preset coverage (detects features not in preset), .env/.master.key gitignore check, auto_mount production warning, schema/view size vs limits.
|
|
438
469
|
|
|
439
|
-
## [0.15.8]
|
|
470
|
+
## [0.15.8] — 2026-03-23
|
|
440
471
|
|
|
441
472
|
### Added
|
|
442
473
|
|
|
443
474
|
- **Semantic validation (`level:"rails"`)** — `rails_validate` now supports `level:"rails"` for deep semantic checks beyond syntax: partial existence, route helper validity, column references vs schema, strong params vs schema columns, callback method existence, route-action consistency, `has_many` dependent options, missing FK indexes, and Stimulus controller file existence.
|
|
444
475
|
|
|
445
|
-
## [0.15.7]
|
|
476
|
+
## [0.15.7] — 2026-03-22
|
|
446
477
|
|
|
447
478
|
### Improved
|
|
448
479
|
|
|
@@ -454,7 +485,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
454
485
|
- **Concern test lookup** — `rails_get_test_info(model:"PlanLimitable")` searches concern test paths.
|
|
455
486
|
- **Controller flexible matching** — underscore-based normalization handles CamelCase, snake_case, and slash notation consistently.
|
|
456
487
|
|
|
457
|
-
## [0.15.6]
|
|
488
|
+
## [0.15.6] — 2026-03-22
|
|
458
489
|
|
|
459
490
|
### Added
|
|
460
491
|
|
|
@@ -470,7 +501,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
470
501
|
- **Concern methods inline** — shows public methods from concern source files (e.g. `PlanLimitable — can_cook?, increment_cook_count!`).
|
|
471
502
|
- **MCP tool error messages** — all tools now show available values on error/not-found for AI self-correction.
|
|
472
503
|
|
|
473
|
-
## [0.15.5]
|
|
504
|
+
## [0.15.5] — 2026-03-22
|
|
474
505
|
|
|
475
506
|
### Fixed
|
|
476
507
|
|
|
@@ -483,7 +514,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
483
514
|
- **Namespace test lookup** — supports `bonus/crises` format and flat test directories.
|
|
484
515
|
- **Empty inputs** — `near:""` in edit_context and `pattern:""` in search return helpful errors.
|
|
485
516
|
|
|
486
|
-
## [0.15.4]
|
|
517
|
+
## [0.15.4] — 2026-03-22
|
|
487
518
|
|
|
488
519
|
### Fixed
|
|
489
520
|
|
|
@@ -500,7 +531,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
500
531
|
|
|
501
532
|
- **Pagination on models, controllers, stimulus** — `limit`/`offset` params (default 50) with "end of results" hints. Prevents token bombs on large apps.
|
|
502
533
|
|
|
503
|
-
## [0.15.3]
|
|
534
|
+
## [0.15.3] — 2026-03-22
|
|
504
535
|
|
|
505
536
|
### Fixed
|
|
506
537
|
|
|
@@ -511,20 +542,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
511
542
|
|
|
512
543
|
- **Documentation** — updated all docs (README, CLAUDE.md, GUIDE.md, SECURITY.md, CHANGELOG, server.json, install generator) to match v0.15.x codebase. Fixed spec counts, file counts, preset counts, config options, and supported versions.
|
|
513
544
|
|
|
514
|
-
## [0.15.2]
|
|
545
|
+
## [0.15.2] — 2026-03-22
|
|
515
546
|
|
|
516
547
|
### Fixed
|
|
517
548
|
|
|
518
549
|
- **Test command detection** — Serializers now use detected test framework (minitest → `rails test`, rspec → `bundle exec rspec`) instead of hardcoding `bundle exec rspec`. Default is `rails test` (the Rails default). Contributed by @curi (PR #13).
|
|
519
550
|
|
|
520
|
-
## [0.15.1]
|
|
551
|
+
## [0.15.1] — 2026-03-22
|
|
521
552
|
|
|
522
553
|
### Fixed
|
|
523
554
|
|
|
524
555
|
- **Copilot serializer** — Show all model associations (not capped at 3), use human-readable architecture/pattern labels.
|
|
525
556
|
- **OpenCode rules serializer** — Filter framework controllers (Devise) from AGENTS.md output, show all associations, match `before_action` with `!`/`?` suffixes.
|
|
526
557
|
|
|
527
|
-
## [0.15.0]
|
|
558
|
+
## [0.15.0] — 2026-03-22
|
|
528
559
|
|
|
529
560
|
### Security
|
|
530
561
|
|
|
@@ -565,7 +596,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
565
596
|
- **Strong params body** — Action detail now shows the actual `permit(...)` call.
|
|
566
597
|
- **AR-generated methods** — Filter `build_*`, `*_ids=`, etc. from model instance methods.
|
|
567
598
|
|
|
568
|
-
## [0.14.0]
|
|
599
|
+
## [0.14.0] — 2026-03-20
|
|
569
600
|
|
|
570
601
|
### Fixed
|
|
571
602
|
|
|
@@ -583,7 +614,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
583
614
|
- **Stimulus dash/underscore normalization** — Both `weekly-chart` and `weekly_chart` work for controller lookup. Output shows HTML `data-controller` attribute.
|
|
584
615
|
- **Model public method signatures** — `rails_get_model_details(model: "Cook")` shows method names with params from source, stopping at private boundary.
|
|
585
616
|
|
|
586
|
-
## [0.13.1]
|
|
617
|
+
## [0.13.1] — 2026-03-20
|
|
587
618
|
|
|
588
619
|
### Changed
|
|
589
620
|
|
|
@@ -591,7 +622,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
591
622
|
- **Model details** — shows method signatures (name + parameters) instead of just method names.
|
|
592
623
|
- Removed unused demo files; fixed GUIDE.md preset tables.
|
|
593
624
|
|
|
594
|
-
## [0.13.0]
|
|
625
|
+
## [0.13.0] — 2026-03-20
|
|
595
626
|
|
|
596
627
|
### Added
|
|
597
628
|
|
|
@@ -612,7 +643,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
612
643
|
- ERB validation was broken due to shell quoting bug (backticks + nested quotes). Replaced with `Open3.capture2e("ruby", "-e", script, ARGV[0])`.
|
|
613
644
|
- Rubocop offenses in validate.rb (18 spacing issues auto-corrected).
|
|
614
645
|
|
|
615
|
-
## [0.12.0]
|
|
646
|
+
## [0.12.0] — 2026-03-20
|
|
616
647
|
|
|
617
648
|
### Added
|
|
618
649
|
|
|
@@ -645,7 +676,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
645
676
|
- Progress bars misclassified as badges.
|
|
646
677
|
- Input detection picking up alert divs instead of actual inputs.
|
|
647
678
|
|
|
648
|
-
## [0.11.0]
|
|
679
|
+
## [0.11.0] — 2026-03-20
|
|
649
680
|
|
|
650
681
|
### Added
|
|
651
682
|
|
|
@@ -653,20 +684,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
653
684
|
- **View partial structure** — `rails_get_view(detail: "standard")` shows model fields and helper methods used by each partial.
|
|
654
685
|
- **Schema column names** — `.claude/rules/rails-schema.md` shows key column names with types, foreign keys, indexes, and enum values. Keeps polymorphic `_type`, STI `type`, and soft-delete `deleted_at` columns.
|
|
655
686
|
|
|
656
|
-
## [0.10.2]
|
|
687
|
+
## [0.10.2] — 2026-03-20
|
|
657
688
|
|
|
658
689
|
### Security
|
|
659
690
|
|
|
660
691
|
- **ReDoS protection** — added regex timeout and converted greedy quantifiers to non-greedy across all pattern matching.
|
|
661
692
|
- **File size limits** — added size caps on parsed files to prevent memory exhaustion from oversized inputs.
|
|
662
693
|
|
|
663
|
-
## [0.10.1]
|
|
694
|
+
## [0.10.1] — 2026-03-19
|
|
664
695
|
|
|
665
696
|
### Changed
|
|
666
697
|
|
|
667
698
|
- Patch release for RubyGems republish (no code changes).
|
|
668
699
|
|
|
669
|
-
## [0.10.0]
|
|
700
|
+
## [0.10.0] — 2026-03-19
|
|
670
701
|
|
|
671
702
|
### Added
|
|
672
703
|
|
|
@@ -677,7 +708,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
677
708
|
- **ViewTemplateIntrospector** — new introspector that reads view file contents and extracts partial references and Stimulus data attributes.
|
|
678
709
|
- **Stimulus and view_templates in standard preset** — both introspectors now in `:standard` preset (11 introspectors, was 10).
|
|
679
710
|
|
|
680
|
-
## [0.9.0]
|
|
711
|
+
## [0.9.0] — 2026-03-19
|
|
681
712
|
|
|
682
713
|
### Added
|
|
683
714
|
|
|
@@ -690,7 +721,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
690
721
|
- **Removed `.cursorrules` root file** — Cursor officially deprecated `.cursorrules` in favor of `.cursor/rules/`. The `:cursor` format now generates only `.cursor/rules/*.mdc` split rules. The `rails-project.mdc` split rule (with `alwaysApply: true`) already provides the project overview.
|
|
691
722
|
- **License changed from AGPL-3.0 to MIT** — removes the copyleft blocker for SaaS and commercial projects.
|
|
692
723
|
|
|
693
|
-
## [0.8.5]
|
|
724
|
+
## [0.8.5] — 2026-03-19
|
|
694
725
|
|
|
695
726
|
### Fixed
|
|
696
727
|
|
|
@@ -703,27 +734,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
703
734
|
|
|
704
735
|
- **Standalone CLI documented** — the `rails-ai-context` executable (serve, context, inspect, watch, doctor, version) is now documented in README, GUIDE, and CLAUDE.md.
|
|
705
736
|
|
|
706
|
-
## [0.8.4]
|
|
737
|
+
## [0.8.4] — 2026-03-19
|
|
707
738
|
|
|
708
739
|
### Added
|
|
709
740
|
|
|
710
741
|
- **`structure.sql` support** — the schema introspector now parses `db/structure.sql` when no `db/schema.rb` exists and no database connection is available. Extracts tables, columns (with SQL type normalization), indexes, and foreign keys from PostgreSQL dump format. Prefers `schema.rb` when both exist.
|
|
711
742
|
- **Fingerprinter watches `db/structure.sql`** — file changes to `structure.sql` now trigger cache invalidation and live reload.
|
|
712
743
|
|
|
713
|
-
## [0.8.3]
|
|
744
|
+
## [0.8.3] — 2026-03-19
|
|
714
745
|
|
|
715
746
|
### Changed
|
|
716
747
|
|
|
717
748
|
- **License published to RubyGems** — v0.8.2 changed the license from MIT to AGPL-3.0 but the gem was not republished. This release ensures the AGPL-3.0 license is reflected on RubyGems.
|
|
718
749
|
|
|
719
|
-
## [0.8.2]
|
|
750
|
+
## [0.8.2] — 2026-03-19
|
|
720
751
|
|
|
721
752
|
### Changed
|
|
722
753
|
|
|
723
754
|
- **License** — changed from MIT to AGPL-3.0 to protect against unauthorized clones and ensure derivative works remain open source.
|
|
724
755
|
- **CI: auto-publish to MCP Registry** — the release workflow now automatically publishes to the MCP Registry via `mcp-publisher` with GitHub OIDC auth. No manual `mcp-publisher login` + `publish` needed.
|
|
725
756
|
|
|
726
|
-
## [0.8.1]
|
|
757
|
+
## [0.8.1] — 2026-03-19
|
|
727
758
|
|
|
728
759
|
### Added
|
|
729
760
|
|
|
@@ -734,14 +765,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
734
765
|
- **Live reload LoadError in HTTP mode** — when `live_reload = true` and the `listen` gem was missing, the `start_http` method's rescue block (for rackup fallback) swallowed the live reload error, producing a confusing rack error instead of the correct "listen gem required" message. The rescue is now scoped to the rackup require only.
|
|
735
766
|
- **Dangling @live_reload reference** — `@live_reload` was assigned before `start` was called. If `start` raised LoadError, the instance variable pointed to a non-functional object. Now only assigned after successful start.
|
|
736
767
|
|
|
737
|
-
## [0.8.0]
|
|
768
|
+
## [0.8.0] — 2026-03-19
|
|
738
769
|
|
|
739
770
|
### Added
|
|
740
771
|
|
|
741
772
|
- **MCP Live Reload** — when running `rails ai:serve`, file changes automatically invalidate tool caches and send MCP notifications (`notifications/resources/list_changed`) to connected AI clients. The AI's context stays fresh without manual re-querying. Requires the `listen` gem (enabled by default when available). Configurable via `config.live_reload` (`:auto`, `true`, `false`) and `config.live_reload_debounce` (default: 1.5s).
|
|
742
773
|
- **Live reload doctor check** — `rails ai:doctor` now warns when the `listen` gem is not installed.
|
|
743
774
|
|
|
744
|
-
## [0.7.1]
|
|
775
|
+
## [0.7.1] — 2026-03-19
|
|
745
776
|
|
|
746
777
|
### Added
|
|
747
778
|
|
|
@@ -753,7 +784,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
753
784
|
- **Schema version parsing** — versions with underscores (e.g. `2024_01_15_123456`) were truncated to the first digit group. Now captures the full version string.
|
|
754
785
|
- **Documentation** — updated README (detail levels, pagination, generated file tree, config options), SECURITY.md (supported versions), CONTRIBUTING.md (project structure), gemspec (post-install message), demo_script.sh (all 17 generated files).
|
|
755
786
|
|
|
756
|
-
## [0.7.0]
|
|
787
|
+
## [0.7.0] — 2026-03-19
|
|
757
788
|
|
|
758
789
|
### Added
|
|
759
790
|
|
|
@@ -776,7 +807,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
776
807
|
- All tools return pagination hints when results are truncated.
|
|
777
808
|
- `.windsurfrules` now uses dedicated `WindsurfSerializer` instead of sharing `RulesSerializer` with Cursor.
|
|
778
809
|
|
|
779
|
-
## [0.6.0]
|
|
810
|
+
## [0.6.0] — 2026-03-18
|
|
780
811
|
|
|
781
812
|
### Added
|
|
782
813
|
|
|
@@ -797,7 +828,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
797
828
|
- Doctor checks expanded from 11 to 12
|
|
798
829
|
- Static MCP resources expanded from 7 to 9
|
|
799
830
|
|
|
800
|
-
## [0.5.2]
|
|
831
|
+
## [0.5.2] — 2026-03-18
|
|
801
832
|
|
|
802
833
|
### Fixed
|
|
803
834
|
|
|
@@ -805,14 +836,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
805
836
|
- **Zeitwerk dependency** — Changed from open-ended `>= 2.6` to pessimistic `~> 2.6` per RubyGems best practices
|
|
806
837
|
- **Documentation** — Updated CONTRIBUTING.md, CHANGELOG.md, and CLAUDE.md to reflect Zeitwerk autoloading, introspector presets, and `.mcp.json` auto-discovery changes
|
|
807
838
|
|
|
808
|
-
## [0.5.1]
|
|
839
|
+
## [0.5.1] — 2026-03-18
|
|
809
840
|
|
|
810
841
|
### Fixed
|
|
811
842
|
|
|
812
843
|
- Documentation updates and animated demo GIF added to README.
|
|
813
844
|
- Zeitwerk autoloading fixes for edge cases.
|
|
814
845
|
|
|
815
|
-
## [0.5.0]
|
|
846
|
+
## [0.5.0] — 2026-03-18
|
|
816
847
|
|
|
817
848
|
### Added
|
|
818
849
|
|
|
@@ -833,7 +864,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
833
864
|
- Default introspectors reduced from 21 to 8 (`:standard` preset) for faster boot; use `config.preset = :full` for all 21
|
|
834
865
|
- New files auto-loaded by Zeitwerk — no manual `require_relative` needed when adding introspectors or tools
|
|
835
866
|
|
|
836
|
-
## [0.4.0]
|
|
867
|
+
## [0.4.0] — 2026-03-18
|
|
837
868
|
|
|
838
869
|
### Added
|
|
839
870
|
|
|
@@ -870,7 +901,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
870
901
|
- Doctor checks expanded from 7 to 11
|
|
871
902
|
- Test suite expanded from 149 to 247 examples with exact value assertions
|
|
872
903
|
|
|
873
|
-
## [0.3.0]
|
|
904
|
+
## [0.3.0] — 2026-03-18
|
|
874
905
|
|
|
875
906
|
### Added
|
|
876
907
|
|
|
@@ -895,7 +926,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
895
926
|
- `generate_context` now returns `{ written: [], skipped: [] }` instead of flat array
|
|
896
927
|
- Default introspectors now include `:stimulus`
|
|
897
928
|
|
|
898
|
-
## [0.2.0]
|
|
929
|
+
## [0.2.0] — 2026-03-18
|
|
899
930
|
|
|
900
931
|
### Added
|
|
901
932
|
|
|
@@ -909,7 +940,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
909
940
|
- `rails ai:context_for[claude]` failing in zsh due to bracket glob interpretation
|
|
910
941
|
- Double introspection in `ai:context` and `ai:context_for` tasks (removed unused `RailsAiContext.introspect` calls)
|
|
911
942
|
|
|
912
|
-
## [0.1.0]
|
|
943
|
+
## [0.1.0] — 2026-03-18
|
|
913
944
|
|
|
914
945
|
### Added
|
|
915
946
|
|
data/CLAUDE.md
CHANGED
|
@@ -34,7 +34,7 @@ structure to AI assistants via the Model Context Protocol (MCP).
|
|
|
34
34
|
7. **Diff-aware** — context regeneration skips unchanged files
|
|
35
35
|
8. **Per-assistant serializers** — each AI tool gets tailored output format
|
|
36
36
|
9. **Zeitwerk autoloading** — files loaded on-demand, not all upfront
|
|
37
|
-
10. **Introspector presets** — `:full` (
|
|
37
|
+
10. **Introspector presets** — `:full` (33) default, `:standard` (19) for lightweight usage
|
|
38
38
|
11. **MCP auto-discovery** — `.mcp.json` generated by install generator
|
|
39
39
|
12. **Compact by default** — context files ≤150 lines, MCP tools use `detail` parameter (summary/standard/full)
|
|
40
40
|
13. **Per-tool split rules** — `.claude/rules/`, `.cursor/rules/`, `.github/instructions/`
|
|
@@ -60,7 +60,7 @@ structure to AI assistants via the Model Context Protocol (MCP).
|
|
|
60
60
|
## Testing
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
|
-
bundle exec rspec # Run specs (
|
|
63
|
+
bundle exec rspec # Run specs (1529 examples)
|
|
64
64
|
bundle exec rubocop # Lint
|
|
65
65
|
```
|
|
66
66
|
|