Boxcar -> BOXCAR
This commit is contained in:
@@ -11,7 +11,7 @@ class Conversations::MessagesController < ApplicationController
|
||||
rescue Ai::Quota::UsageExceedsQuotaError
|
||||
render json: { error: "You've depleted your quota" }, status: :too_many_requests
|
||||
rescue Conversation::InvalidStateError
|
||||
render json: { error: "Boxcar is still working on an answer to your last question" }, status: :conflict
|
||||
render json: { error: "BOXCAR is still working on an answer to your last question" }, status: :conflict
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
module ApplicationHelper
|
||||
def page_title_tag
|
||||
tag.title @page_title || "Boxcar"
|
||||
tag.title @page_title || "BOXCAR"
|
||||
end
|
||||
|
||||
def icon_tag(name, **options)
|
||||
|
||||
@@ -9,7 +9,7 @@ class Conversation::Message::ResponseGeneratorJob < ApplicationJob
|
||||
|
||||
retry_on RubyLLM::RateLimitError, RubyLLM::ServiceUnavailableError, wait: 2.seconds, attempts: 3 do |job, error|
|
||||
message = job.arguments.first
|
||||
message.conversation.respond("Boxcar is very busy at the moment. Please try again in a minute.")
|
||||
message.conversation.respond("BOXCAR is very busy at the moment. Please try again in a minute.")
|
||||
end
|
||||
|
||||
def perform(message)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class ApplicationMailer < ActionMailer::Base
|
||||
default from: "The Boxcar team <support@37signals.com>"
|
||||
default from: "The BOXCAR team <support@37signals.com>"
|
||||
|
||||
layout "mailer"
|
||||
append_view_path Rails.root.join("app/views/mailers")
|
||||
|
||||
@@ -11,6 +11,6 @@ class Notification::BundleMailer < ApplicationMailer
|
||||
|
||||
mail \
|
||||
to: bundle.user.email_address,
|
||||
subject: "Latest Activity in Boxcar"
|
||||
subject: "Latest Activity in BOXCAR"
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<div class="settings__panel settings__panel--entropy panel shadow center">
|
||||
<h2 class="divider txt-large">Auto close</h2>
|
||||
<p class="margin-none-block-start">Boxcar doesn’t let stale cards stick around forever. Cards automatically close as “Not Now” without activity for specific period of time. <em>This is the default, global setting — you can override it on each board.</em></p>
|
||||
<p class="margin-none-block-start">BOXCAR doesn’t let stale cards stick around forever. Cards automatically close as “Not Now” without activity for specific period of time. <em>This is the default, global setting — you can override it on each board.</em></p>
|
||||
<%= render "entropy/auto_close", model: account.default_entropy_configuration, url: account_entropy_configuration_path %>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<%= turbo_frame_tag @collection, :entropy_configuration do %>
|
||||
<div class="margin-block-end">
|
||||
<h2 class="divider txt-large">Auto close</h2>
|
||||
<p class="margin-none-block-start">Boxcar doesn’t let stale cards stick around forever. Cards automatically close as “Not now” if no one updates, comments, or moves a card for…</p>
|
||||
<p class="margin-none-block-start">BOXCAR doesn’t let stale cards stick around forever. Cards automatically close as “Not now” if no one updates, comments, or moves a card for…</p>
|
||||
<%= render "entropy/auto_close", model: collection, url: collection_entropy_configuration_path(collection) %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<%= turbo_frame_tag @collection, :publication do %>
|
||||
<header>
|
||||
<h2 class="divider txt-large">Public link</h2>
|
||||
<div>Turn on the Public link to share this board with anyone in the world. They won’t need to log in and they won’t be able to see anything else in Boxcar.</div>
|
||||
<div>Turn on the Public link to share this board with anyone in the world. They won’t need to log in and they won’t be able to see anything else in BOXCAR.</div>
|
||||
</header>
|
||||
|
||||
<% if collection.published? %>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<%= render "conversations/composer/thinking_indicator", conversation: nil %>
|
||||
|
||||
<%= form.hidden_field :client_message_id, data: { conversation__composer_target: "clientMessageIdInput" } %>
|
||||
<%= form.label :content, "Ask Boxcar", class: "font-weight-black txt-nowrap" %>
|
||||
<%= form.label :content, "Ask BOXCAR", class: "font-weight-black txt-nowrap" %>
|
||||
<%= form.text_field :content,
|
||||
autofocus: true,
|
||||
autocomplete: "off",
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
<iframe
|
||||
frameborder="0"
|
||||
src="https://www.youtube.com/embed/kAgUQbD9Wc0?si=IIjKjUIk5PchL0-a"
|
||||
title="Boxcar Beta orientation"
|
||||
title="BOXCAR Beta orientation"
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen></iframe>
|
||||
|
||||
@@ -3,5 +3,5 @@
|
||||
action: "click->dialog#open:stop keydown.j@document->hotkey#click keydown.meta+j@document->hotkey#click keydown.ctrl+j@document->hotkey#click",
|
||||
controller: "hotkey" } do %>
|
||||
<span><%= image_tag "logo.png" %></span>
|
||||
<strong class="txt-medium overflow-ellipsis margin-none">Boxcar</strong>
|
||||
<strong class="txt-medium overflow-ellipsis margin-none">BOXCAR</strong>
|
||||
<% end %>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<%= collapsible_nav_section "Jump to…" do %>
|
||||
<%= filter_place_menu_item "https://www.youtube.com/watch?v=rNKRdk7DLHM", "Boxcar beta orientation", "youtube", new_window: true %>
|
||||
<%= filter_place_menu_item "https://www.youtube.com/watch?v=rNKRdk7DLHM", "BOXCAR beta orientation", "youtube", new_window: true %>
|
||||
<%= filter_place_menu_item account_settings_path, "Account Settings", "settings" %>
|
||||
<%= filter_place_menu_item user_path(Current.user), "My Profile", "person" %>
|
||||
<%= filter_place_menu_item notifications_path, "Notifications", "bell" %>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<h1 class="title">Everything since <%= @bundle.starts_at.strftime("%-l%P on %A, %B %-d") %></h1>
|
||||
<p class="subtitle">You have <%= link_to pluralize(@notifications.count, "new notification"), notifications_url %>.</p>
|
||||
<%= render partial: "notification/bundle_mailer/notification", collection: @notifications, as: :notification %>
|
||||
<p class="footer">Boxcar emails you about new notifications every few hours. <br>
|
||||
<p class="footer">BOXCAR emails you about new notifications every few hours. <br>
|
||||
<%= link_to "Change how often you get these", notifications_settings_url %>
|
||||
or <%= link_to "unsubscribe from all email notifications", new_notifications_unsubscribe_url(access_token: @unsubscribe_token) %>.
|
||||
</p>
|
||||
|
||||
@@ -4,7 +4,7 @@ You have <%= pluralize @notifications.count, "new notification" %>.
|
||||
<%= render partial: "notification/bundle_mailer/notification", collection: @notifications, as: :notification %>
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
Boxcar emails you about new notifications every few hours.
|
||||
BOXCAR emails you about new notifications every few hours.
|
||||
|
||||
Change how often you get these:
|
||||
<%= notifications_settings_url %>
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<%= render "filters/menu/hotkeys" %>
|
||||
|
||||
<div class="margin-block-start-half txt-x-small flex-inline align-center gap-half justify-center txt-subtle">
|
||||
<span>Boxcar is designed, built, and backed by</span>
|
||||
<span>BOXCAR is designed, built, and backed by</span>
|
||||
<strong><%= icon_tag "37signals" %> <a href="https://37signals.com" target="_blank" class="txt-subtle">37signals</a>.</strong>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<% unless (platform.chrome? && !platform.ios?) || (platform.firefox? && !platform.android?) %>
|
||||
<div class="notifications-help pwa__instructions hide-in-pwa">
|
||||
<h2><%= platform.safari? && platform.desktop? ? "…or install" : "Install " -%> Boxcar as a web app.</h2>
|
||||
<h2><%= platform.safari? && platform.desktop? ? "…or install" : "Install " -%> BOXCAR as a web app.</h2>
|
||||
<% case
|
||||
when platform.edge? %>
|
||||
<ol>
|
||||
<li>Click <em><%= icon_tag "install-edge", alt: "the app available - install Boxcar button" %></em>in the address bar.</li>
|
||||
<li>Click <em><%= icon_tag "install-edge", alt: "the app available - install BOXCAR button" %></em>in the address bar.</li>
|
||||
<li>Click <em>Install</em>.</li>
|
||||
</ol>
|
||||
<% when platform.chrome? && platform.android? %>
|
||||
@@ -23,13 +23,13 @@
|
||||
<li>Click <em>Add to Dock…</em>.</li>
|
||||
</ol>
|
||||
<% when (platform.safari? || platform.chrome?) && platform.ios? %>
|
||||
<p>To receive push notifications in <%= platform.browser.capitalize %> for <%= platform.operating_system %>, you must first install Boxcar as a web app.</p>
|
||||
<p>To receive push notifications in <%= platform.browser.capitalize %> for <%= platform.operating_system %>, you must first install BOXCAR as a web app.</p>
|
||||
<ol>
|
||||
<li>Tap <em><%= icon_tag "share", alt: "the share button" %></em></li>
|
||||
<li>Tap <em>Add to Home Screen</em>.</li>
|
||||
</ol>
|
||||
<% else %>
|
||||
<p>Some platforms require you to install Boxcar as a web app to receive push notifications.</p>
|
||||
<p>Some platforms require you to install BOXCAR as a web app to receive push notifications.</p>
|
||||
<% end %>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
@@ -12,19 +12,19 @@
|
||||
<ol>
|
||||
<li>Click <em>Start</em>, then <em>Settings</em>.</li>
|
||||
<li>Go to <em>System > Notification</em>.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the toggle button" %></em> <em>ON</em> for Boxcar.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the toggle button" %></em> <em>ON</em> for BOXCAR.</li>
|
||||
</ol>
|
||||
<% when (platform.firefox? || platform.chrome?) && platform.desktop? %>
|
||||
<ol>
|
||||
<% if platform.windows? %>
|
||||
<li>Click <em>Start</em>, then <em>Settings</em>.</li>
|
||||
<li>Go to <em>System > Notification</em>.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the toggle button" %></em> <em>ON</em> for Boxcar.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the toggle button" %></em> <em>ON</em> for BOXCAR.</li>
|
||||
<% else %>
|
||||
<li>Click <em aria-label="the Apple menu"></em> in the top left.</li>
|
||||
<li>Click <em>System Settings…</em>.</li>
|
||||
<li>Click <em>Notifications</em>.</li>
|
||||
<li>Click <em>Boxcar</em>.</li>
|
||||
<li>Click <em>BOXCAR</em>.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the allow notifications switch" %></em> to <em>Allow notifications</em>.</li>
|
||||
<% end %>
|
||||
</ol>
|
||||
@@ -33,13 +33,13 @@
|
||||
<li>Click <em aria-label="the Apple menu"></em> in the top left.</li>
|
||||
<li>Click <em>System Settings…</em>.</li>
|
||||
<li>Click <em>Notifications</em>.</li>
|
||||
<li>Click <em>Boxcar</em>.</li>
|
||||
<li>Click <em>BOXCAR</em>.</li>
|
||||
<li>Click <em><%= icon_tag "switch", alt: "the allow notifications switch" %></em> to <em>Allow notifications</em>.</li>
|
||||
</ol>
|
||||
<% when (platform.safari? || platform.chrome?) && platform.ios? %>
|
||||
<ol>
|
||||
<li>Open the <em><%= icon_tag "gear", aria: { hidden: "true" } %></em> Settings app.</li>
|
||||
<li>Scroll to and tap <em>Boxcar</em>.</li>
|
||||
<li>Scroll to and tap <em>BOXCAR</em>.</li>
|
||||
<li>Tap <em>Notifications</em>.</li>
|
||||
<li>Tap <em><%= icon_tag "switch", alt: "the allow notifications switch button" %></em> to <em>Allow Notifications</em>.</li>
|
||||
</ol>
|
||||
@@ -48,7 +48,7 @@
|
||||
<li>Open the <em><%= icon_tag "gear", aria: { hidden: "true" } %></em> Settings app.</li>
|
||||
<li>Tap <em>Notifications</em>.</li>
|
||||
<li>Tap <em>App notifications</em>.</li>
|
||||
<li>Scroll to <em>Boxcar</em>.</li>
|
||||
<li>Scroll to <em>BOXCAR</em>.</li>
|
||||
<li>Tap <em><%= icon_tag "switch", alt: "the switch" %></em> to <em>Allow Notifications</em>.</li>
|
||||
</ol>
|
||||
<% else %>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<div class="panel margin-block-double center shadow">
|
||||
<h1 class="font-black txt-x-large margin-none-block-end">You’re unsubscribed</h1>
|
||||
<p class="margin-block-start-half">Thanks, <%= @user.first_name %>! Boxcar won’t send you any more email notifications. If you change your mind you can turn them back on in <%= link_to "Notifications Settings", notifications_settings_path %>.</p>
|
||||
<p class="margin-block-start-half">Thanks, <%= @user.first_name %>! BOXCAR won’t send you any more email notifications. If you change your mind you can turn them back on in <%= link_to "Notifications Settings", notifications_settings_path %>.</p>
|
||||
|
||||
<%= link_to root_path, class: "btn btn--link margin-block-start" do %>
|
||||
<%= icon_tag "arrow-left" %>
|
||||
<span>Back to Boxcar</span>
|
||||
<span>Back to BOXCAR</span>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "<%= [ Account.sole.name, "Boxcar", Rails.env.production? ? nil : Rails.env ].compact.join(" - ") %>",
|
||||
"name": "<%= [ Account.sole.name, "BOXCAR", Rails.env.production? ? nil : Rails.env ].compact.join(" - ") %>",
|
||||
"icons": [
|
||||
{
|
||||
"src": "/app-icon-192.png",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<%= form_with url: search_path, method: :get, class: "search__form flex align-center justify-center gap-half", data: { turbo_frame: "bar-content" } do |form| %>
|
||||
<%= form.label :q, "Search Boxcar", class: "font-weight-black txt-nowrap" %>
|
||||
<%= form.label :q, "Search BOXCAR", class: "font-weight-black txt-nowrap" %>
|
||||
<%= text_field_tag :q, query_terms,
|
||||
class: "search__input input",
|
||||
type: "search",
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<% @page_title = "Choose Account" %>
|
||||
|
||||
<div class="panel shadow center margin-block-double" style="--panel-size: 55ch;">
|
||||
<h1 class="txt-xx-large margin-block-end-double">Boxcar</h1>
|
||||
<h1 class="txt-xx-large margin-block-end-double">BOXCAR</h1>
|
||||
|
||||
<% identity = Identity.find_signed(Current.identity_token.id) %>
|
||||
<% memberships = identity&.memberships %>
|
||||
<% if memberships.present? %>
|
||||
<h2 class="txt-large margin-block-end">Your Boxcar Accounts</h2>
|
||||
<h2 class="txt-large margin-block-end">Your BOXCAR Accounts</h2>
|
||||
<ul class="flex flex-column gap txt-large" style="list-style-type: none; padding: 0;">
|
||||
<% memberships.each do |membership| %>
|
||||
<li>
|
||||
@@ -15,6 +15,6 @@
|
||||
<% end %>
|
||||
</ul>
|
||||
<% else %>
|
||||
<p class="txt-large txt-align-center txt-subtle">You don't have any existing Boxcar accounts.</p>
|
||||
<p class="txt-large txt-align-center txt-subtle">You don't have any existing BOXCAR accounts.</p>
|
||||
<% end %>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<% @page_title = "Sign in" %>
|
||||
|
||||
<div class="panel shadow center margin-block-double <%= "shake" if flash[:alert] %>" style="--panel-size: 55ch;">
|
||||
<h1 class="txt-xx-large margin-block-end-double">Boxcar</h1>
|
||||
<h1 class="txt-xx-large margin-block-end-double">BOXCAR</h1>
|
||||
|
||||
<%= form_with url: session_path, class: "flex flex-column gap txt-large" do |form| %>
|
||||
<div class="flex align-center gap">
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<% end %>
|
||||
|
||||
<div class="panel shadow center">
|
||||
<h1 class="margin-none-block-start margin-block-end-double">Boxcar</h1>
|
||||
<h1 class="margin-none-block-start margin-block-end-double">BOXCAR</h1>
|
||||
|
||||
<%= form_with model: @user, url: join_path(params[:join_code]), class: "flex flex-column gap" do |form| %>
|
||||
<div class="flex align-center gap">
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
<%= render partial: "webhooks/webhook", collection: @page.records %>
|
||||
</ul>
|
||||
<% else %>
|
||||
<p>Webhooks can notify another application when something happens in this Boxcar board. You’ll choose which events to subscribe to and provide a URL to receive the data.</p>
|
||||
<p>For example, you could create a webhook that posts to a Campfire chat in Basecamp when new cards are added to Boxcar.</p>
|
||||
<p>Webhooks can notify another application when something happens in this BOXCAR board. You’ll choose which events to subscribe to and provide a URL to receive the data.</p>
|
||||
<p>For example, you could create a webhook that posts to a Campfire chat in Basecamp when new cards are added to BOXCAR.</p>
|
||||
<%= link_to new_collection_webhook_path, class: "btn btn--link" do %>
|
||||
<%= icon_tag "add" %>
|
||||
<span>Set up a webhook</span>
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div class="flex flex-column gap-half">
|
||||
<%= form.label :url do %>
|
||||
<strong>Payload URL</strong><br>
|
||||
<p class="margin-none txt-x-small txt-subtle">This is the URL for the app that will receive payloads from Boxcar.</p>
|
||||
<p class="margin-none txt-x-small txt-subtle">This is the URL for the app that will receive payloads from BOXCAR.</p>
|
||||
<% end %>
|
||||
<%= form.url_field :url,
|
||||
required: true,
|
||||
|
||||
@@ -7,7 +7,7 @@ class ControllerAuthenticationTest < ActionDispatch::IntegrationTest
|
||||
get cards_path
|
||||
|
||||
assert_response :success
|
||||
assert_dom "p", text: "You don't have any existing Boxcar accounts."
|
||||
assert_dom "p", text: "You don't have any existing BOXCAR accounts."
|
||||
end
|
||||
|
||||
test "access with an account slug but no session redirects to new session" do
|
||||
|
||||
@@ -39,6 +39,6 @@ class Conversation::Message::ResponseGeneratorJobTest < ActiveJob::TestCase
|
||||
|
||||
last_message = conversation.messages.ordered.last
|
||||
assert last_message.assistant?
|
||||
assert_match(/Boxcar is very busy/i, last_message.content.to_plain_text)
|
||||
assert_match(/BOXCAR is very busy/i, last_message.content.to_plain_text)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user