From bbdf045e037913a955b305ec30d3a61c7d52ef9a Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 01:20:36 +0000 Subject: [PATCH 1/3] Initial plan From 012a7f8d86709e9e37b3f09f35dbf75cb2c4a0f7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 01:24:39 +0000 Subject: [PATCH 2/3] feat: add dice button for random memorable container hostnames --- .../client/src/lib/randomHostname.ts | 44 +++++++++++++++++++ .../pages/containers/ContainerFormPage.tsx | 41 ++++++++++++----- 2 files changed, 73 insertions(+), 12 deletions(-) create mode 100644 create-a-container/client/src/lib/randomHostname.ts diff --git a/create-a-container/client/src/lib/randomHostname.ts b/create-a-container/client/src/lib/randomHostname.ts new file mode 100644 index 00000000..0cd2486d --- /dev/null +++ b/create-a-container/client/src/lib/randomHostname.ts @@ -0,0 +1,44 @@ +// Adjective 1: opinion, size, age, shape (first position in English adjective order) +const ADJECTIVES_1 = [ + // opinion + 'silly', 'funny', 'brave', 'jolly', 'witty', 'wild', 'bold', 'lucky', 'happy', 'quirky', + 'clever', 'calm', 'eager', 'merry', 'kind', + // size + 'tiny', 'little', 'mini', 'large', 'giant', 'tall', 'slim', 'grand', 'vast', 'huge', + 'petite', 'great', + // age + 'ancient', 'young', 'modern', 'fresh', 'classic', 'eternal', 'timeless', 'early', + // shape + 'round', 'oval', 'flat', 'curved', 'narrow', 'hollow', 'crisp', 'sharp', 'smooth', 'steep', +]; + +// Adjective 2: color, origin, material, purpose (second position in English adjective order) +const ADJECTIVES_2 = [ + // color + 'red', 'blue', 'green', 'amber', 'silver', 'violet', 'cyan', 'jade', 'teal', 'coral', + 'ivory', 'azure', 'golden', 'crimson', 'scarlet', 'cobalt', 'indigo', 'olive', 'pink', 'rose', + // origin + 'arctic', 'alpine', 'coastal', 'forest', 'ocean', 'lunar', 'solar', 'polar', 'urban', + 'highland', 'valley', 'desert', 'tropical', 'nordic', 'eastern', 'western', + // material + 'wooden', 'marble', 'crystal', 'iron', 'steel', 'copper', 'glass', 'stone', 'velvet', + 'cedar', 'maple', 'granite', 'bronze', 'woven', 'flint', 'birch', + // purpose + 'noble', 'prime', 'bright', 'royal', 'sacred', 'silent', 'mystic', 'cosmic', 'radiant', + 'steady', 'keen', +]; + +const NOUNS = [ + 'fortress', 'gateway', 'tower', 'harbor', 'valley', 'bridge', 'station', 'beacon', + 'summit', 'canyon', 'island', 'delta', 'pinnacle', 'sentinel', 'citadel', 'archive', + 'nexus', 'vault', 'atlas', 'compass', 'anchor', 'reef', 'realm', 'domain', 'ridge', + 'plateau', 'haven', 'peak', 'grove', +]; + +function pick(arr: T[]): T { + return arr[Math.floor(Math.random() * arr.length)]; +} + +export function randomHostname(): string { + return `${pick(ADJECTIVES_1)}-${pick(ADJECTIVES_2)}-${pick(NOUNS)}`; +} diff --git a/create-a-container/client/src/pages/containers/ContainerFormPage.tsx b/create-a-container/client/src/pages/containers/ContainerFormPage.tsx index 2fb51771..fdb3f5f9 100644 --- a/create-a-container/client/src/pages/containers/ContainerFormPage.tsx +++ b/create-a-container/client/src/pages/containers/ContainerFormPage.tsx @@ -20,10 +20,11 @@ import { Tooltip, useToast, } from '@mieweb/ui'; -import { Container, Plus, Search, Trash2 } from 'lucide-react'; +import { Container, Dices, Plus, Search, Trash2 } from 'lucide-react'; import { api, ApiError } from '@/lib/api'; import { keys, queries } from '@/lib/queries'; import { FormPageHeader } from '@/components/FormPageHeader'; +import { randomHostname } from '@/lib/randomHostname'; import { ResourcesSection } from './ResourcesSection'; import type { ContainerCreateResult, ContainerMetadata } from '@/lib/types'; @@ -339,17 +340,33 @@ export function ContainerFormPage() { Basics - +
+
+ +
+ {!isEdit && ( + + + + )} +
{!isEdit && ( <>
From e8d15f242ba5496c39aa73bb1f0dcb9480505dc8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 12 Jun 2026 01:33:54 +0000 Subject: [PATCH 3/3] feat: replace location nouns with animals, objects, celestial, and whimsical words --- .../client/src/lib/randomHostname.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/create-a-container/client/src/lib/randomHostname.ts b/create-a-container/client/src/lib/randomHostname.ts index 0cd2486d..eca8eb9b 100644 --- a/create-a-container/client/src/lib/randomHostname.ts +++ b/create-a-container/client/src/lib/randomHostname.ts @@ -29,10 +29,16 @@ const ADJECTIVES_2 = [ ]; const NOUNS = [ - 'fortress', 'gateway', 'tower', 'harbor', 'valley', 'bridge', 'station', 'beacon', - 'summit', 'canyon', 'island', 'delta', 'pinnacle', 'sentinel', 'citadel', 'archive', - 'nexus', 'vault', 'atlas', 'compass', 'anchor', 'reef', 'realm', 'domain', 'ridge', - 'plateau', 'haven', 'peak', 'grove', + // animals + 'badger', 'falcon', 'ferret', 'otter', 'raven', 'gecko', 'panda', 'jaguar', 'narwhal', + 'quokka', 'axolotl', 'capybara', 'wombat', 'dingo', 'lemur', 'marmot', 'tapir', 'viper', + // objects / tools + 'anvil', 'lantern', 'compass', 'sextant', 'pendulum', 'prism', 'dynamo', 'turbine', + 'wrench', 'chisel', 'piston', 'sprocket', 'pulley', 'bellows', 'lathe', + // celestial / scientific + 'comet', 'photon', 'neutron', 'quasar', 'nebula', 'pulsar', 'proton', 'cyclone', + // whimsical / abstract + 'riddle', 'fable', 'cipher', 'totem', 'sigil', 'emblem', 'omen', 'mantra', 'lore', ]; function pick(arr: T[]): T {