id: c9e1754a9ba94f2cadfbce9e1605148f
parent_id: fa71e4ffafa64eaf91d55d73f8a237d7
item_type: 1
item_id: 088737f31c514f1da21cc42c0ab6acc1
item_updated_time: 1785663970803
title_diff: "[]"
body_diff: "[{\"diffs\":[[0,\"onours**\"],[1,\", **graphical browser UI model**\"],[0,\" |\\\n\\\n---\\\n\"]],\"start1\":1381,\"start2\":1381,\"length1\":16,\"length2\":48},{\"diffs\":[[0,\"JWT), Vue 3 \"],[1,\"SPA \"],[0,\"frontend, **\"]],\"start1\":5655,\"start2\":5655,\"length1\":24,\"length2\":28},{\"diffs\":[[0,\"pology**\"],[1,\", **art direction**\"],[0,\" |\\\n| [Pr\"]],\"start1\":5780,\"start2\":5780,\"length1\":16,\"length2\":35},{\"diffs\":[[0,\"tructure\"],[1,\", **decisions log**\"],[0,\" |\\\n\\\n---\\\n\"]],\"start1\":5957,\"start2\":5957,\"length1\":16,\"length2\":35},{\"diffs\":[[0,\"Wizard. \"],[-1,\"S\"],[1,\"**Free to s\"],[0,\"witch at\"]],\"start1\":6267,\"start2\":6267,\"length1\":17,\"length2\":27},{\"diffs\":[[0,\"w Board.\"],[1,\"**\"],[0,\" Master \"]],\"start1\":6300,\"start2\":6300,\"length1\":16,\"length2\":18},{\"diffs\":[[0,\"Archmage\"],[1,\" (cosmetic title only)\"],[0,\".\\\n\\\n### M\"]],\"start1\":6329,\"start2\":6329,\"length1\":16,\"length2\":38},{\"diffs\":[[0,\"sionics)\"],[1,\". All use unified **Power Points** (no separate mana).\"],[0,\"\\\n\\\n### Sk\"]],\"start1\":6458,\"start2\":6458,\"length1\":16,\"length2\":70},{\"diffs\":[[0,\"ries\"],[-1,\" (Armor, Weapons, Athletic, Awareness, Body Dev, Combat Maneuvers, Craft, Gathering, Directed Spells, Influence, Lore, Magic Lore, Mental, Outdoor, Self Control, Special Attacks, Spells, Subterfuge, Technical/Trade, Urban)\"],[0,\". Pr\"]],\"start1\":6575,\"start2\":6575,\"length1\":230,\"length2\":8},{\"diffs\":[[0,\"iculty).\"],[1,\" **Diminishing returns only** — no hard caps, but ranks become prohibitively expensive past a soft ceiling.\"],[0,\"\\\n\\\n### Me\"]],\"start1\":6683,\"start2\":6683,\"length1\":16,\"length2\":123},{\"diffs\":[[0,\"spired)\\\n\"],[-1,\"Tiered medals\"],[1,\"**5 tiers**\"],[0,\" (Copper\"]],\"start1\":6834,\"start2\":6834,\"length1\":29,\"length2\":27},{\"diffs\":[[0,\" bonuses\"],[1,\" capped at **+10% per-effect-category**\"],[0,\".\\\n\\\n---\\\n\\\n\"]],\"start1\":7033,\"start2\":7033,\"length1\":16,\"length2\":55},{\"diffs\":[[0,\"Harbor, \"],[1,\"**\"],[0,\"1-4 hour\"]],\"start1\":7395,\"start2\":7395,\"length1\":16,\"length2\":18},{\"diffs\":[[0,\"me trips\"],[1,\"**\"],[0,\", risk o\"]],\"start1\":7421,\"start2\":7421,\"length1\":16,\"length2\":18},{\"diffs\":[[0,\"**: \"],[1,\"**\"],[0,\"2-\"],[-1,\"4\"],[1,\"6\"],[0,\" players\"],[-1,\" (not\"],[1,\"** (expanded from BT1's\"],[0,\" 6 c\"]],\"start1\":7482,\"start2\":7482,\"length1\":24,\"length2\":44},{\"diffs\":[[0,\"ayer\"],[-1,\" like BT1\"],[0,\"). F\"]],\"start1\":7542,\"start2\":7542,\"length1\":17,\"length2\":8},{\"diffs\":[[0,\"aids**: \"],[-1,\"6-12\"],[1,\"**6+\"],[0,\" players\"],[1,\"** (scalable)\"],[0,\". Instan\"]],\"start1\":7749,\"start2\":7749,\"length1\":28,\"length2\":41},{\"diffs\":[[0,\"(up to +\"],[-1,\"3\"],[1,\"5\"],[0,\"0% for p\"]],\"start1\":7877,\"start2\":7877,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"arty of \"],[-1,\"4\"],[1,\"6\"],[0,\").\\\n\\\n### \"]],\"start1\":7894,\"start2\":7894,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\")\\\n\\\n---\\\n\\\n\"],[1,\"## Art Direction (decided 2026-08-02)\\\n\\\n**Torn-style graphical browser UI.** The game mechanics are text/numbers (stats, combat formulas, economy); the presentation is a fully graphical web application — same model as Torn City.\\\n\\\n### What this means concretely\\\n- **Location panels**: illustrated backgrounds per district (tavern, market, dungeon entrance, etc.). Each district has a distinct visual identity.\\\n- **Item/equipment icons**: sprite-style icons for all items, gear quality indicators (border glow: Common→Legendary).\\\n- **Stat bars & HUD**: graphical health/energy/mana bars, XP progress bars, skill meters.\\\n- **Themed color scheme**: dark fantasy palette, per-district tinting (e.g. warm amber in the tavern district, cold blue-grey at the docks).\\\n- **Tab-based navigation**: Torn-style tab bar for quick access to core pages (City, Adventures, Combat, Inventory, Guild, etc.).\\\n- **Animations**: CSS transitions for page changes, stat updates, combat results. Not a canvas game — browser-native rendering via Vue components.\\\n\\\n### Art pipeline requirements\\\n- **Location art**: digital illustrations (can be sourced or commissioned). Need ~11 district illustrations + dungeon room tiles.\\\n- **Item icons**: sprite sheet or SVG icon set. Quality tiers indicated by color/border.\\\n- **UI components**: Vue component library with dark-fantasy theming. Stat bars, progress rings, tab navigation, modal dialogs, tooltips.\\\n- **No canvas/WebGL**: all rendering via HTML/CSS/SVG within Vue. Keeps it lightweight and PWA-compatible.\\\n\\\n---\\\n\\\n\"],[0,\"## Tech \"]],\"start1\":8570,\"start2\":8570,\"length1\":16,\"length2\":1552},{\"diffs\":[[0,\" **Vue 3\"],[1,\" SPA\"],[0,\"** + Vit\"]],\"start1\":10523,\"start2\":10523,\"length1\":16,\"length2\":20},{\"diffs\":[[0,\"patterns\"],[-1,\" for game state\"],[1,\". Plain SPA (no SSR — game is behind auth; public pages can be generated separately).\"],[0,\" |\\\n| Mob\"]],\"start1\":10579,\"start2\":10579,\"length1\":31,\"length2\":101},{\"diffs\":[[0,\"tion `~/\"],[-1,\"d\"],[1,\"D\"],[0,\"ev\"],[1,\"elopment\"],[0,\"/<projec\"]],\"start1\":12260,\"start2\":12260,\"length1\":19,\"length2\":27},{\"diffs\":[[0,\"pos \"],[-1,\"still live \"],[0,\"in p\"]],\"start1\":12427,\"start2\":12427,\"length1\":19,\"length2\":8},{\"diffs\":[[0,\"ers \"],[-1,\"on workhorse; symlink them into\"],[1,\"(`~/RustroverProjects`, `~/WebstormProjects`,\"],[0,\" `~/\"],[1,\"I\"],[0,\"de\"],[-1,\"v/skara-brae/` or reloc\"],[1,\"aProjects`) get symlinked or migr\"],[0,\"ate\"],[1,\"d\"],[0,\" on \"],[-1,\"first \"],[0,\"touc\"]],\"start1\":12454,\"start2\":12454,\"length1\":81,\"length2\":101},{\"diffs\":[[0,\"\\\n\\\n```\\\n~/\"],[-1,\"d\"],[1,\"D\"],[0,\"ev\"],[1,\"elopment\"],[0,\"/skara-b\"]],\"start1\":12557,\"start2\":12557,\"length1\":19,\"length2\":27},{\"diffs\":[[0,\"ra-brae/\"],[-1,\"      \"],[0,\"        \"]],\"start1\":12580,\"start2\":12580,\"length1\":22,\"length2\":16},{\"diffs\":[[0,\".\\\n\\\n---\\\n\\\n\"],[1,\"## Monetization (decided 2026-08-02)\\\n\\\n**Patron tiers with quality-of-life perks only.** No pay-to-win, no stat boosts, no combat advantages for paying players.\\\n\\\n- **Free tier**: full game access, all content, all mechanics. Energy refills at normal rate, limited offline adventure slots.\\\n- **Patron tiers** (monthly): QoL perks only — extra energy, more offline adventure slots, reduced cooldowns, cosmetic titles/borders, priority matchmaking.\\\n- No loot boxes, no gacha for power items, no stat purchasable with real money.\\\n- Community wiki and API access remain free and unrestricted.\\\n\\\n---\\\n\\\n## Game Clock (decided 2026-08-02)\\\n\\\n**4 real hours = 1 in-game day.** (6 game days per real day.)\\\n\\\n- Day/night cycle: each game day has daytime and nighttime phases.\\\n- Offline adventures cap at **1 game day** (4 real hours) per session.\\\n- Travel to offshore: 1-4 real hours.\\\n- Blessings, worker contracts, and other timed effects measured in game-time units.\\\n\\\n---\\\n\\\n\"],[0,\"## MVP S\"]],\"start1\":14917,\"start2\":14917,\"length1\":16,\"length2\":974},{\"diffs\":[[0,\"nt ranks\"],[1,\", diminishing returns\"],[0,\")\\\n3. Adv\"]],\"start1\":16080,\"start2\":16080,\"length1\":16,\"length2\":37},{\"diffs\":[[0,\"stem (2-\"],[-1,\"4\"],[1,\"6\"],[0,\" players\"]],\"start1\":16362,\"start2\":16362,\"length1\":17,\"length2\":17},{\"diffs\":[[0,\"ning\"],[-1,\")\\\n9. REST API + basic Vue.js frontend\"],[1,\", free school switching)\\\n9. REST API + basic **Torn-style graphical Vue.js frontend** (location panels, item icons, stat bars, themed UI)\"],[0,\"\\\n10.\"]],\"start1\":16467,\"start2\":16467,\"length1\":45,\"length2\":145},{\"diffs\":[[0,\"llection\"],[1,\" (max 4 hours / 1 game day)\"],[0,\"\\\n12. Bas\"]],\"start1\":16683,\"start2\":16683,\"length1\":16,\"length2\":43},{\"diffs\":[[0,\" pity system\"],[1,\" (pity after 20 dry pulls)\"],[0,\"**, **XP lam\"]],\"start1\":17276,\"start2\":17276,\"length1\":24,\"length2\":50},{\"diffs\":[[0,\"rnival (\"],[1,\"seasonal \"],[0,\"travelin\"]],\"start1\":17628,\"start2\":17628,\"length1\":16,\"length2\":25},{\"diffs\":[[0,\"ing \"],[-1,\"seasonal minigame hub +\"],[1,\"event with\"],[0,\" tic\"]],\"start1\":17651,\"start2\":17651,\"length1\":31,\"length2\":18},{\"diffs\":[[0,\"s (6\"],[-1,\"-12\"],[1,\"+\"],[0,\" pla\"]],\"start1\":17964,\"start2\":17964,\"length1\":11,\"length2\":9},{\"diffs\":[[0,\"ions\"],[-1,\"\\\n\\\n- [ ] Art style / visual direction (text-only vs. illustrated UI elements)\\\n- [ ] Game clock speed (how many real hours per game day? currently 4hr)\\\n- [ ] Monetization specifics (patron tier pricing)\\\n- [ ] Whether to use Nuxt (SSR) or plain Vue (SPA)\\\n- [ ] Offline session balance: how long should adventures continue while logged out?\\\n- [ ] Blessing tuning: duration ranges, effect scaling, cooldown between blessings\\\n- [ ] Worker pricing: gold-per-hour rates for hireable inn workers\\\n- [ ] Party size: 2-4 confirmed? Or allow up to 6?\\\n- [ ] Raid size: 6? 12? For guild raid content.\\\n- [ ] Travel time: 1-4 hours real time for offshore locations?\\\n- [ ] Spell school switching: cooldown? Cost? Or free at Review Board?\\\n- [ ] Archmage: cosmetic title only? Or gameplay bonus for mastering all schools?\\\n- [ ] **Stat bonus curve**: exact `stat_bonus()` log function shape for skill system\\\n- [ ] **Rank caps**: hard cap per skill or soft cap via DP scarcity?\\\n- [ ] **PP vs mana**: unify into p\"],[1,\" — Deferred to Design Phase\\\n\\\nThe following tuning questions are **deferred** until playtest data is available. Ranges are set; exact numbers locked during design/implementation.\\\n\\\n- [ ] Blessing tuning: duration ranges, effect scaling, cooldown between blessings\\\n- [ ] Worker pricing: gold-per-hour rates for hireable inn workers\\\n- [ ] **Stat bonus curve**: exact `stat_bonus()` log function shape for skill system\\\n- [ ] **Infinite Tower**: floor milestone reward shape — permanent but bounded? Cap on stacked bonuses?\\\n- [ ] **Expeditions**: confirm 2 tiers per gathering skill? Which 5 gathering skills get expeditions first?\\\n- [ ] **Buildings meta**: confirm the building roster + tier ceilings (0–3)? Tie each to which district?\\\n- [ ] **Carnival**: ticket economy tuning, minigame roster, visit duration\\\n\\\n---\\\n\\\n## Decisions Log (resolved 2026-08-02)\\\n\\\n| Question | Decision |\\\n|---|---|\\\n| Art style / visual direction | **Torn-style graphical UI** — illustrated location panels, item icons, stat bars, themed color scheme. HTML/CSS/SVG in Vue, no canvas. Art pipeline needed. |\\\n| SPA vs SSR | **Plain Vue SPA** — no Nuxt. Game is behind auth; public pages generated separately. |\\\n| Workspace root | **`~/Development/<project>/`** — matches existing `~/Development/poker/`. Legacy IDE dirs symlinked. |\\\n| Game clock | **4 real hours = 1 game day** |\\\n| Party size | **2-6 players** + NPC mercenaries |\\\n| Raid size | **6+ players** (scalable) |\\\n| Medal tiers | **5 tiers**: Copper → Silver → Gold → Platinum → Dragon |\\\n| PP vs mana | **Unified P\"],[0,\"ower \"],[-1,\"p\"],[1,\"P\"],[0,\"oints\"],[-1,\" or keep both?\\\n- [ ] **Medal tier count**: 5 (Copper→Dragon) or simplify to 4?\\\n- [ ] **\"],[1,\"** — no separate mana |\\\n| Spell school switching | **Free at Review Board** |\\\n| Rank caps | **Diminishing returns only** — no hard cap, no DP-scarcity cap |\\\n| Archmage bonus | **Cosmetic title only** |\\\n| \"],[0,\"Hono\"]],\"start1\":18019,\"start2\":18019,\"length1\":1096,\"length2\":1764},{\"diffs\":[[0,\"onus cap\"],[-1,\"**: confirm \"],[1,\" | **\"],[0,\"+10% per\"]],\"start1\":19787,\"start2\":19787,\"length1\":28,\"length2\":21},{\"diffs\":[[0,\" cap\"],[-1,\"?\\\n- [ ] **Infinite Tower**: floor milestone reward shape — permanent but bounded? Cap on stacked bonuses?\\\n- [ ] **Expeditions**: confirm 2 tiers per gathering skill? Which 5 gathering skills get expeditions first?\\\n- [ ] **Buildings meta**: confirm the building roster + tier ceilings (0–3)? Tie each to which district?\\\n- [ ] **Carnival**: confirm it as a seasonal traveling event vs. permanent district? Ticket economy tuning.\\\n- [ ] **Fortune's Favor**: N dry attempts before guaranteed high-rarity? Reset rules?\"],[1,\"** |\\\n| Offline session max | **4 hours (1 game day)** |\\\n| Carnival | **Seasonal traveling event** |\\\n| Offshore travel time | **1-4 hours real time** |\\\n| Fortune's Favor pity | **Pity after 20 dry pulls** |\\\n| Monetization | **Patron tiers (QoL only)** — no pay-to-win |\\\n| Hosting | **Self-hosted, no Docker** — systemd services |\\\n| Infra | **Dev on workhorse, CI/staging on basement, git+prod on Hetzner (Forgejo)** |\\\n\\\n---\\\n\\\n## Resolved Questions (from earlier sessions)\\\n\"],[0,\"\\\n- [\"]],\"start1\":19835,\"start2\":19835,\"length1\":520,\"length2\":477},{\"diffs\":[[0,\"e), \"],[-1,\"p\"],[1,\"unified P\"],[0,\"ower \"],[-1,\"p\"],[1,\"P\"],[0,\"oints, \"],[-1,\"ordered progression\"],[1,\"free school switching\"],[0,\"\\\n- [\"]],\"start1\":20884,\"start2\":20884,\"length1\":41,\"length2\":51},{\"diffs\":[[0,\"nours**:\"],[1,\" 5\"],[0,\" tier\"],[-1,\"ed medals\"],[1,\"s (Copper→Dragon)\"],[0,\", rare h\"]],\"start1\":20981,\"start2\":20981,\"length1\":30,\"length2\":40},{\"diffs\":[[0,\"tion\"],[-1,\" (two IDEs, Rust+Vue)\"],[0,\"~~ →\"]],\"start1\":21068,\"start2\":21068,\"length1\":29,\"length2\":8},{\"diffs\":[[0,\"egen\"],[-1,\"; API contract server-authoritative via `utoipa` → `openapi-typescript`. Server path-deps `../skara-brae-common/rust`; client file-deps `../skara-brae-common/ts`. See [Tech Stack & Architecture](joplin://980c3eb587294e4383474b94988f2f88).\"],[0,\"\\\n- [\"]],\"start1\":21157,\"start2\":21157,\"length1\":246,\"length2\":8},{\"diffs\":[[0,\"al**\"],[-1,\" (re-evaluated)\"],[0,\": ba\"]],\"start1\":21205,\"start2\":21205,\"length1\":23,\"length2\":8},{\"diffs\":[[0,\"meta\"],[-1,\", fed by crafted materials\"],[0,\"\\\n- [\"]],\"start1\":21242,\"start2\":21242,\"length1\":34,\"length2\":8},{\"diffs\":[[0,\"ture\"],[-1,\" (self-hosted vs. cloud)\"],[0,\"~~ →\"]],\"start1\":21273,\"start2\":21273,\"length1\":32,\"length2\":8},{\"diffs\":[[0,\"er**\"],[-1,\" (2026-08-02): bare systemd services. Dev on workhorse, staging on basement FreeBSD box (Jenkins + bhyve Debian VM), git+prod on Hetzner Debian box (Forgejo public+private + systemd + Caddy TLS). See [Development Environment & Server Topology](joplin://bbc49a3bbada4fcdb8fedc66abf5014e).\"]],\"start1\":21304,\"start2\":21304,\"length1\":291,\"length2\":4}]"
metadata_diff: {"new":{},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2026-08-02T09:49:55.757Z
created_time: 2026-08-02T09:49:55.757Z
is_locked: 0
type_: 13