wordmark 0.21.0 → 0.23.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 (248) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -550
  3. data/README.md +60 -44
  4. data/app/assets/fonts/easy/outfit-latin-ext.woff2 +0 -0
  5. data/app/assets/fonts/easy/outfit-latin.woff2 +0 -0
  6. data/app/assets/images/easy/sprite.svg +52 -0
  7. data/app/assets/javascripts/easy/flyer.js +100 -0
  8. data/app/assets/javascripts/easy/konami.js +68 -0
  9. data/app/assets/javascripts/easy/modal.js +48 -0
  10. data/app/assets/javascripts/easy/pin_code.js +43 -0
  11. data/app/assets/javascripts/easy/report_sort.js +44 -0
  12. data/app/assets/javascripts/easy/rotating_placeholder.js +35 -0
  13. data/app/assets/stylesheets/easy/base.css +35 -0
  14. data/app/assets/stylesheets/easy/components.css +388 -0
  15. data/app/assets/stylesheets/easy/layout.css +44 -0
  16. data/app/assets/stylesheets/easy/tokens.css +9 -0
  17. data/app/controllers/wordmark/errors_controller.rb +41 -0
  18. data/app/helpers/wordmark/easy_helper.rb +28 -0
  19. data/app/models/aircraft_avatar.rb +59 -0
  20. data/app/views/easy/_flyer.html.erb +10 -0
  21. data/app/views/easy/_modal.html.erb +14 -0
  22. data/app/views/easy/_pin_code.html.erb +9 -0
  23. data/app/views/easy/_report_head.html.erb +19 -0
  24. data/app/views/easy/mailer/_code.html.erb +67 -0
  25. data/app/views/easy/mailer/_code.text.erb +16 -0
  26. data/app/views/layouts/easy/site.html.erb +50 -0
  27. data/app/views/layouts/wordmark/errors.html.erb +26 -0
  28. data/app/views/wordmark/errors/show.html.erb +15 -0
  29. data/art/blackbox.svg +6 -0
  30. data/art/data.svg +8 -0
  31. data/art/dataplate.svg +12 -0
  32. data/art/drive.svg +6 -0
  33. data/art/hangar.svg +6 -0
  34. data/art/index.html.erb +25 -25
  35. data/art/lens.svg +9 -0
  36. data/art/mirroring.svg +8 -0
  37. data/art/refinery.svg +9 -0
  38. data/art/rollaway.svg +12 -0
  39. data/art/stockroom.svg +12 -0
  40. data/art/tower.svg +12 -0
  41. data/art/wordmark.svg +3 -0
  42. data/config/aircraft_avatars.yml +26 -0
  43. data/lib/wordmark/engine.rb +22 -28
  44. data/lib/wordmark/helpers/heads.rb +6 -6
  45. data/lib/wordmark/marks.rb +14 -4
  46. data/lib/wordmark/version.rb +1 -1
  47. data/lib/wordmark.rb +11 -6
  48. data/public/_headers +4 -8
  49. data/public/bh/js/bh.js +15 -15
  50. data/public/down/{goldrush.html → blackbox.html} +5 -5
  51. data/public/down/{fountain.html → data.html} +5 -5
  52. data/public/down/dataplate.html +87 -0
  53. data/public/down/drive.html +87 -0
  54. data/public/down/{houston.html → hangar.html} +5 -5
  55. data/public/down/lens.html +87 -0
  56. data/public/down/{autopilot.html → mirroring.html} +5 -5
  57. data/public/down/refinery.html +87 -0
  58. data/public/down/rollaway.html +87 -0
  59. data/public/down/stockroom.html +87 -0
  60. data/public/down/tower.html +87 -0
  61. data/public/down/wordmark.html +87 -0
  62. data/public/favicon/blackbox-180.png +0 -0
  63. data/public/favicon/blackbox-192.png +0 -0
  64. data/public/favicon/blackbox-512.png +0 -0
  65. data/public/favicon/blackbox-96.png +0 -0
  66. data/public/favicon/blackbox-dev.svg +6 -0
  67. data/public/favicon/blackbox.ico +0 -0
  68. data/public/favicon/blackbox.svg +6 -0
  69. data/public/favicon/blackbox.webmanifest +12 -0
  70. data/public/favicon/data-180.png +0 -0
  71. data/public/favicon/data-192.png +0 -0
  72. data/public/favicon/data-512.png +0 -0
  73. data/public/favicon/data-96.png +0 -0
  74. data/public/favicon/data-dev.svg +8 -0
  75. data/public/favicon/data.ico +0 -0
  76. data/public/favicon/data.svg +8 -0
  77. data/public/favicon/data.webmanifest +12 -0
  78. data/public/favicon/dataplate-180.png +0 -0
  79. data/public/favicon/dataplate-192.png +0 -0
  80. data/public/favicon/dataplate-512.png +0 -0
  81. data/public/favicon/dataplate-96.png +0 -0
  82. data/public/favicon/dataplate-dev.svg +12 -0
  83. data/public/favicon/dataplate.ico +0 -0
  84. data/public/favicon/dataplate.svg +12 -0
  85. data/public/favicon/dataplate.webmanifest +12 -0
  86. data/public/favicon/drive-180.png +0 -0
  87. data/public/favicon/drive-192.png +0 -0
  88. data/public/favicon/drive-512.png +0 -0
  89. data/public/favicon/drive-96.png +0 -0
  90. data/public/favicon/drive-dev.svg +6 -0
  91. data/public/favicon/drive.ico +0 -0
  92. data/public/favicon/drive.svg +6 -0
  93. data/public/favicon/drive.webmanifest +12 -0
  94. data/public/favicon/hangar-180.png +0 -0
  95. data/public/favicon/hangar-192.png +0 -0
  96. data/public/favicon/hangar-512.png +0 -0
  97. data/public/favicon/hangar-96.png +0 -0
  98. data/public/favicon/hangar-dev.svg +6 -0
  99. data/public/favicon/hangar.ico +0 -0
  100. data/public/favicon/hangar.svg +6 -0
  101. data/public/favicon/hangar.webmanifest +12 -0
  102. data/public/favicon/lens-180.png +0 -0
  103. data/public/favicon/lens-192.png +0 -0
  104. data/public/favicon/lens-512.png +0 -0
  105. data/public/favicon/lens-96.png +0 -0
  106. data/public/favicon/lens-dev.svg +9 -0
  107. data/public/favicon/lens.ico +0 -0
  108. data/public/favicon/lens.svg +9 -0
  109. data/public/favicon/lens.webmanifest +12 -0
  110. data/public/favicon/mirroring-180.png +0 -0
  111. data/public/favicon/mirroring-192.png +0 -0
  112. data/public/favicon/mirroring-512.png +0 -0
  113. data/public/favicon/mirroring-96.png +0 -0
  114. data/public/favicon/mirroring-dev.svg +8 -0
  115. data/public/favicon/mirroring.ico +0 -0
  116. data/public/favicon/mirroring.svg +8 -0
  117. data/public/favicon/mirroring.webmanifest +12 -0
  118. data/public/favicon/refinery-180.png +0 -0
  119. data/public/favicon/refinery-192.png +0 -0
  120. data/public/favicon/refinery-512.png +0 -0
  121. data/public/favicon/refinery-96.png +0 -0
  122. data/public/favicon/refinery-dev.svg +9 -0
  123. data/public/favicon/refinery.ico +0 -0
  124. data/public/favicon/refinery.svg +9 -0
  125. data/public/favicon/refinery.webmanifest +12 -0
  126. data/public/favicon/rollaway-180.png +0 -0
  127. data/public/favicon/rollaway-192.png +0 -0
  128. data/public/favicon/rollaway-512.png +0 -0
  129. data/public/favicon/rollaway-96.png +0 -0
  130. data/public/favicon/rollaway-dev.svg +12 -0
  131. data/public/favicon/rollaway.ico +0 -0
  132. data/public/favicon/rollaway.svg +12 -0
  133. data/public/favicon/rollaway.webmanifest +12 -0
  134. data/public/favicon/stockroom-180.png +0 -0
  135. data/public/favicon/stockroom-192.png +0 -0
  136. data/public/favicon/stockroom-512.png +0 -0
  137. data/public/favicon/stockroom-96.png +0 -0
  138. data/public/favicon/stockroom-dev.svg +12 -0
  139. data/public/favicon/stockroom.ico +0 -0
  140. data/public/favicon/stockroom.svg +12 -0
  141. data/public/favicon/stockroom.webmanifest +12 -0
  142. data/public/favicon/tower-180.png +0 -0
  143. data/public/favicon/tower-192.png +0 -0
  144. data/public/favicon/tower-512.png +0 -0
  145. data/public/favicon/tower-96.png +0 -0
  146. data/public/favicon/tower-dev.svg +12 -0
  147. data/public/favicon/tower.ico +0 -0
  148. data/public/favicon/tower.svg +12 -0
  149. data/public/favicon/tower.webmanifest +12 -0
  150. data/public/favicon/wordmark-180.png +0 -0
  151. data/public/favicon/wordmark-192.png +0 -0
  152. data/public/favicon/wordmark-512.png +0 -0
  153. data/public/favicon/wordmark-96.png +0 -0
  154. data/public/favicon/wordmark-dev.svg +3 -0
  155. data/public/favicon/wordmark.ico +0 -0
  156. data/public/favicon/wordmark.svg +3 -0
  157. data/public/favicon/wordmark.webmanifest +12 -0
  158. data/public/index.html +49 -33
  159. data/public/logo/blackbox.png +0 -0
  160. data/public/logo/blackbox.svg +6 -0
  161. data/public/logo/data.png +0 -0
  162. data/public/logo/data.svg +8 -0
  163. data/public/logo/dataplate.png +0 -0
  164. data/public/logo/dataplate.svg +12 -0
  165. data/public/logo/drive.png +0 -0
  166. data/public/logo/drive.svg +6 -0
  167. data/public/logo/hangar.png +0 -0
  168. data/public/logo/hangar.svg +6 -0
  169. data/public/logo/lens.png +0 -0
  170. data/public/logo/lens.svg +9 -0
  171. data/public/logo/mirroring.png +0 -0
  172. data/public/logo/mirroring.svg +8 -0
  173. data/public/logo/refinery.png +0 -0
  174. data/public/logo/refinery.svg +9 -0
  175. data/public/logo/rollaway.png +0 -0
  176. data/public/logo/rollaway.svg +12 -0
  177. data/public/logo/stockroom.png +0 -0
  178. data/public/logo/stockroom.svg +12 -0
  179. data/public/logo/tower.png +0 -0
  180. data/public/logo/tower.svg +12 -0
  181. data/public/logo/wordmark.png +0 -0
  182. data/public/logo/wordmark.svg +3 -0
  183. metadata +173 -72
  184. data/art/autopilot.svg +0 -9
  185. data/art/fountain.svg +0 -9
  186. data/art/goldrush.svg +0 -7
  187. data/art/houston.svg +0 -8
  188. data/lib/wordmark/down.rb +0 -19
  189. data/public/favicon/autopilot-180.png +0 -0
  190. data/public/favicon/autopilot-192.png +0 -0
  191. data/public/favicon/autopilot-512.png +0 -0
  192. data/public/favicon/autopilot-96.png +0 -0
  193. data/public/favicon/autopilot-dev.svg +0 -9
  194. data/public/favicon/autopilot.ico +0 -0
  195. data/public/favicon/autopilot.svg +0 -9
  196. data/public/favicon/autopilot.webmanifest +0 -12
  197. data/public/favicon/fountain-180.png +0 -0
  198. data/public/favicon/fountain-192.png +0 -0
  199. data/public/favicon/fountain-512.png +0 -0
  200. data/public/favicon/fountain-96.png +0 -0
  201. data/public/favicon/fountain-dev.svg +0 -9
  202. data/public/favicon/fountain.ico +0 -0
  203. data/public/favicon/fountain.svg +0 -9
  204. data/public/favicon/fountain.webmanifest +0 -12
  205. data/public/favicon/goldrush-180.png +0 -0
  206. data/public/favicon/goldrush-192.png +0 -0
  207. data/public/favicon/goldrush-512.png +0 -0
  208. data/public/favicon/goldrush-96.png +0 -0
  209. data/public/favicon/goldrush-dev.svg +0 -7
  210. data/public/favicon/goldrush.ico +0 -0
  211. data/public/favicon/goldrush.svg +0 -7
  212. data/public/favicon/goldrush.webmanifest +0 -12
  213. data/public/favicon/houston-180.png +0 -0
  214. data/public/favicon/houston-192.png +0 -0
  215. data/public/favicon/houston-512.png +0 -0
  216. data/public/favicon/houston-96.png +0 -0
  217. data/public/favicon/houston-dev.svg +0 -8
  218. data/public/favicon/houston.ico +0 -0
  219. data/public/favicon/houston.svg +0 -8
  220. data/public/favicon/houston.webmanifest +0 -12
  221. data/public/logo/autopilot.png +0 -0
  222. data/public/logo/autopilot.svg +0 -9
  223. data/public/logo/fountain.png +0 -0
  224. data/public/logo/fountain.svg +0 -9
  225. data/public/logo/goldrush.png +0 -0
  226. data/public/logo/goldrush.svg +0 -7
  227. data/public/logo/houston.png +0 -0
  228. data/public/logo/houston.svg +0 -8
  229. data/public/v0.21.0/bh/css/bh.css +0 -1
  230. data/public/v0.21.0/bh/js/bh.js +0 -152
  231. data/public/v0.21.0/bh/theme/bootstrap.css +0 -10
  232. data/public/v0.21.0/bh/theme/dawn.css +0 -189
  233. data/public/v0.21.0/bh/theme/dracula.css +0 -189
  234. data/public/v0.21.0/bh/theme/gruvbox.css +0 -189
  235. data/public/v0.21.0/bh/theme/monokai.css +0 -190
  236. data/public/v0.21.0/bh/theme/nord.css +0 -189
  237. data/public/v0.21.0/bh/theme/one_dark.css +0 -189
  238. data/public/v0.21.0/bh/theme/solarized.css +0 -188
  239. data/public/v0.21.0/bh/theme/tokyo_night.css +0 -189
  240. data/public/v0.21.0/css/easyfaa.css +0 -1
  241. data/public/v0.21.0/font/bootstrap-icons-FRBPO3H7.woff2 +0 -0
  242. data/public/v0.21.0/font/ibm-plex-sans-500-latin-LA7QXWWL.woff2 +0 -0
  243. data/public/v0.21.0/font/ibm-plex-sans-500-latin-ext-X4QHZICY.woff2 +0 -0
  244. data/public/v0.21.0/font/ibm-plex-sans-500-latin-ext.woff2 +0 -0
  245. data/public/v0.21.0/font/ibm-plex-sans-500-latin.woff2 +0 -0
  246. data/public/v0.21.0/font/ibm-plex-sans-500-vietnamese-24B6BSND.woff2 +0 -0
  247. data/public/v0.21.0/font/ibm-plex-sans-500-vietnamese.woff2 +0 -0
  248. data/public/v0.21.0/js/easyfaa.js +0 -1
