bullet_train 1.2.9 → 1.2.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/controllers/account/two_factors_controller.rb +21 -5
- data/app/controllers/turbo_devise_controller.rb +1 -1
- data/app/helpers/account/forms_helper.rb +3 -1
- data/app/helpers/attributes_helper.rb +2 -2
- data/app/javascript/controllers/clipboard_controller.js +1 -1
- data/app/javascript/controllers/connection_workflow_controller.js +7 -0
- data/app/javascript/controllers/desktop_menu_controller.js +26 -0
- data/app/javascript/controllers/index.js +4 -0
- data/app/javascript/index.js +2 -1
- data/app/javascript/support/turn.js +183 -0
- data/app/models/billing/mock_limiter.rb +5 -1
- data/app/models/concerns/records/base.rb +8 -9
- data/app/models/concerns/users/base.rb +2 -2
- data/app/views/account/invitations/_form.html.erb +2 -2
- data/app/views/account/memberships/_form.html.erb +2 -2
- data/app/views/account/memberships/_membership.html.erb +1 -1
- data/app/views/account/teams/_breadcrumbs.html.erb +12 -5
- data/app/views/account/teams/_team.html.erb +4 -4
- data/app/views/account/two_factors/verify.js.erb +1 -0
- data/app/views/devise/passwords/edit.html.erb +1 -1
- data/app/views/devise/registrations/_two_factor.html.erb +29 -8
- data/app/views/devise/sessions/new.html.erb +4 -2
- data/app/views/layouts/docs.html.erb +7 -7
- data/config/locales/en/teams.en.yml +2 -0
- data/config/locales/en/users.en.yml +8 -1
- data/config/routes.rb +3 -1
- data/docs/action-models.md +5 -5
- data/docs/api/versioning.md +0 -2
- data/docs/api.md +4 -4
- data/docs/application-options.md +1 -1
- data/docs/billing/usage.md +94 -16
- data/docs/field-partials.md +20 -20
- data/docs/font-awesome-pro.md +1 -1
- data/docs/getting-started.md +3 -3
- data/docs/i18n.md +3 -3
- data/docs/indirection.md +6 -4
- data/docs/namespacing.md +1 -1
- data/docs/onboarding.md +8 -8
- data/docs/overriding.md +1 -1
- data/docs/permissions.md +1 -1
- data/docs/seeds.md +1 -1
- data/docs/testing.md +2 -1
- data/docs/themes.md +18 -11
- data/docs/tunneling.md +2 -2
- data/docs/upgrades.md +2 -1
- data/lib/bullet_train/configuration.rb +15 -0
- data/lib/bullet_train/engine.rb +15 -0
- data/lib/bullet_train/version.rb +1 -1
- data/lib/bullet_train.rb +11 -1
- data/lib/colorizer.rb +1 -1
- data/lib/tasks/bullet_train_tasks.rake +66 -55
- metadata +22 -9
- data/app/views/account/invitations/_invitation.json.jbuilder +0 -7
- data/app/views/account/invitations/index.json.jbuilder +0 -1
- data/app/views/account/invitations/show.json.jbuilder +0 -1
- data/app/views/account/teams/_team.json.jbuilder +0 -9
- data/app/views/account/teams/index.json.jbuilder +0 -1
- data/app/views/account/teams/show.json.jbuilder +0 -1
data/docs/themes.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Themes
|
2
2
|
|
3
|
-
Bullet Train has a theme subsystem designed to allow you the flexibility to either extend or completely replace the stock “Light” UI
|
3
|
+
Bullet Train has a theme subsystem designed to allow you the flexibility to either extend or completely replace the stock “Light” UI theme.
|
4
4
|
To reduce duplication of code across themes, Bullet Train implements the following three packages:
|
5
5
|
1. `bullet_train-themes`
|
6
6
|
2. `bullet_train-themes-tailwind_css`
|
@@ -10,12 +10,16 @@ This is where all of Bullet Train's standard views are contained.
|
|
10
10
|
|
11
11
|
## Adding a New Theme (ejecting standard views)
|
12
12
|
|
13
|
-
If you want to add a new theme, you can use the following command.
|
14
|
-
|
13
|
+
If you want to add a new theme, you can use the following command. For example, let's make a new theme called "foo":
|
14
|
+
```
|
15
|
+
> rake bullet_train:themes:light:eject[foo]
|
16
|
+
```
|
17
|
+
|
18
|
+
This will copy all of the standard views from `bullet_train-themes-light` to `app/views/themes/` and configure your application to use the new theme.
|
15
19
|
|
16
20
|
After running this command, you will see that a few other files are edited to use this new theme. Whenever switching a theme, you will need to make the same changes to make sure your application is running with the theme of your choice.
|
17
21
|
|
18
|
-
You can also pass an annotated path to a view after running `bin/resolve` to eject individual views to your application.
|
22
|
+
You can also pass an annotated path to a view after running `bin/resolve --interactive` to eject individual views to your application.
|
19
23
|
|
20
24
|
## Theme Component Usage
|
21
25
|
|
@@ -25,21 +29,24 @@ To use a theme component, simply include it from "within" `shared` like so:
|
|
25
29
|
<%= render 'shared/fields/text_field', method: :text_field_value %>
|
26
30
|
```
|
27
31
|
|
28
|
-
We say "within" because while a `shared` view partial directory does exist, the referenced `shared/fields/_text_field.html.erb` doesn't actually exist within it. Instead, the theme engine picks up on `shared` and
|
32
|
+
We say "within" because while a `shared` view partial directory does exist, the referenced `shared/fields/_text_field.html.erb` doesn't actually exist within it. Instead, the theme engine picks up on `shared` and then works its way through the theme directories to find the appropriate match.
|
29
33
|
|
30
34
|
### Dealing with Indirection
|
31
35
|
|
32
36
|
This small piece of indirection buys us an incredible amount of power in building and extending themes, but as with any indirection, it could potentially come at the cost of developer experience. That's why Bullet Train includes additional tools for smoothing over this experience. Be sure to read the section on [dealing with indirection](./indirection.md).
|
33
37
|
|
34
|
-
## Theme Configuration
|
38
|
+
## Restoring Theme Configuration
|
35
39
|
|
36
|
-
Your application will automatically be configured to use your new theme whenever you run the eject command.
|
40
|
+
Your application will automatically be configured to use your new theme whenever you run the eject command. You can run the below command to re-install the standard light theme.
|
41
|
+
```
|
42
|
+
> rake bullet_train:themes:light:install
|
43
|
+
```
|
37
44
|
|
38
45
|
## Additional Guidance and Principles
|
39
46
|
|
40
47
|
### Should you extend or replace?
|
41
48
|
|
42
|
-
For most development projects, the likely best path for customizing the UI is to extend “Light” or another complete Bullet Train theme. It’s difficult to convey how many hours have gone into making the Bullet Train themes complete and coherent from end to end. Every type of field partial, all the third-party libraries, all the responsiveness scenarios, etc. It
|
49
|
+
For most development projects, the likely best path for customizing the UI is to extend “Light” or another complete Bullet Train theme. It’s difficult to convey how many hours have gone into making the Bullet Train themes complete and coherent from end to end. Every type of field partial, all the third-party libraries, all the responsiveness scenarios, etc. It has taken many hours of expert time.
|
43
50
|
|
44
51
|
Extending an existing theme is like retaining an option on shipping. By extending a theme that is already complete, you allow yourself to say “enough is enough” at a certain point and just living with some inherited defaults in exchange for shipping your product sooner. You can always do more UI work later, but it doesn’t look unpolished now!
|
45
52
|
|
@@ -63,11 +70,11 @@ On the other hand, if you decide to try to build a theme from the ground up, you
|
|
63
70
|
<% end %>
|
64
71
|
```
|
65
72
|
|
66
|
-
This allows the theme engine to resolve which theme in the inheritance chain
|
73
|
+
This allows the theme engine to resolve which theme in the inheritance chain will include the `box` partial. For example:
|
67
74
|
|
68
|
-
- It might come from the “Light” theme today, but if you switch to the “Bold” theme later, it’ll
|
75
|
+
- It might come from the “Light” theme today, but if you switch to the “Bold” theme later, it’ll start pulling it from there.
|
69
76
|
- If you start extending “Light”, you can override its `box` implementation and your application will pick up the new customized version from your theme automatically.
|
70
|
-
- If (hypothetically) `box`
|
77
|
+
- If (hypothetically) `box` becomes generalized and moves into the parent “Tailwind CSS” theme, your application would pick it up from the appropriate place.
|
71
78
|
|
72
79
|
### Let your designer name their theme.
|
73
80
|
|
data/docs/tunneling.md
CHANGED
@@ -4,14 +4,14 @@ Before your application can take advantage of features that depend on incoming w
|
|
4
4
|
|
5
5
|
## Use a Paid Plan
|
6
6
|
|
7
|
-
You should specifically sign up for a paid account. Although ngrok offers a free plan, their $25/month paid plan will allow you to reserve a custom subdomain for reuse each time you spin up your tunnel. This is a critical productivity improvement, because in practice you'll end up configuring your tunnel URL in a bunch of different places like `config/application.yml` but also in external systems like when you [configure payment providers to deliver webhooks to you](docs/billing/stripe.md).
|
7
|
+
You should specifically sign up for a paid account. Although ngrok offers a free plan, their $25/month paid plan will allow you to reserve a custom subdomain for reuse each time you spin up your tunnel. This is a critical productivity improvement, because in practice you'll end up configuring your tunnel URL in a bunch of different places like `config/application.yml` but also in external systems like when you [configure payment providers to deliver webhooks to you](/docs/billing/stripe.md).
|
8
8
|
|
9
9
|
## Usage
|
10
10
|
|
11
11
|
Once you have ngrok installed, you can start your tunnel like so, replacing `YOUR-SUBDOMAIN` with whatever subdomain you reserved in your ngrok account:
|
12
12
|
|
13
13
|
```
|
14
|
-
ngrok http 3000
|
14
|
+
ngrok http 3000 --subdomain=YOUR-SUBDOMAIN
|
15
15
|
```
|
16
16
|
|
17
17
|
## Updating Your Configuration
|
data/docs/upgrades.md
CHANGED
@@ -43,7 +43,7 @@ git checkout -b updating-starter-repo
|
|
43
43
|
git merge starter-repo/main
|
44
44
|
```
|
45
45
|
|
46
|
-
It's quite possible you'll get some merge conflicts at this point. No big deal! Just go through and resolve them like you would if you were integrating code from another developer on your team. We tend to comment our code heavily, but if you have any questions about the code you're trying to understand, let us know on
|
46
|
+
It's quite possible you'll get some merge conflicts at this point. No big deal! Just go through and resolve them like you would if you were integrating code from another developer on your team. We tend to comment our code heavily, but if you have any questions about the code you're trying to understand, let us know on Discord!
|
47
47
|
|
48
48
|
```
|
49
49
|
git diff
|
@@ -55,6 +55,7 @@ git commit -m "Upgrading Bullet Train."
|
|
55
55
|
|
56
56
|
```
|
57
57
|
rails test
|
58
|
+
rails test:system
|
58
59
|
```
|
59
60
|
|
60
61
|
### 6. Merge into `main` and delete the branch.
|
data/lib/bullet_train/engine.rb
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
begin
|
2
|
+
# We hoist the Devise engine, so its app/views directory is always after ours in a Rails app's view_paths.
|
3
|
+
#
|
4
|
+
# This is a quirk of how Rails engines compose, since engines `prepend_view_path` with their views:
|
5
|
+
# https://github.com/rails/rails/blob/9f141a423d551f7f421f54d1372e65ef6ed1f0be/railties/lib/rails/engine.rb#L606
|
6
|
+
#
|
7
|
+
# If users put devise after bullet_train in their Gemfile, Bundler requires the gems in that order,
|
8
|
+
# and devise's `prepend_view_path` would be called last, thus being prepended ahead of BulletTrain when Rails looks up views.
|
9
|
+
#
|
10
|
+
# Note: if this breaks down in the future, we may want to look into config.railties_order.
|
11
|
+
require "devise"
|
12
|
+
rescue LoadError
|
13
|
+
# Devise isn't in the Gemfile, and we don't have any other load order dependencies.
|
14
|
+
end
|
15
|
+
|
1
16
|
module BulletTrain
|
2
17
|
class Engine < ::Rails::Engine
|
3
18
|
end
|
data/lib/bullet_train/version.rb
CHANGED
data/lib/bullet_train.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require "bullet_train/version"
|
2
2
|
require "bullet_train/engine"
|
3
3
|
require "bullet_train/resolver"
|
4
|
+
require "bullet_train/configuration"
|
4
5
|
|
5
6
|
require "bullet_train/fields"
|
6
7
|
require "bullet_train/roles"
|
@@ -12,6 +13,7 @@ require "colorizer"
|
|
12
13
|
require "bullet_train/core_ext/string_emoji_helper"
|
13
14
|
|
14
15
|
require "devise"
|
16
|
+
require "xxhash"
|
15
17
|
# require "devise-two-factor"
|
16
18
|
# require "rqrcode"
|
17
19
|
require "cancancan"
|
@@ -37,6 +39,14 @@ module BulletTrain
|
|
37
39
|
mattr_accessor :linked_gems, default: ["bullet_train"]
|
38
40
|
mattr_accessor :parent_class, default: "Team"
|
39
41
|
mattr_accessor :base_class, default: "ApplicationRecord"
|
42
|
+
|
43
|
+
def self.configure
|
44
|
+
if block_given?
|
45
|
+
yield(BulletTrain::Configuration.default)
|
46
|
+
else
|
47
|
+
BulletTrain::Configuration.default
|
48
|
+
end
|
49
|
+
end
|
40
50
|
end
|
41
51
|
|
42
52
|
def default_url_options_from_base_url
|
@@ -106,7 +116,7 @@ def cloudinary_enabled?
|
|
106
116
|
end
|
107
117
|
|
108
118
|
def two_factor_authentication_enabled?
|
109
|
-
|
119
|
+
Rails.application.credentials.active_record_encryption&.primary_key.present?
|
110
120
|
end
|
111
121
|
|
112
122
|
# Don't redefine this if an application redefines it locally.
|
data/lib/colorizer.rb
CHANGED
@@ -118,16 +118,22 @@ namespace :bullet_train do
|
|
118
118
|
when "--link", "--reset"
|
119
119
|
set_core_gems(process[:flag], framework_packages)
|
120
120
|
stream "bundle install"
|
121
|
-
when "--watch-js"
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
121
|
+
when "--watch-js", "--clean-js"
|
122
|
+
package_name = process[:values].pop
|
123
|
+
framework_package = framework_packages.select { |k, v| k.to_s == package_name }
|
124
|
+
if framework_package.empty?
|
125
|
+
puts "Sorry, we couldn't find the package you're looking for.".red
|
126
|
+
puts ""
|
127
|
+
|
128
|
+
npm_packages = framework_packages.select { |name, details| details[:npm].present? }
|
129
|
+
puts "Please enter one of the following package names when running `bin/hack --watch-js` or `bin/hack --clean-js`:"
|
130
|
+
npm_packages.each_with_index do |package, idx|
|
131
|
+
puts "#{idx + 1}. #{package.first}"
|
132
|
+
end
|
133
|
+
exit 1
|
134
|
+
end
|
135
|
+
|
136
|
+
set_npm_package(process[:flag], framework_package)
|
131
137
|
end
|
132
138
|
end
|
133
139
|
|
@@ -194,16 +200,13 @@ namespace :bullet_train do
|
|
194
200
|
`#{ENV["IDE"] || "code"} local/bullet_train-core`
|
195
201
|
puts ""
|
196
202
|
|
197
|
-
puts "Bullet Train has a few npm packages, so we will
|
198
|
-
puts "
|
203
|
+
puts "Bullet Train has a few npm packages, but we can only watch one at a time, so we will watch the `bullet_train` package.".blue
|
204
|
+
puts "Any changes in your JavaScript files in this package will be recompiled as we go.".blue
|
205
|
+
puts "Run `bin/hack --watch-js` to see which other npm packages you can watch.".blue
|
199
206
|
puts "When you're done, you can hit <Control + C> and we'll clean all off this up.".blue
|
200
207
|
puts ""
|
201
|
-
|
202
|
-
|
203
|
-
# Clean up the npm packages after the developer enters `Ctrl + C`.
|
204
|
-
puts "Cleaning up npm packages...".blue
|
205
|
-
puts "If you cancel out of this process early, just run `bin/hack --clean-js` to revert to your original npm packages.".blue
|
206
|
-
set_npm_packages("--clean-js", framework_packages)
|
208
|
+
bt_package = framework_packages.select { |k, v| k == :bullet_train }
|
209
|
+
set_npm_package("--watch-js", bt_package)
|
207
210
|
|
208
211
|
puts ""
|
209
212
|
puts "OK, here's a list of things this script still doesn't do you for you:".yellow
|
@@ -215,15 +218,18 @@ namespace :bullet_train do
|
|
215
218
|
def set_core_gems(flag, framework_packages)
|
216
219
|
packages = framework_packages.keys
|
217
220
|
gemfile_lines = File.readlines("./Gemfile")
|
218
|
-
|
219
|
-
|
221
|
+
|
222
|
+
packages.each do |package|
|
223
|
+
original_path = "gem \"#{package}\""
|
224
|
+
local_path = "gem \"#{package}\", path: \"local/bullet_train-core/#{package}\""
|
225
|
+
match_found = false
|
226
|
+
|
227
|
+
new_lines = gemfile_lines.map do |line|
|
220
228
|
if line.match?(/"#{package}"/)
|
221
|
-
|
222
|
-
local_path = "gem \"#{package}\", path: \"local/bullet_train-core/#{package}\""
|
229
|
+
match_found = true
|
223
230
|
|
224
|
-
|
225
|
-
|
226
|
-
if `cat Gemfile | grep "gem \\\"#{package}\\\", path: \\\"local/#{package}\\\""`.chomp.present?
|
231
|
+
if flag == "--link"
|
232
|
+
if `cat Gemfile | grep "gem \\\"#{package}\\\", path: \\\"local/bullet_train-core/#{package}\\\""`.chomp.present?
|
227
233
|
puts "#{package} is already linked to a checked out copy in `local` in the `Gemfile`.".green
|
228
234
|
elsif `cat Gemfile | grep "gem \\\"#{package}\\\","`.chomp.present?
|
229
235
|
puts "#{package} already has some sort of alternative source configured in the `Gemfile`.".yellow
|
@@ -232,47 +238,52 @@ namespace :bullet_train do
|
|
232
238
|
puts "#{package} is directly present in the `Gemfile`, so we'll update that line.".green
|
233
239
|
line.gsub!(original_path, local_path)
|
234
240
|
end
|
235
|
-
|
236
|
-
when "--reset"
|
241
|
+
elsif flag == "--reset"
|
237
242
|
line.gsub!(local_path, original_path)
|
238
243
|
puts "Resetting '#{package}' package in the Gemfile...".blue
|
239
|
-
break
|
240
244
|
end
|
241
245
|
end
|
246
|
+
line
|
242
247
|
end
|
243
|
-
line
|
244
|
-
end
|
245
|
-
|
246
|
-
File.write("./Gemfile", new_lines.join)
|
247
|
-
end
|
248
248
|
|
249
|
-
|
250
|
-
|
249
|
+
# Add/Remove any packages that aren't primarily in the Gemfile.
|
250
|
+
if flag == "--link"
|
251
|
+
unless match_found
|
252
|
+
puts "Could not find #{package}. Adding to the end of the Gemfile.".blue
|
253
|
+
new_lines << "#{local_path}\n"
|
254
|
+
end
|
255
|
+
elsif flag == "--reset"
|
256
|
+
gem_regexp = /bullet_train-[a-z|A-Z_-]+/
|
257
|
+
while new_lines.last.match?(gem_regexp)
|
258
|
+
puts "Removing #{new_lines.last.scan(gem_regexp).first} from the Gemfile.".yellow
|
259
|
+
new_lines.pop
|
260
|
+
end
|
261
|
+
end
|
251
262
|
|
252
|
-
|
253
|
-
|
254
|
-
$stdin.gets.strip
|
263
|
+
gemfile_lines = new_lines
|
264
|
+
end
|
255
265
|
|
256
|
-
|
257
|
-
|
266
|
+
File.write("./Gemfile", gemfile_lines.join)
|
267
|
+
end
|
258
268
|
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
269
|
+
def set_npm_package(flag, package)
|
270
|
+
package.each do |name, details|
|
271
|
+
if flag == "--watch-js"
|
272
|
+
puts "Make sure your server is running before proceeding. When you're ready, press <Enter>".blue
|
273
|
+
$stdin.gets.strip
|
274
|
+
|
275
|
+
puts "Linking JavaScript for #{name}".blue
|
276
|
+
stream "cd local/bullet_train-core/#{name} && yarn install && npm_config_yes=true && npx yalc link && cd ../../.. && npm_config_yes=true npx yalc link \"#{details[:npm]}\""
|
277
|
+
puts "#{name} has been linked.".blue
|
278
|
+
puts "Preparing to watch changes.".blue
|
279
|
+
stream "yarn --cwd local/bullet_train-core/#{name} watch"
|
280
|
+
|
281
|
+
# Provide a help message after the developer kills the process with `Ctrl + C`.
|
282
|
+
puts "Run `bin/hack --clean-js #{name}` to revert to using the original npm package in your application.".blue
|
283
|
+
elsif flag == "--clean-js"
|
284
|
+
puts "Going back to using original `#{name}` npm package in application.".blue
|
264
285
|
puts ""
|
265
|
-
yarn_watch_command << "yarn --cwd local/bullet_train-core/#{package_name} watch"
|
266
|
-
end
|
267
|
-
|
268
|
-
# We use `&` to run the processes in parallel.
|
269
|
-
puts "Preparing to watch changes".blue
|
270
|
-
stream yarn_watch_command.join(" & ")
|
271
|
-
elsif flag == "--clean-js"
|
272
|
-
puts "Resetting packages to their original path".blue
|
273
|
-
puts ""
|
274
286
|
|
275
|
-
packages.each do |package_name, details|
|
276
287
|
system "yarn yalc remove #{details[:npm]}"
|
277
288
|
system "yarn add #{details[:npm]}"
|
278
289
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bullet_train
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew Culver
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: standard
|
@@ -150,6 +150,20 @@ dependencies:
|
|
150
150
|
- - ">="
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: xxhash
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :runtime
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
153
167
|
- !ruby/object:Gem::Dependency
|
154
168
|
name: cancancan
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -486,6 +500,8 @@ files:
|
|
486
500
|
- app/javascript/controllers/bulk_action_form_controller.js
|
487
501
|
- app/javascript/controllers/bulk_actions_controller.js
|
488
502
|
- app/javascript/controllers/clipboard_controller.js
|
503
|
+
- app/javascript/controllers/connection_workflow_controller.js
|
504
|
+
- app/javascript/controllers/desktop_menu_controller.js
|
489
505
|
- app/javascript/controllers/form_controller.js
|
490
506
|
- app/javascript/controllers/index.js
|
491
507
|
- app/javascript/controllers/mobile_menu_controller.js
|
@@ -493,6 +509,7 @@ files:
|
|
493
509
|
- app/javascript/controllers/text_toggle_controller.js
|
494
510
|
- app/javascript/electron/index.js
|
495
511
|
- app/javascript/index.js
|
512
|
+
- app/javascript/support/turn.js
|
496
513
|
- app/mailers/concerns/mailers/base.rb
|
497
514
|
- app/mailers/devise_mailer.rb
|
498
515
|
- app/mailers/user_mailer.rb
|
@@ -513,11 +530,8 @@ files:
|
|
513
530
|
- app/models/users.rb
|
514
531
|
- app/views/account/invitations/_breadcrumbs.html.erb
|
515
532
|
- app/views/account/invitations/_form.html.erb
|
516
|
-
- app/views/account/invitations/_invitation.json.jbuilder
|
517
|
-
- app/views/account/invitations/index.json.jbuilder
|
518
533
|
- app/views/account/invitations/new.html.erb
|
519
534
|
- app/views/account/invitations/show.html.erb
|
520
|
-
- app/views/account/invitations/show.json.jbuilder
|
521
535
|
- app/views/account/memberships/_breadcrumbs.html.erb
|
522
536
|
- app/views/account/memberships/_fields.html.erb
|
523
537
|
- app/views/account/memberships/_form.html.erb
|
@@ -536,15 +550,13 @@ files:
|
|
536
550
|
- app/views/account/teams/_index.html.erb
|
537
551
|
- app/views/account/teams/_menu_item.html.erb
|
538
552
|
- app/views/account/teams/_team.html.erb
|
539
|
-
- app/views/account/teams/_team.json.jbuilder
|
540
553
|
- app/views/account/teams/edit.html.erb
|
541
554
|
- app/views/account/teams/index.html.erb
|
542
|
-
- app/views/account/teams/index.json.jbuilder
|
543
555
|
- app/views/account/teams/new.html.erb
|
544
556
|
- app/views/account/teams/show.html.erb
|
545
|
-
- app/views/account/teams/show.json.jbuilder
|
546
557
|
- app/views/account/two_factors/create.js.erb
|
547
558
|
- app/views/account/two_factors/destroy.js.erb
|
559
|
+
- app/views/account/two_factors/verify.js.erb
|
548
560
|
- app/views/account/users/_breadcrumbs.html.erb
|
549
561
|
- app/views/account/users/_fields.html.erb
|
550
562
|
- app/views/account/users/_form.html.erb
|
@@ -664,6 +676,7 @@ files:
|
|
664
676
|
- docs/webhooks/outgoing.md
|
665
677
|
- docs/zapier.md
|
666
678
|
- lib/bullet_train.rb
|
679
|
+
- lib/bullet_train/configuration.rb
|
667
680
|
- lib/bullet_train/core_ext/string_emoji_helper.rb
|
668
681
|
- lib/bullet_train/engine.rb
|
669
682
|
- lib/bullet_train/resolver.rb
|
@@ -696,7 +709,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
696
709
|
- !ruby/object:Gem::Version
|
697
710
|
version: '0'
|
698
711
|
requirements: []
|
699
|
-
rubygems_version: 3.
|
712
|
+
rubygems_version: 3.4.1
|
700
713
|
signing_key:
|
701
714
|
specification_version: 4
|
702
715
|
summary: Bullet Train
|
@@ -1 +0,0 @@
|
|
1
|
-
json.array! @invitations, partial: "invitations/invitation", as: :invitation
|
@@ -1 +0,0 @@
|
|
1
|
-
json.partial! "invitations/invitation", invitation: @invitation
|
@@ -1 +0,0 @@
|
|
1
|
-
json.array! @teams, partial: "teams/team", as: :team
|
@@ -1 +0,0 @@
|
|
1
|
-
json.partial! "teams/team", team: @team
|