reviewkit 0.1.0

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.
Files changed (85) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +23 -0
  3. data/CODE_OF_CONDUCT.md +123 -0
  4. data/CONTRIBUTING.md +44 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.md +335 -0
  7. data/Rakefile +7 -0
  8. data/SECURITY.md +18 -0
  9. data/app/assets/builds/reviewkit/application.css +2 -0
  10. data/app/assets/javascripts/reviewkit/application.js +12 -0
  11. data/app/assets/javascripts/reviewkit/controllers/file_nav_controller.js +24 -0
  12. data/app/assets/javascripts/reviewkit/controllers/review_index_controller.js +84 -0
  13. data/app/assets/tailwind/reviewkit/application.css +865 -0
  14. data/app/controllers/reviewkit/application_controller.rb +80 -0
  15. data/app/controllers/reviewkit/comments_controller.rb +147 -0
  16. data/app/controllers/reviewkit/review_threads_controller.rb +277 -0
  17. data/app/controllers/reviewkit/reviews_controller.rb +142 -0
  18. data/app/helpers/reviewkit/application_helper.rb +12 -0
  19. data/app/helpers/reviewkit/asset_helper.rb +39 -0
  20. data/app/helpers/reviewkit/diff_helper.rb +230 -0
  21. data/app/helpers/reviewkit/flash_helper.rb +36 -0
  22. data/app/helpers/reviewkit/frame_helper.rb +37 -0
  23. data/app/helpers/reviewkit/icon_helper.rb +107 -0
  24. data/app/helpers/reviewkit/review_thread_helper.rb +54 -0
  25. data/app/models/concerns/reviewkit/notifies_lifecycle_events.rb +39 -0
  26. data/app/models/reviewkit/application_record.rb +7 -0
  27. data/app/models/reviewkit/comment.rb +29 -0
  28. data/app/models/reviewkit/current.rb +7 -0
  29. data/app/models/reviewkit/document.rb +79 -0
  30. data/app/models/reviewkit/review.rb +66 -0
  31. data/app/models/reviewkit/review_thread.rb +75 -0
  32. data/app/services/reviewkit/diffs/intraline_budget.rb +40 -0
  33. data/app/services/reviewkit/diffs/intraline_diff.rb +220 -0
  34. data/app/services/reviewkit/diffs/split_diff.rb +112 -0
  35. data/app/services/reviewkit/reviews/create.rb +57 -0
  36. data/app/views/layouts/reviewkit/application.html.erb +15 -0
  37. data/app/views/reviewkit/comments/_comment.html.erb +53 -0
  38. data/app/views/reviewkit/comments/_edit_form.html.erb +26 -0
  39. data/app/views/reviewkit/comments/_form.html.erb +16 -0
  40. data/app/views/reviewkit/review_threads/_bucket.html.erb +53 -0
  41. data/app/views/reviewkit/review_threads/_bucket_frame.html.erb +13 -0
  42. data/app/views/reviewkit/review_threads/_bucket_row.html.erb +55 -0
  43. data/app/views/reviewkit/review_threads/_edit_form.html.erb +29 -0
  44. data/app/views/reviewkit/review_threads/_thread.html.erb +87 -0
  45. data/app/views/reviewkit/reviews/_document.html.erb +41 -0
  46. data/app/views/reviewkit/reviews/_document_split.html.erb +73 -0
  47. data/app/views/reviewkit/reviews/_document_unified.html.erb +57 -0
  48. data/app/views/reviewkit/reviews/_edit_form.html.erb +35 -0
  49. data/app/views/reviewkit/reviews/_index_content.html.erb +160 -0
  50. data/app/views/reviewkit/reviews/_review_sidebar.html.erb +70 -0
  51. data/app/views/reviewkit/reviews/_show_content.html.erb +164 -0
  52. data/app/views/reviewkit/reviews/index.html.erb +11 -0
  53. data/app/views/reviewkit/reviews/show.html.erb +11 -0
  54. data/app/views/reviewkit/shared/_flash.html.erb +10 -0
  55. data/bin/console +4 -0
  56. data/bin/lint +4 -0
  57. data/bin/rails +14 -0
  58. data/bin/setup +9 -0
  59. data/bin/test +4 -0
  60. data/config/importmap.rb +6 -0
  61. data/config/routes.rb +24 -0
  62. data/db/migrate/20260331181500_create_reviewkit_reviews.rb +19 -0
  63. data/db/migrate/20260331181600_create_reviewkit_documents.rb +23 -0
  64. data/db/migrate/20260331181700_create_reviewkit_review_threads.rb +23 -0
  65. data/db/migrate/20260331181800_create_reviewkit_comments.rb +15 -0
  66. data/db/migrate/20260401093000_add_description_to_reviewkit_reviews.rb +7 -0
  67. data/lib/generators/reviewkit/controllers/controllers_generator.rb +24 -0
  68. data/lib/generators/reviewkit/controllers/templates/comments_controller_extension.rb +13 -0
  69. data/lib/generators/reviewkit/controllers/templates/review_threads_controller_extension.rb +13 -0
  70. data/lib/generators/reviewkit/controllers/templates/reviews_controller_extension.rb +19 -0
  71. data/lib/generators/reviewkit/install/install_generator.rb +52 -0
  72. data/lib/generators/reviewkit/install/templates/importmap.rb +3 -0
  73. data/lib/generators/reviewkit/install/templates/reviewkit.rb +19 -0
  74. data/lib/generators/reviewkit/models/models_generator.rb +24 -0
  75. data/lib/generators/reviewkit/models/templates/comment_extension.rb +21 -0
  76. data/lib/generators/reviewkit/models/templates/review_extension.rb +22 -0
  77. data/lib/generators/reviewkit/models/templates/review_thread_extension.rb +21 -0
  78. data/lib/generators/reviewkit/views/views_generator.rb +15 -0
  79. data/lib/reviewkit/configuration.rb +33 -0
  80. data/lib/reviewkit/engine.rb +67 -0
  81. data/lib/reviewkit/version.rb +5 -0
  82. data/lib/reviewkit.rb +26 -0
  83. data/lib/tasks/reviewkit_tasks.rake +12 -0
  84. data/sig/reviewkit.rbs +129 -0
  85. metadata +238 -0
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Reviewkit
4
+ class Configuration
5
+ DEFAULT_LAYOUT = "reviewkit/application"
6
+
7
+ class IntralineLimits
8
+ attr_accessor :enabled,
9
+ :max_review_files,
10
+ :max_changed_lines,
11
+ :max_line_length
12
+
13
+ def initialize
14
+ @enabled = true
15
+ @max_review_files = 50
16
+ @max_changed_lines = 50
17
+ @max_line_length = 500
18
+ end
19
+ end
20
+
21
+ attr_accessor :authorize_action,
22
+ :current_actor,
23
+ :intraline_limits,
24
+ :layout
25
+
26
+ def initialize
27
+ @authorize_action = ->(_controller, _action, _record = nil, **_context) { true }
28
+ @current_actor = ->(controller) { controller.respond_to?(:current_user, true) ? controller.send(:current_user) : nil }
29
+ @intraline_limits = IntralineLimits.new
30
+ @layout = DEFAULT_LAYOUT
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Reviewkit
4
+ class Engine < ::Rails::Engine
5
+ isolate_namespace Reviewkit
6
+
7
+ class << self
8
+ def include_host_extension(base_class, extension_name)
9
+ extension = extension_name.safe_constantize
10
+ return unless extension
11
+ return if base_class < extension
12
+
13
+ base_class.include(extension)
14
+ end
15
+
16
+ def prepend_host_extension(base_class, extension_name)
17
+ extension = extension_name.safe_constantize
18
+ return unless extension
19
+ return if base_class < extension
20
+
21
+ base_class.prepend(extension)
22
+ end
23
+ end
24
+
25
+ initializer "reviewkit.importmap", before: "importmap" do |app|
26
+ next unless app.config.respond_to?(:importmap)
27
+
28
+ app.config.importmap.paths << root.join("config/importmap.rb")
29
+ app.config.importmap.cache_sweepers << root.join("app/assets/javascripts")
30
+ end
31
+
32
+ config.generators do |g|
33
+ g.test_framework :rspec
34
+ g.fixture_replacement :factory_bot, dir: "spec/factories"
35
+ end
36
+
37
+ initializer "reviewkit.assets" do |app|
38
+ app.config.assets.paths << root.join("app/assets/builds")
39
+ app.config.assets.precompile += %w[
40
+ reviewkit/application.css
41
+ reviewkit/application.js
42
+ ] if app.config.respond_to?(:assets)
43
+ end
44
+
45
+ initializer "reviewkit.turbo_stream" do
46
+ Mime::Type.register "text/vnd.turbo-stream.html", :turbo_stream unless Mime[:turbo_stream]
47
+ end
48
+
49
+ initializer "reviewkit.helpers" do
50
+ ActiveSupport.on_load(:action_controller_base) do
51
+ helper Reviewkit::ApplicationHelper
52
+ end
53
+ end
54
+
55
+ initializer "reviewkit.host_extensions" do
56
+ ActiveSupport::Reloader.to_prepare do
57
+ Engine.include_host_extension(Reviewkit::Review, "Reviewkit::ReviewExtension")
58
+ Engine.include_host_extension(Reviewkit::ReviewThread, "Reviewkit::ReviewThreadExtension")
59
+ Engine.include_host_extension(Reviewkit::Comment, "Reviewkit::CommentExtension")
60
+
61
+ Engine.prepend_host_extension(Reviewkit::ReviewsController, "Reviewkit::ReviewsControllerExtension")
62
+ Engine.prepend_host_extension(Reviewkit::ReviewThreadsController, "Reviewkit::ReviewThreadsControllerExtension")
63
+ Engine.prepend_host_extension(Reviewkit::CommentsController, "Reviewkit::CommentsControllerExtension")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Reviewkit
4
+ VERSION = "0.1.0"
5
+ end
data/lib/reviewkit.rb ADDED
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "importmap-rails"
4
+ require "turbo-rails"
5
+ require "reviewkit/version"
6
+ require "reviewkit/configuration"
7
+ require "reviewkit/engine"
8
+
9
+ module Reviewkit
10
+ class Error < StandardError; end
11
+ class AuthorizationError < Error; end
12
+
13
+ class << self
14
+ def config
15
+ @config ||= Configuration.new
16
+ end
17
+
18
+ def configure
19
+ yield(config)
20
+ end
21
+
22
+ def reset_configuration!
23
+ @config = Configuration.new
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,12 @@
1
+ tailwind_input = "app/assets/tailwind/reviewkit/application.css"
2
+ tailwind_output = "app/assets/builds/reviewkit/application.css"
3
+
4
+ namespace :reviewkit do
5
+ desc "Build the engine's shipped TailwindCSS asset"
6
+ task :build_css do
7
+ sh "bundle exec tailwindcss -i #{tailwind_input} -o #{tailwind_output} --minify"
8
+ end
9
+
10
+ desc "Build the engine's shipped frontend assets"
11
+ task build_assets: :build_css
12
+ end
data/sig/reviewkit.rbs ADDED
@@ -0,0 +1,129 @@
1
+ module Reviewkit
2
+ VERSION: ::String
3
+
4
+ class Error < ::StandardError
5
+ end
6
+
7
+ class AuthorizationError < Error
8
+ end
9
+
10
+ type metadata = ::Hash[::String | ::Symbol, untyped]
11
+ type attributes = ::Hash[::String | ::Symbol, untyped]
12
+ type diff_row = ::Hash[::String, untyped]
13
+ type review_status = "draft" | "open" | "approved" | "rejected" | "closed"
14
+ type document_status = "added" | "removed" | "modified" | "unchanged"
15
+ type thread_status = "open" | "resolved" | "outdated"
16
+
17
+ def self.config: () -> Configuration
18
+ def self.configure: () { (Configuration config) -> untyped } -> void
19
+ def self.reset_configuration!: () -> Configuration
20
+
21
+ class Configuration
22
+ DEFAULT_LAYOUT: ::String
23
+
24
+ attr_accessor authorize_action: untyped
25
+ attr_accessor current_actor: untyped
26
+ attr_accessor intraline_limits: IntralineLimits
27
+ attr_accessor layout: ::String
28
+
29
+ def initialize: () -> void
30
+
31
+ class IntralineLimits
32
+ attr_accessor enabled: bool
33
+ attr_accessor max_review_files: ::Integer?
34
+ attr_accessor max_changed_lines: ::Integer?
35
+ attr_accessor max_line_length: ::Integer?
36
+
37
+ def initialize: () -> void
38
+ end
39
+ end
40
+
41
+ class Current
42
+ def self.actor: () -> untyped
43
+ def self.controller: () -> untyped
44
+ def self.source: () -> untyped
45
+ def self.set: (?actor: untyped, ?controller: untyped, ?source: untyped) { () -> untyped } -> untyped
46
+ end
47
+
48
+ class Review
49
+ attr_accessor title: ::String
50
+ attr_accessor description: ::String?
51
+ attr_accessor external_reference: ::String?
52
+ attr_accessor metadata: metadata?
53
+ attr_accessor status: review_status
54
+ attr_accessor creator: untyped
55
+ attr_accessor reviewable: untyped
56
+
57
+ def open_threads_count: () -> ::Integer
58
+ def resolved_threads_count: () -> ::Integer
59
+ def approve!: () -> bool
60
+ def reject!: () -> bool
61
+ def close!: () -> bool
62
+ end
63
+
64
+ class Document
65
+ attr_accessor intraline_review_document_count: ::Integer?
66
+ attr_accessor path: ::String
67
+ attr_accessor language: ::String
68
+ attr_accessor old_content: ::String?
69
+ attr_accessor new_content: ::String?
70
+ attr_accessor metadata: metadata?
71
+ attr_accessor position: ::Integer
72
+ attr_accessor status: document_status
73
+ attr_accessor diff_cache: ::Hash[::String, untyped]
74
+
75
+ def additions_count: () -> ::Integer
76
+ def deletions_count: () -> ::Integer
77
+ def diff_rows: () -> ::Array[diff_row]
78
+ end
79
+
80
+ class ReviewThread
81
+ attr_accessor line_code: ::String
82
+ attr_accessor side: "old" | "new"
83
+ attr_accessor old_line: ::Integer?
84
+ attr_accessor new_line: ::Integer?
85
+ attr_accessor metadata: metadata?
86
+ attr_accessor status: thread_status
87
+ attr_accessor resolved_by: untyped
88
+
89
+ def resolve!: () -> bool
90
+ def reopen!: () -> bool
91
+ def mark_outdated!: () -> bool
92
+ end
93
+
94
+ class Comment
95
+ attr_accessor body: ::String
96
+ attr_accessor metadata: metadata?
97
+ attr_accessor author: untyped
98
+ end
99
+
100
+ module Reviews
101
+ class Create
102
+ def self.call: (
103
+ title: ::String,
104
+ ?description: ::String?,
105
+ ?creator: untyped,
106
+ ?reviewable: untyped,
107
+ ?external_reference: ::String?,
108
+ ?metadata: metadata,
109
+ ?review_attributes: attributes,
110
+ ?status: review_status,
111
+ ?documents: ::Array[attributes]
112
+ ) -> Review
113
+
114
+ def initialize: (
115
+ title: ::String,
116
+ ?description: ::String?,
117
+ ?creator: untyped,
118
+ ?reviewable: untyped,
119
+ ?external_reference: ::String?,
120
+ ?metadata: metadata,
121
+ ?review_attributes: attributes,
122
+ ?status: review_status,
123
+ ?documents: ::Array[attributes]
124
+ ) -> void
125
+
126
+ def call: () -> Review
127
+ end
128
+ end
129
+ end
metadata ADDED
@@ -0,0 +1,238 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reviewkit
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Dhairya Gabhawala
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: diff-lcs
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.6'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '1.6'
26
+ - !ruby/object:Gem::Dependency
27
+ name: importmap-rails
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '2.0'
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '3.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '2.0'
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rails
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 8.1.2
53
+ - - "<"
54
+ - !ruby/object:Gem::Version
55
+ version: '8.2'
56
+ type: :runtime
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 8.1.2
63
+ - - "<"
64
+ - !ruby/object:Gem::Version
65
+ version: '8.2'
66
+ - !ruby/object:Gem::Dependency
67
+ name: rouge
68
+ requirement: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - "~>"
71
+ - !ruby/object:Gem::Version
72
+ version: '4.5'
73
+ type: :runtime
74
+ prerelease: false
75
+ version_requirements: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - "~>"
78
+ - !ruby/object:Gem::Version
79
+ version: '4.5'
80
+ - !ruby/object:Gem::Dependency
81
+ name: stimulus-rails
82
+ requirement: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '1.3'
87
+ - - "<"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '1.3'
97
+ - - "<"
98
+ - !ruby/object:Gem::Version
99
+ version: '2.0'
100
+ - !ruby/object:Gem::Dependency
101
+ name: turbo-rails
102
+ requirement: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '2.0'
107
+ - - "<"
108
+ - !ruby/object:Gem::Version
109
+ version: '3.0'
110
+ type: :runtime
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '2.0'
117
+ - - "<"
118
+ - !ruby/object:Gem::Version
119
+ version: '3.0'
120
+ description: Reviewkit is a mountable Rails engine for rendering Git-like code diffs,
121
+ persisting threaded line comments, and embedding review workflows into host apps.
122
+ email:
123
+ - gabhawaladhairya@gmail.com
124
+ executables: []
125
+ extensions: []
126
+ extra_rdoc_files: []
127
+ files:
128
+ - CHANGELOG.md
129
+ - CODE_OF_CONDUCT.md
130
+ - CONTRIBUTING.md
131
+ - MIT-LICENSE
132
+ - README.md
133
+ - Rakefile
134
+ - SECURITY.md
135
+ - app/assets/builds/reviewkit/application.css
136
+ - app/assets/javascripts/reviewkit/application.js
137
+ - app/assets/javascripts/reviewkit/controllers/file_nav_controller.js
138
+ - app/assets/javascripts/reviewkit/controllers/review_index_controller.js
139
+ - app/assets/tailwind/reviewkit/application.css
140
+ - app/controllers/reviewkit/application_controller.rb
141
+ - app/controllers/reviewkit/comments_controller.rb
142
+ - app/controllers/reviewkit/review_threads_controller.rb
143
+ - app/controllers/reviewkit/reviews_controller.rb
144
+ - app/helpers/reviewkit/application_helper.rb
145
+ - app/helpers/reviewkit/asset_helper.rb
146
+ - app/helpers/reviewkit/diff_helper.rb
147
+ - app/helpers/reviewkit/flash_helper.rb
148
+ - app/helpers/reviewkit/frame_helper.rb
149
+ - app/helpers/reviewkit/icon_helper.rb
150
+ - app/helpers/reviewkit/review_thread_helper.rb
151
+ - app/models/concerns/reviewkit/notifies_lifecycle_events.rb
152
+ - app/models/reviewkit/application_record.rb
153
+ - app/models/reviewkit/comment.rb
154
+ - app/models/reviewkit/current.rb
155
+ - app/models/reviewkit/document.rb
156
+ - app/models/reviewkit/review.rb
157
+ - app/models/reviewkit/review_thread.rb
158
+ - app/services/reviewkit/diffs/intraline_budget.rb
159
+ - app/services/reviewkit/diffs/intraline_diff.rb
160
+ - app/services/reviewkit/diffs/split_diff.rb
161
+ - app/services/reviewkit/reviews/create.rb
162
+ - app/views/layouts/reviewkit/application.html.erb
163
+ - app/views/reviewkit/comments/_comment.html.erb
164
+ - app/views/reviewkit/comments/_edit_form.html.erb
165
+ - app/views/reviewkit/comments/_form.html.erb
166
+ - app/views/reviewkit/review_threads/_bucket.html.erb
167
+ - app/views/reviewkit/review_threads/_bucket_frame.html.erb
168
+ - app/views/reviewkit/review_threads/_bucket_row.html.erb
169
+ - app/views/reviewkit/review_threads/_edit_form.html.erb
170
+ - app/views/reviewkit/review_threads/_thread.html.erb
171
+ - app/views/reviewkit/reviews/_document.html.erb
172
+ - app/views/reviewkit/reviews/_document_split.html.erb
173
+ - app/views/reviewkit/reviews/_document_unified.html.erb
174
+ - app/views/reviewkit/reviews/_edit_form.html.erb
175
+ - app/views/reviewkit/reviews/_index_content.html.erb
176
+ - app/views/reviewkit/reviews/_review_sidebar.html.erb
177
+ - app/views/reviewkit/reviews/_show_content.html.erb
178
+ - app/views/reviewkit/reviews/index.html.erb
179
+ - app/views/reviewkit/reviews/show.html.erb
180
+ - app/views/reviewkit/shared/_flash.html.erb
181
+ - bin/console
182
+ - bin/lint
183
+ - bin/rails
184
+ - bin/setup
185
+ - bin/test
186
+ - config/importmap.rb
187
+ - config/routes.rb
188
+ - db/migrate/20260331181500_create_reviewkit_reviews.rb
189
+ - db/migrate/20260331181600_create_reviewkit_documents.rb
190
+ - db/migrate/20260331181700_create_reviewkit_review_threads.rb
191
+ - db/migrate/20260331181800_create_reviewkit_comments.rb
192
+ - db/migrate/20260401093000_add_description_to_reviewkit_reviews.rb
193
+ - lib/generators/reviewkit/controllers/controllers_generator.rb
194
+ - lib/generators/reviewkit/controllers/templates/comments_controller_extension.rb
195
+ - lib/generators/reviewkit/controllers/templates/review_threads_controller_extension.rb
196
+ - lib/generators/reviewkit/controllers/templates/reviews_controller_extension.rb
197
+ - lib/generators/reviewkit/install/install_generator.rb
198
+ - lib/generators/reviewkit/install/templates/importmap.rb
199
+ - lib/generators/reviewkit/install/templates/reviewkit.rb
200
+ - lib/generators/reviewkit/models/models_generator.rb
201
+ - lib/generators/reviewkit/models/templates/comment_extension.rb
202
+ - lib/generators/reviewkit/models/templates/review_extension.rb
203
+ - lib/generators/reviewkit/models/templates/review_thread_extension.rb
204
+ - lib/generators/reviewkit/views/views_generator.rb
205
+ - lib/reviewkit.rb
206
+ - lib/reviewkit/configuration.rb
207
+ - lib/reviewkit/engine.rb
208
+ - lib/reviewkit/version.rb
209
+ - lib/tasks/reviewkit_tasks.rake
210
+ - sig/reviewkit.rbs
211
+ homepage: https://reviewkit.dhairyagabhawala.com
212
+ licenses:
213
+ - MIT
214
+ metadata:
215
+ homepage_uri: https://reviewkit.dhairyagabhawala.com
216
+ source_code_uri: https://github.com/dhairyagabha/reviewkit
217
+ bug_tracker_uri: https://github.com/dhairyagabha/reviewkit/issues
218
+ changelog_uri: https://github.com/dhairyagabha/reviewkit/blob/main/CHANGELOG.md
219
+ documentation_uri: https://reviewkit.dhairyagabhawala.com/docs/installation
220
+ rdoc_options: []
221
+ require_paths:
222
+ - lib
223
+ required_ruby_version: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: 3.2.0
228
+ required_rubygems_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '0'
233
+ requirements: []
234
+ rubygems_version: 4.0.6
235
+ specification_version: 4
236
+ summary: Git-style code review Rails engine with diff rendering and threaded line
237
+ comments.
238
+ test_files: []