Add setting to disable new user registration on self-hosted instances #1163

Merged
tonyvince merged 16 commits from feat/add-seetings-to-control-registrations into main 2024-09-12 01:04:39 +08:00
tonyvince commented 2024-09-10 15:08:56 +08:00 (Migrated from github.com)
Close #1152 https://github.com/user-attachments/assets/ffac81c8-5d21-48c0-a11a-1a031a5ce95a
zachgoll (Migrated from github.com) reviewed 2024-09-10 20:20:44 +08:00
zachgoll (Migrated from github.com) left a comment

Awesome work, thanks for tackling this!

I know there are a ton of users looking for this feature so I think this one will be a super valuable addition!

Left a few suggestions on code organization, but everything works great!

Awesome work, thanks for tackling this! I know there are a ton of users looking for this feature so I think this one will be a super valuable addition! Left a few suggestions on code organization, but everything works great!
@@ -0,0 +2,4 @@
def index
@invite_codes = InviteCode.all
end
zachgoll (Migrated from github.com) commented 2024-09-10 20:18:25 +08:00

Mentioned this in a comment below, but I think we could break this controller into:

def index
  @invite_codes = InviteCode.all
end

def create
  InviteCode.generate!
  redirect_back_or_to invite_codes_path, notice: "Code generated"
end
Mentioned this in a comment below, but I think we could break this controller into: ```rb def index @invite_codes = InviteCode.all end def create InviteCode.generate! redirect_back_or_to invite_codes_path, notice: "Code generated" end ```
@@ -0,0 +1,28 @@
import { Controller } from "@hotwired/stimulus"
zachgoll (Migrated from github.com) commented 2024-09-10 20:07:15 +08:00

Remove?

Remove?
zachgoll (Migrated from github.com) commented 2024-09-10 20:10:54 +08:00

Code looks good here, but can we move this to a _invite_code.html.erb partial, and then in index we can render a collection?

<%= render @invite_codes %>
Code looks good here, but can we move this to a `_invite_code.html.erb` partial, and then in `index` we can render a collection? ``` <%= render @invite_codes %> ```
@@ -80,1 +77,4 @@
</div>
<div>
<%= link_to t(".smtp_settings.send_test_email_button"), send_test_email_settings_hosting_path, data: { turbo_method: :post }, class: "bg-gray-50 text-gray-900 text-sm font-medium rounded-lg px-3 py-2" %>
</div>
zachgoll (Migrated from github.com) commented 2024-09-10 20:12:53 +08:00

If we make a slight modification to this, we can avoid the custom respond_to. This would fetch the index frame and render it here:

<%= turbo_frame_tag :invite_codes, src: invite_codes_path %>

When we do this, we'll need to update the button above to make a post request to invite_codes_path to invoke a CREATE action.

That way, we separate the responsibilities a bit better:

  • Index - simply renders generated codes, no generation step
  • Create - creates one code at a time, on-demand
If we make a slight modification to this, we can avoid the custom `respond_to`. This would fetch the index frame and render it here: ``` <%= turbo_frame_tag :invite_codes, src: invite_codes_path %> ``` When we do this, we'll need to update the button above to make a post request to `invite_codes_path` to invoke a CREATE action. That way, we separate the responsibilities a bit better: - Index - simply renders generated codes, no generation step - Create - creates one code at a time, on-demand
zachgoll commented 2024-09-10 20:24:29 +08:00 (Migrated from github.com)

@justinfar a lot of users have been asking for a way to "restrict" signups on their self hosted instances, and since we already had these invite codes built into the system, I suggested to @tonyvince here in this comment a potential implementation, which he has implemented here in this PR. Think this will be a really helpful one to a lot of self hosters!

Pulling you in here to ask if there are any design tweaks you think we should make on this one before merging?

