From cacae5730ea41614249d848057aa30c66ea591c2 Mon Sep 17 00:00:00 2001 From: 24c02 <163450896+24c02@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:14:39 -0500 Subject: [PATCH] =?UTF-8?q?=E2=8C=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/components/static_pages/home.rb | 10 +- app/components/static_pages/logged_out.rb | 8 +- app/controllers/static_pages_controller.rb | 1 + app/services/flavor_text_service.rb | 179 +++++++++++++++++++++ app/views/layouts/application.html.erb | 10 ++ app/views/static_pages/home.html.erb | 4 +- 6 files changed, 204 insertions(+), 8 deletions(-) create mode 100644 app/services/flavor_text_service.rb diff --git a/app/components/static_pages/home.rb b/app/components/static_pages/home.rb index e4557fa..e7435e7 100644 --- a/app/components/static_pages/home.rb +++ b/app/components/static_pages/home.rb @@ -1,9 +1,10 @@ # frozen_string_literal: true class Components::StaticPages::Home < Components::StaticPages::Base - def initialize(stats:, user:) + def initialize(stats:, user:, flavor_text:) @stats = stats @user = user + @flavor_text = flavor_text end def view_template @@ -16,7 +17,7 @@ class Components::StaticPages::Home < Components::StaticPages::Base private - attr_reader :stats, :user + attr_reader :stats, :user, :flavor_text def header_section header(style: "display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 16px; padding-bottom: 24px; margin-bottom: 24px; border-bottom: 1px solid var(--borderColor-default, #d0d7de);") do @@ -25,7 +26,10 @@ class Components::StaticPages::Home < Components::StaticPages::Base plain "Welcome back, " strong { user&.name || "friend" } end - h1(style: "font-size: 2rem; font-weight: 300; margin: 0;") { "Your CDN Stash" } + h1(style: "font-size: 2rem; font-weight: 300; margin: 0;") { "Hack Club CDN" } + div(style: "margin-top: 8px;") do + render(Primer::Beta::Label.new(scheme: :secondary)) { flavor_text } + end end div(style: "display: flex; gap: 8px; flex-wrap: wrap;") do diff --git a/app/components/static_pages/logged_out.rb b/app/components/static_pages/logged_out.rb index 6f5e574..f87491c 100644 --- a/app/components/static_pages/logged_out.rb +++ b/app/components/static_pages/logged_out.rb @@ -1,8 +1,9 @@ # frozen_string_literal: true class Components::StaticPages::LoggedOut < Components::StaticPages::Base - def initialize(stats:) + def initialize(stats:, flavor_text:) @stats = stats + @flavor_text = flavor_text end def view_template @@ -15,7 +16,7 @@ class Components::StaticPages::LoggedOut < Components::StaticPages::Base private - attr_reader :stats + attr_reader :stats, :flavor_text def header_section header(style: "display: flex; justify-content: space-between; align-items: flex-start; flex-wrap: wrap; gap: 16px; padding-bottom: 24px; margin-bottom: 24px; border-bottom: 1px solid var(--borderColor-default, #d0d7de);") do @@ -24,9 +25,10 @@ class Components::StaticPages::LoggedOut < Components::StaticPages::Base plain "Hack Club CDN" sup(style: "font-size: 0.5em; margin-left: 4px;") { "v4" } end - p(style: "color: var(--fgColor-muted, #656d76); margin: 0; max-width: 600px;") do + p(style: "color: var(--fgColor-muted, #656d76); margin: 0 0 8px; max-width: 600px;") do plain "File hosting for Hack Clubbers." end + render(Primer::Beta::Label.new(scheme: :secondary)) { flavor_text } end div(style: "display: flex; gap: 8px; flex-wrap: wrap;") do diff --git a/app/controllers/static_pages_controller.rb b/app/controllers/static_pages_controller.rb index 8042e07..75b21fb 100644 --- a/app/controllers/static_pages_controller.rb +++ b/app/controllers/static_pages_controller.rb @@ -2,6 +2,7 @@ class StaticPagesController < ApplicationController skip_before_action :require_authentication!, only: [:home] def home + @flavor_text = FlavorTextService.new(user: current_user).generate if signed_in? @user_stats = CDNStatsService.user_stats(current_user) else diff --git a/app/services/flavor_text_service.rb b/app/services/flavor_text_service.rb new file mode 100644 index 0000000..2c65c80 --- /dev/null +++ b/app/services/flavor_text_service.rb @@ -0,0 +1,179 @@ +# frozen_string_literal: true + +class FlavorTextService + include ActionView::Helpers::NumberHelper + + def initialize(user: nil, env: Rails.env, deterministic: true) + @user = user + @env = env + @seed = deterministic ? Time.now.to_i / 5.minutes : Random.new_seed + @random = Random.new(@seed) + end + + def generate + flavor_text = sample + flavor_text = flavor_text.call if flavor_text.respond_to? :call + + flavor_text + end + + def flavor_texts + [ + "bytes bytes bytes bytes bytes", + "A hard drive stuffed with cat photos", + "The Hack Foundation dba The File Store", + "Open on weekends", + "Open on holidays", + "please don't hack", + "Contentedly Delivering Nonsense", + "Cool Dino Network", + "Compressed Data Nuggets", + "Cozy Digital Nest", + "Open late", + "Now in color!", + "Filmed on location", + "Soon to be a major blockchain!", + "As seen on the internet", + "Most viewed site on this domain!", + "Coming to a browser near you", + "#{@random.rand 4..9}0% bug free!", + "#{@random.rand 1..4}0% fewer bugs!", + 'Now with "code"', + "Holds lots of bytes", + "Educational!", + "Don't use while driving", + "Support local file hosting!", + "Take frequent breaks!", + "Technically good!", + "Operating at a loss since 2025!", + "Does anyone actually read this?", + "Like and subscribe!", + "As seen on cdn.hackclub.com", + "As seen on hackclub.com", + "Now running in production!", + "put files in computer", + "TODO: get that bread", + "Coming soon to a screen near your face", + "Coming soon to a screen near you", + "As seen on the internet", + "Operating at a loss so you don't have to", + "It holds files!", + "uwu", + "owo", + "ovo", + "An important part of this nutritional breakfast", + "By people with files, for people with files", + 'Made using "files"', + "Chosen #1 by dinosaurs everywhere", + "IT departments HATE them", + "Congratulations, you are the #{number_with_delimiter(10**@random.rand(1..5))}th visitor!", + "You've got this", + "Don't forget to drink water!", + "Putting the 'fun' in 'upload'", + "Putting the 'fun' in 'cloud storage'", + "Putting the 'do' in 'download'", + "Putting the 'based' in 'cloud-based hosting'", + "Putting the 'host' in 'ghost'", + "Putting the 'sus' in 'sustainable bandwidth'", + "Open on weekdays!", + "Open on #{Date.today.strftime("%A")}s", + "??? storage!", + "Did you see the size of that #{%w[image video file].sample(random: @random)}?!", + "Guess how much it costs to run this thing!", + "Bytes served fresh daily by Cloudflare", + "Running with Ruby on Rails #{Rails.gem_version.canonical_segments.first}", + "Now with 1% downtime!", + "Achievement unlocked!", + "#{@random.rand(10..50)},#{@random.rand(100..999).to_s.rjust(3, '0')} lines of code", + "Your move, Dropbox", + "If you can read this, the page's status code is 200", + "If you can read this, the page has loaded", + "Now go and upload yourself something nice", + "[Insert splash text here]", + "Condemned by the sheriff of storage", + "Coded on location", + 'Voted "3rd"', + "You are now breathing manually", + "If you can read this, thanks!", + "(or similar product)", + "[OK]", + "tell your parents it's educational", + "You found the 3rd Easter egg on the site", + "The best site you're using right now", + "It Is What It Is", + "Made in Vermont, with love", + "Your move S3!", + "Flash plugin failed to load", + "Upload, they said", + "U want sum storage?", + "Check the back of this page for an exclusive promo code!", + "You've found the 5th easter egg on the site!", + "A folder is fine too", + "Welcome to #{%w[data storage].sample(random: @random)} town, population: you", + "So... what's your favorite file format?", + "If you can read this you've got tiny eyes".html_safe, + "Page loaded in: < 24 hrs (I hope)", + "Old and improved!", + "Newly loaded!", + "Refreshing! (if you keep hitting ⌘+R)", + "Recommended by people somewhere!", + "Recommended by people in some places!", + "Recommended by hackers on this site!", + "Recommended by me!", + "Recommended by Hack Club!", + "Recommended by the recommend-o-tron 3000", + "Recommended! (probably)", + "Please stow your files in the upright and locked position", + "Loaded in #{@random.rand(10..35)}ms... jk– i don't actually know how long it took", + "Loaded in #{@random.rand(10..35)}ms... jk– i can't count", + "Turns out it's hard to make one of these things", + "TODO: come up with some actual jokes for this box", + "asdgfhjdk I'm out of jokes", + "Send your jokes to nora@hackclub.com", + "You're looking great today :)", + "Great! You're here!", + "You need to wake up", + "you need to wake up! Pinch yourself", + "stop dreaming, you need to wake up!", + "Are you suuuuure you aren't a robot?", + "Show emotion here if you aren't a robot", + "Your ad here!", + "Are you feeling lucky?", + "...and you can take that to the cloud", + "Ever just wonder... why?", + "Redstone update out now!", + "educational edition", + "Where's the file lebowski?!", + "We put the 'fun' in 'cloud storage' (there isn't any)", + "Not responsible for any major data loss!", + "In today's internet?!", + "Send us your best haiku!", + "«⋄⇠◇«─◆─»⇢$$$⇠«─◆─»◇⇢⋄»", + "¸¸.•*📁*•.¸¸¸.•*📁*•.¸¸¸.•*📁*•.¸¸¸.•*📁*•.¸", + "◥◤◢◤◢📁📁📁◣◥◣◥◤", + "store no evil", + "byte me", + "not running on the blockchain!", + "not available offline!", + "as seen online", + "online only!", + "new strawberry flavor!", + "same classic taste", + "📁📁📁".html_safe, + -> { "#{@random.rand(5..50)} users online" }, + "Raccoon-tested, dinosaur-approved.", + "original recipe!", + "now sugar-free!", + "low-sodium edition", + 'we put the ":3" in "S3"!', + "do not adjust your monitor.", + "only #{@random.rand(5..50)} missing #{["file", "files"].sample(random: @random)}!", + ] + end + + private + + def sample + flavor_texts.sample(random: @random) + end +end \ No newline at end of file diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index f9c1879..9ad7df4 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -35,6 +35,16 @@ <%= render(Components::HeaderBar.new) if signed_in? %> + <% if flash[:notice] || flash[:alert] %> +
+ <% if flash[:notice] %> + <%= render(Primer::Beta::Flash.new(scheme: :success, icon: :check)) { flash[:notice] } %> + <% end %> + <% if flash[:alert] %> + <%= render(Primer::Beta::Flash.new(scheme: :danger, icon: :alert)) { flash[:alert] } %> + <% end %> +
+ <% end %> <%= yield %> diff --git a/app/views/static_pages/home.html.erb b/app/views/static_pages/home.html.erb index a4ad898..5af0363 100644 --- a/app/views/static_pages/home.html.erb +++ b/app/views/static_pages/home.html.erb @@ -1,5 +1,5 @@ <% if signed_in? %> - <%= render Components::StaticPages::Home.new(stats: @user_stats, user: current_user) %> + <%= render Components::StaticPages::Home.new(stats: @user_stats, user: current_user, flavor_text: @flavor_text) %> <% else %> - <%= render Components::StaticPages::LoggedOut.new(stats: @global_stats) %> + <%= render Components::StaticPages::LoggedOut.new(stats: @global_stats, flavor_text: @flavor_text) %> <% end %> \ No newline at end of file