diff --git a/app/actions/decks/generate.rb b/app/actions/decks/generate.rb
index ad7ba48..8feadec 100644
--- a/app/actions/decks/generate.rb
+++ b/app/actions/decks/generate.rb
@@ -7,6 +7,8 @@ module ClashDeckGenerator2
include Deps[view: "views.home.index"]
def handle(_req, res)
+ res.headers.delete("Content-Security-Policy")
+
roles_repo = ClashDeckGenerator2::Services::CardRolesRepository.new
cards_repo = ClashDeckGenerator2::Repos::CardsRepo.new
diff --git a/app/actions/home/index.rb b/app/actions/home/index.rb
index ee78d0d..0af8231 100644
--- a/app/actions/home/index.rb
+++ b/app/actions/home/index.rb
@@ -4,7 +4,8 @@ module ClashDeckGenerator2
module Actions
module Home
class Index < ClashDeckGenerator2::Action
- def handle(_req, _res)
+ def handle(_req, res)
+ res.headers.delete("Content-Security-Policy")
end
end
end
diff --git a/app/templates/layouts/app.html.erb b/app/templates/layouts/app.html.erb
index b27c83f..6f830e3 100644
--- a/app/templates/layouts/app.html.erb
+++ b/app/templates/layouts/app.html.erb
@@ -1,11 +1,209 @@
-
+
-
-
- Clash deck generator2
+
+
+ <%= content_for(:title) { "Генератор колод — Clash Royale" } %>
+
+ <%# Tailwind CSS v4 via CDN %>
+
+
+ <%# Monrope font via CDN %>
+
+
+
+
+
-
- <%= yield %>
+
+
+
+ <%# ── Верхняя строка с вкладками (имитация VS Code) ── %>
+
+
+
+
+ deck_builder.rb
+
+
+
+
+
+ <%# ── Основная область ── %>
+
+ <%= yield %>
+
+
+ <%# ── Строка состояния ── %>
+
+
+
+
+ Clash Royale
+
+
UTF-8
+
ERB
+
+
+ Hanami 2.3
+ Tailwind 4
+
+
+
-
\ No newline at end of file
+
diff --git a/config/app.rb b/config/app.rb
index 75462d1..361782e 100644
--- a/config/app.rb
+++ b/config/app.rb
@@ -4,5 +4,8 @@ require "hanami"
module ClashDeckGenerator2
class App < Hanami::App
+ config do
+ config.actions.content_security_policy = false
+ end
end
end
\ No newline at end of file
diff --git a/config/db/seeds/champion.rb b/config/db/seeds/champion.rb
index 3cfea14..a1c112f 100644
--- a/config/db/seeds/champion.rb
+++ b/config/db/seeds/champion.rb
@@ -1,12 +1,12 @@
# frozen_string_literal: true
CHAMPION_CARDS = [
- { name: "Little Prince", elixir_cost: 3, rarity: "champion", type: "troop", is_meta: 1 },
- { name: "Golden Knight", elixir_cost: 4, rarity: "champion", type: "troop", is_meta: 1 },
+ { name: "Little Prince", elixir_cost: 3, rarity: "champion", type: "troop", is_meta: 0 },
+ { name: "Golden Knight", elixir_cost: 4, rarity: "champion", type: "troop", is_meta: 0 },
{ name: "Skeleton King", elixir_cost: 4, rarity: "champion", type: "troop", is_meta: 1 },
- { name: "Mighty Miner", elixir_cost: 4, rarity: "champion", type: "troop", is_meta: 1 },
- { name: "Archer Queen", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 1 },
- { name: "Goblinstein", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 0 },
- { name: "Monk", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 1 },
+ { name: "Mighty Miner", elixir_cost: 4, rarity: "champion", type: "troop", is_meta: 0 },
+ { name: "Archer Queen", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 0 },
+ { name: "Goblinstein", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 1 },
+ { name: "Monk", elixir_cost: 5, rarity: "champion", type: "troop", is_meta: 0 },
{ name: "Boss Bandit", elixir_cost: 6, rarity: "champion", type: "troop", is_meta: 0 }
-].freeze
\ No newline at end of file
+ ].freeze
\ No newline at end of file
diff --git a/config/db/seeds/evo.rb b/config/db/seeds/evo.rb
index 688d82b..aa2c622 100644
--- a/config/db/seeds/evo.rb
+++ b/config/db/seeds/evo.rb
@@ -4,38 +4,38 @@ EVOLUTION_CARDS = [
{ name: "Archers Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
{ name: "Baby Dragon Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
{ name: "Barbarians Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Battle Ram Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Battle Ram Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
{ name: "Bats Evolution", elixir_cost: 2, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Bomber Evolution", elixir_cost: 2, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Bomber Evolution", elixir_cost: 2, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Cannon Evolution", elixir_cost: 3, rarity: "evolution", type: "building", is_meta: 0 },
{ name: "Dart Goblin Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Electro Dragon Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Electro Dragon Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Executioner Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Firecracker Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Firecracker Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Furnace Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 0 },
{ name: "Giant Snowball Evolution", elixir_cost: 2, rarity: "evolution", type: "spell", is_meta: 0 },
- { name: "Goblin Barrel Evolution", elixir_cost: 3, rarity: "evolution", type: "spell", is_meta: 1 },
- { name: "Goblin Cage Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 0 },
- { name: "Goblin Drill Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 1 },
+ { name: "Goblin Barrel Evolution", elixir_cost: 3, rarity: "evolution", type: "spell", is_meta: 0 },
+ { name: "Goblin Cage Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 1 },
+ { name: "Goblin Drill Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 0 },
{ name: "Goblin Giant Evolution", elixir_cost: 6, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Hunter Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Ice Spirit Evolution", elixir_cost: 1, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Ice Spirit Evolution", elixir_cost: 1, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Inferno Dragon Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Knight Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Lumberjack Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Mega Knight Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Mortar Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 0 },
- { name: "Musketeer Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "P.E.K.K.A Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Royal Ghost Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Knight Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Lumberjack Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Mega Knight Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Mortar Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 1 },
+ { name: "Musketeer Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "P.E.K.K.A Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Royal Ghost Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Royal Giant Evolution", elixir_cost: 6, rarity: "evolution", type: "troop", is_meta: 1 },
{ name: "Royal Hogs Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Royal Recruits Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Royal Recruits Evolution", elixir_cost: 7, rarity: "evolution", type: "troop", is_meta: 1 },
{ name: "Skeleton Army Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Skeleton Barrel Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 0 },
- { name: "Skeletons Evolution", elixir_cost: 1, rarity: "evolution", type: "troop", is_meta: 1 },
- { name: "Tesla Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 1 },
- { name: "Valkyrie Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Skeleton Barrel Evolution", elixir_cost: 3, rarity: "evolution", type: "troop", is_meta: 1 },
+ { name: "Skeletons Evolution", elixir_cost: 1, rarity: "evolution", type: "troop", is_meta: 0 },
+ { name: "Tesla Evolution", elixir_cost: 4, rarity: "evolution", type: "building", is_meta: 0 },
+ { name: "Valkyrie Evolution", elixir_cost: 4, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Wall Breakers Evolution", elixir_cost: 2, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Witch Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
{ name: "Wizard Evolution", elixir_cost: 5, rarity: "evolution", type: "troop", is_meta: 0 },
diff --git a/config/db/seeds/rare.rb b/config/db/seeds/rare.rb
index 25aed0d..eb13e6c 100644
--- a/config/db/seeds/rare.rb
+++ b/config/db/seeds/rare.rb
@@ -2,37 +2,37 @@
RARE_CARDS = [
# Юниты
- { name: "Heal Spirit", elixir_cost: 1, rarity: "rare", type: "troop", is_meta: 0 },
+ { name: "Heal Spirit", elixir_cost: 1, rarity: "rare", type: "troop", is_meta: 1 },
{ name: "Ice Golem", elixir_cost: 2, rarity: "rare", type: "troop", is_meta: 0 },
- { name: "Suspicious Bush", elixir_cost: 2, rarity: "rare", type: "troop", is_meta: 0 },
+ { name: "Suspicious Bush", elixir_cost: 2, rarity: "rare", type: "troop", is_meta: 1 },
{ name: "Mega Minion", elixir_cost: 3, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Dart Goblin", elixir_cost: 3, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Elixir Golem", elixir_cost: 3, rarity: "rare", type: "troop", is_meta: 0 },
- { name: "Mini P.E.K.K.A", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 1 },
- { name: "Musketeer", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 1 },
- { name: "Valkyrie", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 1 },
+ { name: "Mini P.E.K.K.A", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
+ { name: "Musketeer", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
+ { name: "Valkyrie", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Battle Ram", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
- { name: "Hog Rider", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 1 },
+ { name: "Hog Rider", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Battle Healer", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Goblin Demolisher", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Giant", elixir_cost: 5, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Wizard", elixir_cost: 5, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Royal Hogs", elixir_cost: 5, rarity: "rare", type: "troop", is_meta: 0 },
{ name: "Three Musketeers", elixir_cost: 9, rarity: "rare", type: "troop", is_meta: 0 },
- { name: "Zappies", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
+ { name: "Zappies", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 1 },
{ name: "Furnace", elixir_cost: 4, rarity: "rare", type: "troop", is_meta: 0 },
# Заклинания
- { name: "Earthquake", elixir_cost: 3, rarity: "rare", type: "spell", is_meta: 1 },
+ { name: "Earthquake", elixir_cost: 3, rarity: "rare", type: "spell", is_meta: 0 },
{ name: "Fireball", elixir_cost: 4, rarity: "rare", type: "spell", is_meta: 1 },
{ name: "Rocket", elixir_cost: 6, rarity: "rare", type: "spell", is_meta: 0 },
# Здания
- { name: "Tombstone", elixir_cost: 3, rarity: "rare", type: "building", is_meta: 0 },
+ { name: "Tombstone", elixir_cost: 3, rarity: "rare", type: "building", is_meta: 1 },
{ name: "Goblin Cage", elixir_cost: 4, rarity: "rare", type: "building", is_meta: 0 },
- { name: "Goblin Hut", elixir_cost: 5, rarity: "rare", type: "building", is_meta: 0 },
+ { name: "Goblin Hut", elixir_cost: 5, rarity: "rare", type: "building", is_meta: 1 },
{ name: "Bomb Tower", elixir_cost: 4, rarity: "rare", type: "building", is_meta: 0 },
- { name: "Inferno Tower", elixir_cost: 5, rarity: "rare", type: "building", is_meta: 1 },
+ { name: "Inferno Tower", elixir_cost: 5, rarity: "rare", type: "building", is_meta: 0 },
{ name: "Barbarian Hut", elixir_cost: 6, rarity: "rare", type: "building", is_meta: 0 },
- { name: "Elixir Collector", elixir_cost: 6, rarity: "rare", type: "building", is_meta: 0 }
+ { name: "Elixir Collector", elixir_cost: 6, rarity: "rare", type: "building", is_meta: 1 }
].freeze
\ No newline at end of file