@justinfar a lot of users have been asking for a way to "restrict" signups on their self hosted instances, and since we already had these invite codes built into the system, I suggested to @tonyvince [here in this comment](https://github.com/maybe-finance/maybe/issues/1152#issuecomment-2334348664) a potential implementation, which he has implemented here in this PR. Think this will be a really helpful one to a lot of self hosters! Pulling you in here to ask if there are any design tweaks you think we should make on this one before merging?
tonyvince (Migrated from github.com) reviewed 2024-09-10 21:55:45 +08:00
@@ -0,0 +2,4 @@
def index
@invite_codes = InviteCode.all
end
tonyvince (Migrated from github.com) commented 2024-09-10 21:55:45 +08:00
[dee9af2](https://github.com/maybe-finance/maybe/pull/1163/commits/dee9af253bfc556578ca75bfa2d98b89cdcb05e0)
tonyvince (Migrated from github.com) reviewed 2024-09-10 21:56:30 +08:00
@@ -0,0 +1,28 @@
import { Controller } from "@hotwired/stimulus"
tonyvince (Migrated from github.com) commented 2024-09-10 21:56:30 +08:00
[47f312d](https://github.com/maybe-finance/maybe/pull/1163/commits/47f312dbed54b6a655da7319c114788a7de2d9e9)
tonyvince (Migrated from github.com) reviewed 2024-09-10 21:56:58 +08:00
@@ -80,1 +77,4 @@
</div>
<div>
<%= link_to t(".smtp_settings.send_test_email_button"), send_test_email_settings_hosting_path, data: { turbo_method: :post }, class: "bg-gray-50 text-gray-900 text-sm font-medium rounded-lg px-3 py-2" %>
</div>
tonyvince (Migrated from github.com) commented 2024-09-10 21:56:58 +08:00
[68a069d](https://github.com/maybe-finance/maybe/pull/1163/commits/68a069d9d451844e1cefdbae152a9ffea6dafa4f)
justinfar commented 2024-09-10 22:20:12 +08:00 (Migrated from github.com)

@tonyvince hey there! Thanks so much for working on this and for trying to stay as close to the design language as possible. I worked on this view for a bit and I rearranged some parts and tweaked some things visually (but still kept the same structure so you won't need to rewrite any logic).

I added a page (the title has the same # and title as this issue) in the Figma community file over here so that you can reference the design shown below.

Here's a prototype of how it should work.

https://github.com/user-attachments/assets/fd116722-213d-436a-b180-c2f0fe362847

@zachgoll the one only major tweak I've made is that I've split General Settings, SMTP Email Configuration and Invite Codes into seperate sections within the Self-Hosting settings page just to keep the different sections separate. You can see that in the first frame here. The changes there were:

  • Splitting those sections into smaller containers
  • Changing the font size for "SMTP Email Configuration" to text-lg

Would it be an issue to include that change with this PR?

@tonyvince hey there! Thanks so much for working on this and for trying to stay as close to the design language as possible. I worked on this view for a bit and I rearranged some parts and tweaked some things visually (but still kept the same structure so you won't need to rewrite any logic). I added a page (the title has the same # and title as this issue) in the Figma community file over [here](https://www.figma.com/design/lonJmVk3HYkwZoIO7xYP2w/Maybe-App-(Community)?node-id=4559-96&t=nAuWkDogCbF0ev6r-1) so that you can reference the design shown below. Here's a prototype of how it should work. https://github.com/user-attachments/assets/fd116722-213d-436a-b180-c2f0fe362847 @zachgoll the one only _major_ tweak I've made is that I've split General Settings, SMTP Email Configuration and Invite Codes into seperate sections within the Self-Hosting settings page just to keep the different sections separate. You can see that in the first frame [here](https://www.figma.com/design/lonJmVk3HYkwZoIO7xYP2w/Maybe-App-(Community)?node-id=4559-96&t=nAuWkDogCbF0ev6r-4). The changes there were: - Splitting those sections into smaller containers - Changing the font size for "SMTP Email Configuration" to `text-lg` Would it be an issue to include that change with this PR?
zachgoll (Migrated from github.com) approved these changes 2024-09-10 22:31:07 +08:00
zachgoll (Migrated from github.com) left a comment

@tonyvince the code updates look good! Should be good to merge after the design tweaks are made.

@justinfar looks great to me!

@tonyvince the code updates look good! Should be good to merge after the design tweaks are made. @justinfar looks great to me!
tonyvince commented 2024-09-11 00:37:29 +08:00 (Migrated from github.com)
Changed designs https://github.com/user-attachments/assets/c028dcec-fd87-4369-939c-e5643bff7caa
justinfar commented 2024-09-11 00:57:58 +08:00 (Migrated from github.com)

Thanks for making the design changes @tonyvince!

Only small tweaks left to make if it's not an issue are:

  • Changing the text size of the subtext (Every new user that joins your ...) and primary text (Require invite code for new sign ups) to both be text-sm
  • Change the size (width and height) of the icon within the empty state to be 24px
Thanks for making the design changes @tonyvince! Only small tweaks left to make if it's not an issue are: - Changing the text size of the subtext (Every new user that joins your ...) and primary text (Require invite code for new sign ups) to both be `text-sm` - Change the size (width and height) of the icon within the empty state to be `24px`
zachgoll commented 2024-09-11 21:24:54 +08:00 (Migrated from github.com)

@tonyvince this is ready for final review correct?

@tonyvince this is ready for final review correct?
zachgoll (Migrated from github.com) reviewed 2024-09-11 22:09:55 +08:00
@@ -0,0 +1,16 @@
<%# app/views/invite_codes/_invite_code.html.erb %>
zachgoll (Migrated from github.com) commented 2024-09-11 22:08:22 +08:00
      <span data-clipboard-target="source" class="text-sm font-medium"><%= invite_code.token %></span>
```suggestion <span data-clipboard-target="source" class="text-sm font-medium"><%= invite_code.token %></span> ```
zachgoll (Migrated from github.com) commented 2024-09-11 22:08:34 +08:00
  <div class="flex items-center justify-between p-2 w-1/2 bg-gray-25 rounded-md" data-controller="clipboard">
```suggestion <div class="flex items-center justify-between p-2 w-1/2 bg-gray-25 rounded-md" data-controller="clipboard"> ```
@@ -51,37 +50,75 @@
<%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %>
zachgoll (Migrated from github.com) commented 2024-09-11 22:06:54 +08:00

@tonyvince as I was doing a final review, I noticed that this POST request is happening inside the main form, which causes a nested form that we'll want to stay away from. This required a bit of reworking of this file, so rather than trying to make comments everywhere I made the tweaks locally. Here's the completed file—you may want to do a spot check on this since I put it together pretty quickly. The main changes are:

  • Broke each section into its own form to give us more control
  • Updated some of the font sizes / layout spacing
<% content_for :sidebar do %>
  <%= render "settings/nav" %>
<% end %>

<div class="space-y-4 pb-32">
  <h1 class="text-gray-900 text-xl font-medium mb-4"><%= t(".page_title") %></h1>

  <% if ENV["HOSTING_PLATFORM"] == "render" %>
    <%= settings_section title: t(".general_settings_title") do %>
      <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %>
        <h2 class="font-medium mb-1"><%= t(".upgrades.title") %></h2>
        <p class="text-gray-500 text-sm mb-4"><%= t(".upgrades.description") %></p>

        <div class="space-y-4">
          <div class="flex items-center gap-4">
            <%= form.radio_button :upgrades_mode, "manual", checked: Setting.upgrades_mode == "manual", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %>
            <%= form.label :upgrades_mode_manual, t(".upgrades.manual.title"), class: "text-gray-900 text-sm" do %>
              <span class="font-medium"><%= t(".upgrades.manual.title") %></span>
              <br>
              <span class="text-gray-500">
                <%= t(".upgrades.manual.description") %>
              </span>
            <% end %>
          </div>
          <div class="flex items-center gap-4">
            <%= form.radio_button :upgrades_mode, "release", checked: Setting.upgrades_mode == "auto" && Setting.upgrades_target == "release", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %>
            <%= form.label :upgrades_mode_release, t(".upgrades.latest_release.title"), class: "text-gray-900 text-sm" do %>
              <span class="font-medium"><%= t(".upgrades.latest_release.title") %></span>
              <br>
              <span class="text-gray-500">
                <%= t(".upgrades.latest_release.description") %>
              </span>
            <% end %>
          </div>
          <div class="flex items-center gap-4">
            <%= form.radio_button :upgrades_mode, "commit", checked: Setting.upgrades_mode == "auto" && Setting.upgrades_target == "commit", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %>
            <%= form.label :upgrades_mode_commit, t(".upgrades.latest_commit.title"), class: "text-gray-900 text-sm" do %>
              <span class="font-medium"><%= t(".upgrades.latest_commit.title") %></span>
              <br>
              <span class="text-gray-500">
                <%= t(".upgrades.latest_commit.description") %>
              </span>
            <% end %>
          </div>
        </div>

        <div>
          <h2 class="font-medium mb-1"><%= t(".provider_settings.title") %></h2>
          <p class="text-gray-500 text-sm mb-4"><%= t(".render_deploy_hook_description") %></p>
          <%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %>
        </div>
      <% end %>
    <% end %>
  <% end %>

  <%= settings_section title: t(".smtp_settings.title") do %>
    <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %>
      <p class="text-gray-500 text-sm mb-4"><%= t(".smtp_settings.description") %></p>
      <div class="space-y-4">
        <div class="space-y-3">
          <%= form.text_field :email_sender, label: t(".email_sender"), placeholder: t(".email_sender_placeholder"), value: Setting.email_sender, data: { "auto-submit-form-target" => "auto" } %>
          <%= form.text_field :app_domain, label: t(".domain"), placeholder: t(".domain_placeholder"), value: Setting.app_domain, data: { "auto-submit-form-target" => "auto" } %>
          <%= form.text_field :smtp_host, label: t(".smtp_settings.host"), placeholder: t(".smtp_settings.host_placeholder"), value: Setting.smtp_host, data: { "auto-submit-form-target" => "auto" } %>
          <%= form.number_field :smtp_port, label: t(".smtp_settings.port"), placeholder: t(".smtp_settings.port_placeholder"), value: Setting.smtp_port, data: { "auto-submit-form-target" => "auto" } %>
          <%= form.text_field :smtp_username, label: t(".smtp_settings.username"), placeholder: t(".smtp_settings.username_placeholder"), value: Setting.smtp_username, data: { "auto-submit-form-target" => "auto" } %>
          <%= form.password_field :smtp_password, label: t(".smtp_settings.password"), placeholder: t(".smtp_settings.password_placeholder"), value: Setting.smtp_password, data: { "auto-submit-form-target" => "auto" } %>
        </div>
        <div class="flex items-center justify-between bg-white border border-alpha-black-100 p-4 rounded-lg">
          <div class="flex items-center gap-3">
            <div class="w-10 h-10 rounded-full bg-gray-25 flex items-center justify-center">
              <%= lucide_icon "mails", class: "w-6 h-6 text-gray-500" %>
            </div>
            <div>
              <p class="text-gray-900 font-medium text-sm"><%= t(".smtp_settings.send_test_email") %></p>
              <p class="text-gray-500 text-sm"><%= t(".smtp_settings.send_test_email_description") %></p>
            </div>
          </div>
          <div>
            <%= link_to t(".smtp_settings.send_test_email_button"), send_test_email_settings_hosting_path, data: { turbo_method: :post }, class: "bg-gray-50 text-gray-900 text-sm font-medium rounded-lg px-3 py-2" %>
          </div>
        </div>
      </div>
    <% end %>
  <% end %>

  <%= settings_section title: t(".invite_settings.title") do %>
    <div class="space-y-4">
      <div class="flex items-center justify-between">
        <div class="space-y-1">
          <p class="text-sm"><%= t(".invite_settings.require_invite_for_signup") %></p>
          <p class="text-gray-500 text-sm"><%= t(".invite_settings.invite_code_description") %></p>
        </div>

        <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %>
          <div class="relative inline-block select-none">
            <%= form.check_box :require_invite_for_signup, class: "sr-only peer", "data-auto-submit-form-target": "auto", "data-autosubmit-trigger-event": "input" %>
            <%= form.label :require_invite_for_signup, "&nbsp;".html_safe, class: "maybe-switch" %>
          </div>
        <% end %>
      </div>

      <% if Setting.require_invite_for_signup %>
        <div class="flex items-center justify-between mb-4">
          <div>
            <span class="text-gray-900 text-base font-medium"><%= t(".invite_settings.generated_tokens") %></span>
          </div>
          <div>
            <%= button_to invite_codes_path,
                        method: :post,
                        class: "flex gap-1 bg-gray-50 text-gray-900 text-sm rounded-lg px-3 py-2" do %>
              <span><%= t(".invite_settings.generate_tokens") %></span>
            <% end %>
          </div>
        </div>

        <div>
          <%= turbo_frame_tag :invite_codes, src: invite_codes_path %>
        </div>
      <% end %>
    </div>
  <% end %>

  <%= settings_nav_footer %>
</div>
@tonyvince as I was doing a final review, I noticed that this POST request is happening _inside_ the main form, which causes a nested form that we'll want to stay away from. This required a bit of reworking of this file, so rather than trying to make comments everywhere I made the tweaks locally. Here's the completed file—you may want to do a spot check on this since I put it together pretty quickly. The main changes are: - Broke each section into its own form to give us more control - Updated some of the font sizes / layout spacing ```erb <% content_for :sidebar do %> <%= render "settings/nav" %> <% end %> <div class="space-y-4 pb-32"> <h1 class="text-gray-900 text-xl font-medium mb-4"><%= t(".page_title") %></h1> <% if ENV["HOSTING_PLATFORM"] == "render" %> <%= settings_section title: t(".general_settings_title") do %> <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %> <h2 class="font-medium mb-1"><%= t(".upgrades.title") %></h2> <p class="text-gray-500 text-sm mb-4"><%= t(".upgrades.description") %></p> <div class="space-y-4"> <div class="flex items-center gap-4"> <%= form.radio_button :upgrades_mode, "manual", checked: Setting.upgrades_mode == "manual", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %> <%= form.label :upgrades_mode_manual, t(".upgrades.manual.title"), class: "text-gray-900 text-sm" do %> <span class="font-medium"><%= t(".upgrades.manual.title") %></span> <br> <span class="text-gray-500"> <%= t(".upgrades.manual.description") %> </span> <% end %> </div> <div class="flex items-center gap-4"> <%= form.radio_button :upgrades_mode, "release", checked: Setting.upgrades_mode == "auto" && Setting.upgrades_target == "release", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %> <%= form.label :upgrades_mode_release, t(".upgrades.latest_release.title"), class: "text-gray-900 text-sm" do %> <span class="font-medium"><%= t(".upgrades.latest_release.title") %></span> <br> <span class="text-gray-500"> <%= t(".upgrades.latest_release.description") %> </span> <% end %> </div> <div class="flex items-center gap-4"> <%= form.radio_button :upgrades_mode, "commit", checked: Setting.upgrades_mode == "auto" && Setting.upgrades_target == "commit", data: { "auto-submit-form-target" => "auto", "autosubmit-trigger-event": "input" } %> <%= form.label :upgrades_mode_commit, t(".upgrades.latest_commit.title"), class: "text-gray-900 text-sm" do %> <span class="font-medium"><%= t(".upgrades.latest_commit.title") %></span> <br> <span class="text-gray-500"> <%= t(".upgrades.latest_commit.description") %> </span> <% end %> </div> </div> <div> <h2 class="font-medium mb-1"><%= t(".provider_settings.title") %></h2> <p class="text-gray-500 text-sm mb-4"><%= t(".render_deploy_hook_description") %></p> <%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %> </div> <% end %> <% end %> <% end %> <%= settings_section title: t(".smtp_settings.title") do %> <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %> <p class="text-gray-500 text-sm mb-4"><%= t(".smtp_settings.description") %></p> <div class="space-y-4"> <div class="space-y-3"> <%= form.text_field :email_sender, label: t(".email_sender"), placeholder: t(".email_sender_placeholder"), value: Setting.email_sender, data: { "auto-submit-form-target" => "auto" } %> <%= form.text_field :app_domain, label: t(".domain"), placeholder: t(".domain_placeholder"), value: Setting.app_domain, data: { "auto-submit-form-target" => "auto" } %> <%= form.text_field :smtp_host, label: t(".smtp_settings.host"), placeholder: t(".smtp_settings.host_placeholder"), value: Setting.smtp_host, data: { "auto-submit-form-target" => "auto" } %> <%= form.number_field :smtp_port, label: t(".smtp_settings.port"), placeholder: t(".smtp_settings.port_placeholder"), value: Setting.smtp_port, data: { "auto-submit-form-target" => "auto" } %> <%= form.text_field :smtp_username, label: t(".smtp_settings.username"), placeholder: t(".smtp_settings.username_placeholder"), value: Setting.smtp_username, data: { "auto-submit-form-target" => "auto" } %> <%= form.password_field :smtp_password, label: t(".smtp_settings.password"), placeholder: t(".smtp_settings.password_placeholder"), value: Setting.smtp_password, data: { "auto-submit-form-target" => "auto" } %> </div> <div class="flex items-center justify-between bg-white border border-alpha-black-100 p-4 rounded-lg"> <div class="flex items-center gap-3"> <div class="w-10 h-10 rounded-full bg-gray-25 flex items-center justify-center"> <%= lucide_icon "mails", class: "w-6 h-6 text-gray-500" %> </div> <div> <p class="text-gray-900 font-medium text-sm"><%= t(".smtp_settings.send_test_email") %></p> <p class="text-gray-500 text-sm"><%= t(".smtp_settings.send_test_email_description") %></p> </div> </div> <div> <%= link_to t(".smtp_settings.send_test_email_button"), send_test_email_settings_hosting_path, data: { turbo_method: :post }, class: "bg-gray-50 text-gray-900 text-sm font-medium rounded-lg px-3 py-2" %> </div> </div> </div> <% end %> <% end %> <%= settings_section title: t(".invite_settings.title") do %> <div class="space-y-4"> <div class="flex items-center justify-between"> <div class="space-y-1"> <p class="text-sm"><%= t(".invite_settings.require_invite_for_signup") %></p> <p class="text-gray-500 text-sm"><%= t(".invite_settings.invite_code_description") %></p> </div> <%= styled_form_with model: Setting.new, url: settings_hosting_path, method: :patch, data: { controller: "auto-submit-form", "auto-submit-form-trigger-event-value" => "blur" } do |form| %> <div class="relative inline-block select-none"> <%= form.check_box :require_invite_for_signup, class: "sr-only peer", "data-auto-submit-form-target": "auto", "data-autosubmit-trigger-event": "input" %> <%= form.label :require_invite_for_signup, "&nbsp;".html_safe, class: "maybe-switch" %> </div> <% end %> </div> <% if Setting.require_invite_for_signup %> <div class="flex items-center justify-between mb-4"> <div> <span class="text-gray-900 text-base font-medium"><%= t(".invite_settings.generated_tokens") %></span> </div> <div> <%= button_to invite_codes_path, method: :post, class: "flex gap-1 bg-gray-50 text-gray-900 text-sm rounded-lg px-3 py-2" do %> <span><%= t(".invite_settings.generate_tokens") %></span> <% end %> </div> </div> <div> <%= turbo_frame_tag :invite_codes, src: invite_codes_path %> </div> <% end %> </div> <% end %> <%= settings_nav_footer %> </div> ```
tonyvince (Migrated from github.com) reviewed 2024-09-11 22:34:06 +08:00
@@ -51,37 +50,75 @@
<%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %>
tonyvince (Migrated from github.com) commented 2024-09-11 22:34:06 +08:00
[79fa4bd](https://github.com/maybe-finance/maybe/pull/1163/commits/79fa4bd24866580e26072866518d68e487793af0)
zachgoll (Migrated from github.com) reviewed 2024-09-11 23:56:11 +08:00
@@ -51,37 +50,75 @@
<%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %>
zachgoll (Migrated from github.com) commented 2024-09-11 23:56:11 +08:00

I'm still seeing some layout and font sizing issues here. The code block above should have all of it in there so feel free to copy/paste.

I'm still seeing some layout and font sizing issues here. The code block above should have all of it in there so feel free to copy/paste.
zachgoll (Migrated from github.com) reviewed 2024-09-12 00:00:02 +08:00
@@ -0,0 +1,28 @@
import { Controller } from "@hotwired/stimulus"
zachgoll (Migrated from github.com) commented 2024-09-12 00:00:02 +08:00

```suggestion ```
tonyvince (Migrated from github.com) reviewed 2024-09-12 00:03:49 +08:00
@@ -51,37 +50,75 @@
<%= form.url_field :render_deploy_hook, label: t(".render_deploy_hook_label"), placeholder: t(".render_deploy_hook_placeholder"), value: Setting.render_deploy_hook, data: { "auto-submit-form-target" => "auto" } %>
tonyvince (Migrated from github.com) commented 2024-09-12 00:03:49 +08:00

Done

Done
zachgoll (Migrated from github.com) approved these changes 2024-09-12 01:04:07 +08:00
zachgoll (Migrated from github.com) left a comment

Nice work! I think we're good to merge this.

This will be a great addition for self hosters :)

Nice work! I think we're good to merge this. This will be a great addition for self hosters :)
Sign in to join this conversation.