@@ -2,52 +2,46 @@
2
2
  require 'rails'
3
3
 
4
4
  module Wordmark
5
- # Hooks the gem into a host app: serves its files, its error pages and its helpers.
5
+ # Hooks the gem into a host app: serves its files, its error pages and its helpers. The easy
6
+ # design system's stylesheets, scripts, fonts and icons are under `app/assets`, which the
7
+ # host's asset pipeline reads as its own: `stylesheet_link_tag "easy/tokens"`.
6
8
  class Engine < ::Rails::Engine
7
9
  # The folders the design site publishes, served from this gem at the same paths so a
8
- # page on an app and a page on the site link one file — this version's copy under its
9
- # own prefix among them. Each keeps its slash: `Rack::Static` matches on `start_with?`,
10
- # and `/page` would swallow `/pages` itself.
11
- PREFIXES = %W[/css/ /js/ /theme/ /font/ /logo/ /favicon/ /page/ /v#{VERSION}/].freeze
10
+ # page on an app and a page on the site link one file. Each keeps its slash:
11
+ # `Rack::Static` matches on `start_with?`, and `/page` would swallow `/pages` itself.
12
+ PREFIXES = %w[/css/ /js/ /theme/ /font/ /logo/ /favicon/ /page/].freeze
12
13
 
13
- # An unversioned file is asked for again on every full load and answered `304 Not
14
- # Modified` while it stands, since its URL never changes between versions. A font, whose
15
- # name carries a hash of its bytes, and anything under this version's prefix never change
16
- # at all, so a browser may keep them for good.
14
+ # A file is asked for again on every full load and answered `304 Not Modified` while it
15
+ # stands, since its URL never changes between versions. A font, whose name carries a hash
16
+ # of its bytes, never changes at all, so a browser may keep it for good.
17
17
  HEADERS = [
18
18
  [:all, { 'cache-control' => 'no-cache' }],
19
19
  ['/font/', { 'cache-control' => 'public, max-age=31536000, immutable' }],
20
- ['/v', { 'cache-control' => 'public, max-age=31536000, immutable' }],
21
20
  ].freeze
22
21
 
23
- # What a file is kept for while the gem is being worked on: not at all, since the
24
- # version's copy is rewritten under the same name until it is released, and a browser
25
- # told to keep it for a year would show yesterday's stylesheet on today's page.
26
- DEVELOPMENT_HEADERS = HEADERS.first 1
27
-
28
22
  # Before `Rails::Rack::Logger`, so fetching a stylesheet writes no `Started GET` line, and
29
23
  # cascading, so a host route under one of these prefixes still answers.
30
24
  initializer 'wordmark.assets' do |app|
31
- headers = Rails.env.development? ? DEVELOPMENT_HEADERS : HEADERS
32
25
  app.middleware.insert_before Rails::Rack::Logger, Rack::Static,
33
26
  urls: PREFIXES, root: Engine.root.join('public').to_s,
34
- header_rules: headers, cascade: true
35
- end
36
-
37
- # The branded error pages, read by status from `public/page` the way Rails reads a host's
38
- # own `public/`, unless the host has already named an app of its own.
39
- initializer 'wordmark.exceptions' do |app|
40
- app.config.exceptions_app ||=
41
- ActionDispatch::PublicExceptions.new Engine.root.join('public/page').to_s
27
+ header_rules: HEADERS, cascade: true
42
28
  end
43
29
 
44
- # The page a host shows while it is down, at the path Heroku and a reader expect.
45
- initializer 'wordmark.down' do |app|
46
- app.middleware.insert_before Rails::Rack::Logger, Down
30
+ # The same page for 400, 404, 422 and 500 on every app (Wordmark::ErrorsController), unless
31
+ # the host has already named an exceptions app of its own, and the page it shows while it
32
+ # is down at the path Heroku and a reader expect.
33
+ initializer 'wordmark.errors' do |app|
34
+ app.config.exceptions_app ||= app.routes
35
+ app.routes.prepend do
36
+ %w[400 404 422 500].each do |status|
37
+ get status, to: 'wordmark/errors#show', defaults: { status: status.to_i }
38
+ end
39
+ get 'down.html', to: 'wordmark/errors#down', format: false
40
+ end
47
41
  end
48
42
 
49
43
  initializer 'wordmark.helpers' do
50
- ActiveSupport.on_load(:action_view) { include Wordmark::Helpers }
44
+ ActiveSupport.on_load(:action_view) { include Wordmark::Helpers, Wordmark::EasyHelper }
51
45
  end
52
46
  end
53
47
  end
@@ -8,8 +8,8 @@ module Wordmark
8
8
 
9
9
  # The stylesheet and the script every page needs, and the icons `app` is known by —
10
10
  # this app unless said, since a page a customer reads may wear the house's mark rather
11
- # than the app's. Both files at this version's own path, which never changes and so is
12
- # kept for a year. A page refresh Turbo is sent morphs the page in place and keeps the
11
+ # than the app's. Both files at a path no release changes, asked for again on every
12
+ # full load. A page refresh Turbo is sent morphs the page in place and keeps the
13
13
  # scroll, so an answer landing in a thread leaves the reader where they were.
14
14
  def easyfaa_head_tags(app = Wordmark.app)
15
15
  safe_join [
@@ -33,12 +33,12 @@ module Wordmark
33
33
  ], INDENT
34
34
  end
35
35
 
36
- # The house's own two files, for a page that already links bh's. At this version's own
37
- # path, which never changes and so is kept for a year.
36
+ # The house's own two files, for a page that already links bh's. At the same
37
+ # path in every release, so a browser asks again on a full load and is answered 304.
38
38
  def easyfaa_tags
39
39
  safe_join [
40
- tag.link(rel: 'stylesheet', href: "/v#{VERSION}/css/easyfaa.css"),
41
- tag.script('', type: 'module', src: "/v#{VERSION}/js/easyfaa.js"),
40
+ tag.link(rel: 'stylesheet', href: '/css/easyfaa.css'),
41
+ tag.script('', type: 'module', src: '/js/easyfaa.js'),
42
42
  ], INDENT
43
43
  end
44
44
 
@@ -4,13 +4,23 @@ module Wordmark
4
4
  # and reaches IBM Plex Sans's ascender. Every drawing is a different shape inside its 512
5
5
  # grid, so equal sizes never align; these do. The house's own is the one exception: 0.8em
6
6
  # and dropped 0.16em, so the horizon centres on the lowercase rather than standing on it.
7
+ # A wide, short mark (blackbox, dataplate, wordmark) is held to about 50px, or
8
+ # reaching the ascender would make it twice as wide as its neighbours.
7
9
  MARKS = {
8
- autopilot: [46.36, 5.42],
10
+ blackbox: [50.00, 8.40],
9
11
  cube: [38.96, 1.72],
12
+ data: [41.71, 3.10],
13
+ dataplate: [50.00, 8.40],
10
14
  design: [50.47, 8.94],
15
+ drive: [41.84, 2.45],
11
16
  easyfaa: [38.4, 7.68],
12
- fountain: [39.54, 2.01],
13
- goldrush: [49.50, 11.02],
14
- houston: [39.73, 2.11],
17
+ hangar: [41.71, 3.10],
18
+ lens: [45.02, 4.75],
19
+ mirroring: [38.86, 1.67],
20
+ refinery: [43.30, 3.21],
21
+ rollaway: [40.24, 1.73],
22
+ stockroom: [38.86, 1.67],
23
+ tower: [38.86, 1.67],
24
+ wordmark: [50.00, 12.40],
15
25
  }.freeze
16
26
  end
@@ -1,4 +1,4 @@
1
1
  module Wordmark
2
2
  # Version of the gem, read by the gemspec and by hosts checking compatibility.
3
- VERSION = '0.21.0'
3
+ VERSION = '0.23.0'
4
4
  end
data/lib/wordmark.rb CHANGED
@@ -1,15 +1,20 @@
1
1
  require 'bh'
2
+ require 'active_support/core_ext/module/attribute_accessors'
2
3
  require_relative 'wordmark/version'
3
4
  require_relative 'wordmark/marks'
4
5
  require_relative 'wordmark/copy'
5
- require_relative 'wordmark/down'
6
6
  require_relative 'wordmark/helpers'
7
7
  require_relative 'wordmark/engine'
8
8
 
9
- # easyfaa's front end: the stylesheet and script every page loads — bh's Bootstrap 6
10
- # with the house's own layer over it — the marks every app is known by, and the helpers that
11
- # draw a head, a logo or a signup page the same way everywhere.
9
+ # easyFAA's front end: the easy design system every app's pages are drawn with (its layout,
10
+ # stylesheets, scripts, fonts, icons and partials), the error pages every app shows, the marks
11
+ # every app is known by, and the helpers that draw them the same way everywhere.
12
12
  module Wordmark
13
+ # The site an error page names, in its title, its one link and the maintenance message, as
14
+ # `[name, url]` for the request: an app that is not easyFAA's own names itself,
15
+ # `Wordmark.site = ->(request) { ['easyAnnual', 'https://easyannual.com/'] }`.
16
+ mattr_accessor :site, default: ->(_request) { ['easyFAA', 'https://easyfaa.com/'] }
17
+
13
18
  # The form every easyfaa page is written with, which is bh's: the house dresses no
14
19
  # field differently, so this name and `Bh::FormBuilder` are one builder.
15
20
  FormBuilder = Bh::FormBuilder
@@ -19,8 +24,8 @@ module Wordmark
19
24
  Message = Bh::Message
20
25
 
21
26
  # Which of the family this host is, read off the Rails application's own name — the
22
- # `Goldrush` of `Goldrush::Application` — and the house itself for any app not in `MARKS`.
23
- # What a tab wears, what a logo says and whose page answers `/down.html`.
27
+ # `Tower` of `Tower::Application` — and the house itself for any app not in `MARKS`.
28
+ # What a tab wears and what a logo says.
24
29
  def self.app
25
30
  name = Rails.application.class.module_parent_name.downcase.to_sym
26
31
  MARKS.key?(name) ? name : :easyfaa
data/public/_headers CHANGED
@@ -1,11 +1,11 @@
1
1
  # A page on another origin loads the script as a module and the stylesheet's font across
2
- # origins, both of which the browser refuses without this. Cloudflare Pages adds no CORS.
2
+ # origins, both of which the browser refuses without this. Cloudflare adds no CORS.
3
3
  /*
4
4
  Access-Control-Allow-Origin: *
5
5
 
6
6
  # An unversioned file follows the latest release, so a browser asks for it again on every
7
- # load and is answered 304 while it stands. Pages would otherwise let one be kept for four
8
- # hours, and a page drawn against a new bundle would run the old one until they were up.
7
+ # load and is answered 304 while it stands, so a page drawn against a new bundle never runs
8
+ # the old one.
9
9
  /css/*
10
10
  Cache-Control: public, max-age=0, must-revalidate
11
11
  /js/*
@@ -17,12 +17,8 @@
17
17
  /page/*
18
18
  Cache-Control: public, max-age=0, must-revalidate
19
19
 
20
- # A versioned copy never changes, so a browser may keep it for a year and the edge for good.
21
- /v*
22
- Cache-Control: public, max-age=31536000, immutable
23
-
24
20
  # A font's name carries a hash of its bytes, so a browser may keep it for good; everything
25
- # else keeps Pages' default, which is to revalidate on every load and answer 304 while it
21
+ # else keeps Cloudflare's default, which is to revalidate on every load and answer 304 while it
26
22
  # stands, so the URL of a file never has to change between versions.
27
23
  /font/*
28
24
  Cache-Control: public, max-age=31536000, immutable