Privátní hub

MADHOUSE Roadbook

Katalog destinací a kurátorské kolekce pro jednotlivé výjezdy — privátně, za CF Access.

Aktivní kolekce

Kolekce

Návrat z Pagu 2026

Cesta domů z Chorvatska, červenec 2026

Komunikace s kempy

Auto-log odeslaných poptávek + ruční poznámky napříč destinacemi.

Načítám…

Vývoj webu

Posledních 50 commitů

Kde a co se hnulo. Generováno při buildu z gitu.

db4a43e 2026-07-18

254 v2 — Vimeo API loaded lazily via IntersectionObserver (~120 KB off first mobile paint), main.js?v=18

— KH

6412b91 2026-07-18

254 — perf: image weight -2.5MB, Vimeo iframes loading=lazy, detail hero fetchpriority+decoding, camp-liza WebP→real JPEG

— KH

0de6617 2026-07-16

docs: branch-first (#137) — zrušeno 'výhradně na main', odkaz na COWORK-DNA

Sólo pravidlo 'neděláme feature branche / vše na main' bylo v rozporu s kanonickým #137 (one ticket = one branch). Multi-agent repo → branch-first přes cowork-push, merge do main je hard-gate. Jen CLA

— KH

47aa8a2 2026-06-30

252 — madhouse.vip cowork knowledge handoff v1.0 (docs/cowork-handoff/2026-06-30T091245Z/)

— KH

3b5e12e 2026-06-29

251 — hero photos pro camp-liza, kamp-soca, kamp-triglav (KH/Monika 2026-06-29)

— KH

0edb891 2026-06-29

251 — add 3 unverified SI destinations: camp-liza, kamp-triglav, kamp-soca (Monika candidates)

— KH

27afcf5 2026-06-27

v132 — roadbook EN per-destination body uses tr_field() (no silent CS fallback)

— KH

6af46d6 2026-06-26

098 — fill description_short (CS + EN) for 8 destinations missing the field

— KH

34b0571 2026-06-26

claude.md: mirror Agent Bus + dev-board + identity rules (madhouse.vip:cowork joined fleet)

— KH

a2ac247 2026-06-21

chore: drop one-off EN translation migration script + canonical lowercase remote slug

scripts/_one-off-add-en-translations.py served its purpose (added EN i18n blocks across 19 destinations) and is now removed from the repo. .gitignore adds /scripts/_one-off-*.py so future migration he

— KH

449c210 2026-06-21

i18n: EN translations for all 21 destinations

Bulk-applied region_i18n / location_note_i18n / description_short_i18n blocks where the CS source had content; left source-of-truth keys untouched. Empty CS fields stay empty (no fake translations).

— KH

1fd1d14 2026-06-21

i18n: per-destination text via tr_field() — wired + pilot EN

The per-locale URL infrastructure existed, but every destination JSON still rendered its name/region/location_note/description_short in CS regardless of /en/ or /cs/. An EN visitor on /en/roadbook/des

— Kamil Hrbáček

d8ce245 2026-06-21

ride: pull "Jízda velkým autem" to its own page + travel quote up, changelog body in mono

The landing prose section had grown to ~25 paragraphs across six chunks — too much for a portal page that's meant to point at the catalog, map, and login. Pulled out to its own URL with sidebar slot,

— Kamil Hrbáček

e70ca96 2026-06-21

prose: fix trailers paragraph + comfort heating

Re-read the "Jízda velkým autem" section against the source text. Two paragraphs had drifted from the original meaning during the first translation pass:

— Kamil Hrbáček

5b9e879 2026-06-21

changelog modal: 8 → 50 commits

The modal body is already scrollable (max-height: 86vh, overflow-y: auto), so the 8-commit cap was leaving a lot of recent history off-screen for no reason. Bumped RECENT_COMMITS to 50. Build still ru

— Kamil Hrbáček

f10079d 2026-06-21

landing: long-form prose section — "Jízda velkým autem"

A first-time visitor reading the popeláři tagline + lead doesn't know WHY a big rig matters or what living on board feels like. The nav cards send them straight into the catalog without the story. Add

— Kamil Hrbáček

84908e5 2026-06-21

i18n: detail page structural labels + rating filter clarity

Detail page (CS + EN) ───────────────────── - Section headers: Parcela & vůz / Příjezd / Wellness & vybavení / Cena / Ověřit před rezervací / Kontakt / Naše zkušenost — all routed through tr("deta

— Kamil Hrbáček

acd91be 2026-06-21

i18n round 3: missing nav key, locale-aware homepage link, sidebar lang switcher, landing breathing room

Three bugs from a fresh visitor traversal:

— Kamil Hrbáček

b8b506b 2026-06-21

admin: changelog modal triggered by sidebar link, not inline section

The sidebar's "changelog →" link in the build footer was supposed to open the dev-changelog as a modal — instead the dev section sat inline on /roadbook/plan/ next to "Komunikace s kempy". Fixed.

— Kamil Hrbáček

d4bf405 2026-06-21

i18n: per-locale /<locale>/roadbook/* + Pages Function for Accept-Language

Architecture ──────────── Public Roadbook surfaces (landing, catalogue, map, detail pages) are now prerendered per locale under /<locale>/roadbook/*. LOCALES = ["en", "cs"] with EN as BASE_LOCALE (def

— Kamil Hrbáček

7fd9c26 2026-06-21

url: unify planning surfaces under /roadbook/*

/admin/ → /roadbook/plan/ /collections/ → /roadbook/collections/ /api/ stays as-is (technical endpoint)

— Kamil Hrbáček

5067f3a 2026-06-21

roadbook copy + layout: VELKÁ gold, drop italic SKUTEČNĚ, CTA out of title zone

Catalog /roadbook/destinations/ ────────────────────────────── - H1: "Destinace pro VELKÁ obytná auta" — VELKÁ now wrapped in gold <em>, matching the landing's emphasis. Was lowercase plain text. -

— Kamil Hrbáček

a555eed 2026-06-21

roadbook landing: 2-col hero, copy refinement, locale-aware quote

Landing /roadbook/ — ask before answer, action on the right ─────────────────────────────────────────────────────────── - H1 is now "Vejdeme se?" — leading question instead of statement - Bulleted ans

— Kamil Hrbáček

5ce72dc 2026-06-21

roadbook: /roadbook namespace, sidebar fix, public-facing polish

URL restructure — BIG Camper Guide is now a proper portal ───────────────────────────────────────────────────────── - /roadbook/ landing portal (popeláři + 3 dlaždice) - /roadboo

— Kamil Hrbáček

17eb5f4 2026-06-21

feat(destinations): 4-bucket taxonomy + Bohinj rewrite + Lucide swaps

Taxonomy (#128) - 4 buckets: Kempy (campsite+resort), Aires & Stellplatzy (aire), Zastávky (overnight-stop, was "Přespávací"), Na divoko (wild-camp). - "Přespávací" was slangy and conflated quality

— Kamil Hrbáček

80f53ea 2026-06-21

copy(verdict): "Ověřit kriticky" → "Ověřit konkrétní stání"

"Kriticky" sounded like an accident report. The actual semantics for `verify-critical` are: the camp is fine, the SPECIFIC pitch number matters (low trees, garage roofs, slope side). The new label nam

— Kamil Hrbáček

3020c74 2026-06-21

copy(verdict-chips): "Sedí" → "Vejde se" — drop the slang, keep the semantics

The "Sedí" label was Czech vehicular slang. In context it meant "the vehicle fits the pitch" but could also be read as "is sitting" or even the imperative "sit down". New labels are unambiguous:

— Kamil Hrbáček

9ced48d 2026-06-21

fix(sidebar): rename public nav item "Kempy" → "Destinace"

The catalogue actually contains two sections (Kempy + Přespávací) so labelling the nav menu literally "Kempy" was misleading. The H1 / tagline copy stays — those are positioning statements where "Kemp

— Kamil Hrbáček

d4d04d5 2026-06-21

fix(istra): correct Valamar web URL, hero, address, description

The Valamar Camping Istra entry pointed at a stale URL (/en/camping-istra/camping-istra-funtana) which lands on a 404, and the PiNCAMP hero src I'd grabbed turned out to belong to a different camp alt

— Kamil Hrbáček

b84f2fc 2026-06-21

copy(public-hero): rewrite charter CTA copy

"Plánujete trip v půjčeném Madhousu? Přihlaste se a uložíme vám termíny, automaticky pošleme poptávky a budeme s vámi v kontaktu před cestou." was clunky — CTA stuffed mid-sentence, "trip" reads as an

— Kamil Hrbáček

7525303 2026-06-21

fix(public): tighten visual hierarchy + drop legacy private footer

After flipping /destinations/* public, the chrome carried over too many shouty elements and one piece of contextless boilerplate.

— Kamil Hrbáček

57466fe 2026-06-20

fix(sidebar): MADHOUSE.vip brand mark — caps + gold .vip + real Morelo

The Roadbook sidebar wordmark drifted from the public site brand — lowercase "madhouse.vip" with the favicon in a rounded-square tile lost the license-plate brand promise.

— Kamil Hrbáček

ff4f90f 2026-06-20

feat(public): expose /destinations/ as public big-RV camp guide

The Roadbook destination catalogue becomes a public SEO asset on madhouse.vip — there's no comparable big-RV-friendly camp guide anywhere in CZ/EU, and prospective Madhouse charter customers want to s

— Kamil Hrbáček

6a7fcee 2026-06-20

feat(sidebar): two-level brand hierarchy — madhouse.vip → Roadbook

Sidebar reflects the product structure: "madhouse.vip" is the master brand (top-left, clickable, leads back to /), "Roadbook" is the current sub-section sitting underneath.

— Kamil Hrbáček

bc3ea13 2026-06-20

feat(admin): Recent activity widget + /api/status/list endpoint

The auto-log writes to KV per (collection, destination) but until now there was no way to see "what's happened lately" without clicking into every destination. The admin home now surfaces a cross-cutt

— Kamil Hrbáček

ef556b5 2026-06-20

fix(email-composer): unify the modal across collection + detail pages, add inline trip inputs, auto-log every send

You were right to call out the asymmetry — the collection page was still rendering an older inline modal (no signature picker, no warn) while the detail page used the new email_modal_html_for_detail()

— Kamil Hrbáček

011bfb3 2026-06-20

feat(destinations): catalog search + amenity / rating filter

Up until now the only way to find a destination was scroll-and-pray. Now the /destinations/ page has a top filter bar:

— Kamil Hrbáček

de183a3 2026-06-20

feat(roadbook): build stamp, no-cache headers, map view, EN i18n fill-in, broken-hero map fallback

After Monika hit two UX bugs on the road (signature stuck on Kamil, verify-list mixed-language) it became impossible to know which build her mobile Safari was actually serving. Plus the catalog still

— Kamil Hrbáček

78fe77c 2026-06-20

feat(email): per-language verify list via verify_before_booking_i18n

The Czech verify items leaked into German/English/Slovenian e-mail bodies (Monika → Toblacher See bug). New optional schema field `verify_before_booking_i18n: {lang: [items]}` overrides the CS fallbac

— Kamil Hrbáček

b65676b 2026-06-20

fix(email-composer): signature picker, Sygic copy, verify lang warning, detail-page parity

UX bugs surfaced on a real send (Monika → Toblacher See): - Email signed "Kamil" even though Monika was logged in. /api/me may not have resolved before the modal opened, or her CF Access e-mail do

— Kamil Hrbáček

a6bc726 2026-06-20

feat(destinations): mini-map fallback for cards without a hero photo

Park4night-style overnight stops (Klaus, Gmünd, Veselské pískovny, P4N Slovenia hilltop) don't have a proper hero photo — until now they rendered as a blank "?" tile. Now they get a small Leaflet prev

— Kamil Hrbáček

9a8846e 2026-06-20

feat(destinations): add two overnight stops — Veselské pískovny (CZ) and P4N Slovenia hilltop (SI)

Veselské pískovny (Veselí nad Lužnicí, South Bohemia) - Late-departure-from-Prague save-the-day stop on the Austria run. - Tested-ok: football-pitch parking (VIP for Empire Liner), bike trails along

— Kamil Hrbáček

fc0480f 2026-06-20

feat(destinations): camperguru-style amenity icon grid on detail page

Replace the comma-separated tags chip strip with a 21-category icon grid distilled from amenities.tags. Each tile has a Lucide SVG icon (gold), a Czech label and a hover state. Tags themselves stay be

— Kamil Hrbáček

69c8bdc 2026-06-20

feat: travel quote + Sexten wellness hero + meta-editor centering + 5 PiNCAMP hero swaps

Public site - Add bilingual travel pull quote between the "from the bed" section break and the gallery — Příliš staří na práci... / Too old to work. Titillium Web italic, gold (bright cs / soft en

— Kamil Hrbáček

c6d8f9e 2026-06-20

fix(meta-editor): drop "Čvc" — use all-numeric d.m.Y in flatpickr

The 'M' token rendered the Czech month abbreviation ("Čvc" for July) in the visible input, which both looked odd and duplicated the dd.mm.yyyy safety-hint below it. Switching altFormat to 'd.m.Y' give

— Kamil Hrbáček

b0d8281 2026-06-20

feat(destinations): manual our_rank tiebreaker + visits-based ordering

Within the same star bucket, alphabetic ordering put loved-but-late destinations behind alphabetically-luckier ones (Sexten was 4th of the 5-star tested-ok group). Add:

— Kamil Hrbáček

44f0ff2 2026-06-20

feat(destinations): navigation deep-links, catalog split, real hero URLs

- detail page: nav panel under the Leaflet map with deep-links to Apple Maps (?daddr=lat,lon&dirflg=d), Google Maps (/dir/?api=1& destination=lat,lon&travelmode=driving) and Sygic (com.sygic.aur

— Kamil Hrbáček

c0a1033 2026-06-20

fix(ui): clickable admin stat cards, legible LOGIN nav, dd.M.Y date picker

- admin/: DESTINACE and KOLEKCE stat cards become anchors to /destinations/ and /collections/. Hover lights the border, the gold subhead arrow signals navigation. - public nav: LOGIN link gets bol

— Kamil Hrbáček

65231eb 2026-06-20

fix(destinations): meta-editor alignment + Danica/Sexten pitch intel

- Meta-editor (collection page): replace flex flex-end (which pushed shorter columns to the bottom, misaligning labels) with a 3-row grid track shared by every field. Label, input and hint line up

— Kamil Hrbáček

7816d51 2026-06-20

fix(destinations): meta-editor grid alignment + Danica/Sexten pitch intel

- Meta-editor: replace flex flex-end (which pushed shorter columns to the bottom, misaligning labels) with a 3-row grid track shared by every field. Label, input and hint now line up across column

— Kamil Hrbáček