v9.1
Current
July 25, 2026
Own mail server, real password reset, parts-image overhaul, and profile-blog fixes
βοΈ
Own mail server β StudsUp now runs its own Postfix server with DKIM signing for studsup.eu, relayed for delivery. Powers password resets and account emails New Backend
π
Real password reset β "Forgot password?" now actually works: secure 1-hour token emailed to you, dedicated reset page. Previously just showed a fake success message Fix
π§
Email verification on signup β new accounts receive a welcome/verification email; existing accounts are grandfathered in as verified New
π
Notification settings β new "Alerts" tab in profile settings: master email toggle, new-listing alert toggle, and a configurable check frequency (2/5/10/20/30/60 min) New
πΌοΈ
Parts catalogue images fixed at the root cause β the LDraw fallback colour code used everywhere ('16') was a meta-colour that never renders; changed to '0' across the catalogue, collection, missing-parts checklist and homepage. Coverage on a broad sample jumped from ~19% to 84%+ Fix Backend
π
Honest icons for unphotographable items β activity booklets, cards and manuals now show a document icon instead of a broken-looking placeholder; wire/cable parts show a plug icon when no real photo exists Improved
π
Printed/decorated part variants β BrickLink usually only photographs the plain mold, not every print; added a base-mold fallback so parts like printed minifig pieces and dragon wings find a real photo more often Fix
π
Pagination bug fixed β Technic/Duplo filtering was happening client-side after the page was already fetched, occasionally producing "No parts found" on a valid page number. Moved server-side so totals and page counts are always accurate Fix Backend
βοΈ
Parts sort dropdown β was previously decorative only; now actually sorts by price, availability, sold quantity or element ID Fix
πΈ
Blog photo/video posts β Photo and Video post types can now actually attach a real upload; previously there was no file picker at all despite the option existing Fix
πΎ
Profile settings actually save β display name, bio, location, avatar photo/colour and password changes were previously cosmetic only (localStorage-only, no server call); all now persist for real Fix
π±
Mobile camera fix β scanning a set or identifying a brick now opens a single native camera/gallery picker instead of forcing the camera and sometimes double-capturing a photo Fix
v9.0
June 27, 2026
Color system overhaul β accurate colours, instant filter, multi-select
π¨
Color accuracy fix β GROUP BY rp.part_num replaced with correlated subquery that picks the best representative element per part (local_img first). Eliminated ~70% grey (#cccccc) colour swatches Fix Backend
β‘
Instant colour filter β clicking a colour in the sidebar now immediately filters parts without needing "Apply filters" button Fix
ποΈ
Multi-colour filter β new
color_ids query parameter accepts comma-separated IDs; selecting multiple colours now works New Backend0οΈβ£
Black (color_id=0) fix β falsy zero was skipped by colour filter logic; now correctly filters 10,047 black parts Fix
π
Search page β removed both occurrences of dev uvicorn startup instructions shown to production users Fix
π§ͺ
Full deployment check β automated 10-point test suite: API health, colour accuracy, Black/multi-colour filters, BL fields, search warning, part detail, builder, category images, instant filter Improved
v8.9
June 27, 2026
Parts catalogue β 12 categories, real LEGO images, BrickLink fallback
π¦
12 clean categories β replaced 60+ raw Rebrickable categories with 12 BrickArchitect-inspired groups: Basic Β· Plates Β· Slopes Β· Round & Curved Β· SNOT Β· Panels & Windows Β· Minifig Β· Nature Β· Vehicle Β· Technic Β· Duplo Β· Other New
π§±
Category thumbnails β each category now shows a real 36px LEGO part photo instead of emoji. Images sourced from local element DB with BrickLink CDN fallback New
πΌοΈ
4-source image waterfall β part images try: local DB β BrickLink colored (PN/{color_id}/{part_id}) β BrickLink no-color (PL/{part_id}) β Rebrickable LDraw render Improved
π
API fields β /api/catalog now returns
bl_part_id, bl_color_id, part_name, color_css for BrickLink image URL construction Backend NewποΈ
Removed "Rebrickable catalogue" button from parts page header Fix
π
Part detail β dynamic loading β /pages/part-detail.html?part=6396802 now resolves correct part by element_id or bl_part_id instead of showing hardcoded Plate 2Γ4 demo Fix
v8.8
June 27, 2026
MOC Builder v9.4 β connection engine, stud-exact positioning, PDF generation
π©
Connection engine β
getConnectionY(partNum) returns correct LDraw Y offset per part type. 6157 wheel holder: Y=β8 (stug anti-stud at Y=8). All others: Y=0. Eliminates parts floating inside the plate Newπ
Stud-exact placement β 1762 go-cart parts placed on real stud positions derived from .dat geometry: steering at Z=β30, round bricks at Z=+30, holders at Z=Β±20 Y=β8, wheels at Y=β3 (holder β8 + wpin +5) Fix
π
PDF hang fix β pre-renders all step screenshots before PDF generation; eliminated indefinite hang on tyre subfile loading Fix
π
Duplicate DOCTYPE fix β Python string replace was appending full file as text inside template literal; caused SyntaxError and blank builder page Fix
π¨
CHART_COLORS guard β shared.js redeclaration on repeated navigation caused builder JS to silently fail; wrapped in
if(typeofβ¦===undefined) guard Fixπ§ͺ
POC 33/33 β all tests passing: core:16/16 Β· 1762:8/8 Β· db:9/9. Every run generates 2 PDFs (1762 go-cart + 60400 go-kart) Improved
ποΈ
LUGBULK order page β new /pages/lugbulk-order.html with 4 tabs (Order Β· Nominations Β· Voting Β· Summary), 3-tier voting system (5ptΓ5 Β· 3ptΓ10 Β· 1ptΓ25), ESTLUG removed New
v8.7
June 27, 2026
Security, cleanup & mobile fixes
π
GitHub repo private β source code no longer publicly accessible Security New
Β©οΈ
Copyright headers β added to all 23 frontend/backend files Security
π
JWT Auth system β /api/auth/login, /api/auth/me, change-password; admin endpoints protected Backend New
ποΈ
Minification pipeline β scripts/minify.py removes comments & collapses CSS/JS Improved
π§Ή
Removed LUGBULK label from search tabs and nav β now shows as Parts. LUGBULK is a LUG-members-only ordering feature, not a public catalogue name Fix
π±
Mobile fix β removed red placeholder square from index page card Fix
v8.6
June 25, 2026
Search Engine Phase 1 β FTS5 BM25 ranked search across all 78k parts
π
rb_parts_fts index β FTS5 trigram virtual table built over all 78,633 catalogue parts on startup Backend New
π
BM25 ranking β parts catalogue search now ranks by relevance (exact part_num first, prefix second, BM25 score third) instead of plain LIKE scan Improved
β‘
Global search parts β /api/search now queries 78k rb_parts via FTS before falling back to LUGBULK parts table Improved
ποΈ
/api/catalog/facets β new endpoint returning category counts for the active search query; powers live sidebar filter badges New
π
Sets search BM25 β global search sets section now uses sets_fts BM25 ranking instead of LIKE, matching sets page behavior Improved
v8.5
June 20, 2026
Order flow, payments, shipping map, role system & god mode
π
Order modal β full checkout flow on part detail pages with fee breakdown New
π³
Payment methods β PayPal, Revolut, Card (Stripe), Bank transfer, Cash/local pickup with per-method fee calculation New
π¦
Shipping options β Standard post, DPD Parcelshop, Parcel machine, Local pickup with interactive Leaflet map showing nearby pickup points New
π§Ύ
Fee breakdown β Live summary showing subtotal, shipping, payment provider fee, StudsUp fee (1%), import; cash/local shows β¬0 for platform fees New
β‘
God mode β Admin-only floating button, 5-minute timer with countdown, full permissions while active New
π₯
Role system β admin βΊ superuser βΊ power_user βΊ moderator βΊ user βΊ probation hierarchy implemented New
π
Real PDF upload β Instructions now actually upload files to server via FormData, saved to /uploads/ Fix
π
My sets β Shows empty state instead of hardcoded demo sets Fix
π
LEGO news β Home page now shows latest sets from Rebrickable API New
v8.4
June 19, 2026
Upload improvements, API speed fix, color corrections
β‘
API URL fix β studsup.eu now routes to Hetzner backend directly, eliminating 30-60s Render cold starts Fix
β
Skip review β Admin checkbox to publish instruction uploads immediately without moderation New
π¨
Color corrections β 46 BrickLink color CSS values fixed from #cccccc to accurate hex values Fix
π¦
lugbulk.html β parts.html β Page renamed, all references updated Improve
v8.3
June 17, 2026
Hetzner VPS migration, SSL, live backend
π
Hetzner VPS β Migrated from Render to CX23 Helsinki server, FastAPI+uvicorn+nginx stack New
π
SSL/HTTPS β certbot configured for studsup.eu New
ποΈ
SQLite backend β 12,658 LUGBULK 2026 parts in persistent database Improve
v8.0
June 13, 2026
Full account settings, real downloads, live camera/mic, currency selector, all fake data removed
βοΈProfile settings modal β Edit name, handle, location, bio; change email; reset password with strength meter; upload avatar photo (drag & drop) or choose colour; cover image URL New
π₯Real instruction downloads β All 10 sets now link to official LEGO.com PDF booklets that open directly; Rebrickable parts list link; no more fake progress bar Fix
πΌοΈReal set images β All instruction set cards now display real Rebrickable CDN photos with emoji fallback Fix
π΄Live camera & microphone β Go Live now requests real camera/mic via getUserMedia; individual toggles for camera, microphone, and speaker audio; device labels shown; live timer and simulated viewer count New
π±Currency selector β Parts catalogue now has a top-20 currency dropdown (USD, EUR, GBP, JPY, CNY, CAD, AUD, CHF, INR, BRL, MXN, KRW, SEK, NOK, DKK, PLN, CZK, HUF, TRY, SGD); all prices convert instantly New
π¦Parts catalogue renamed β Removed "LUGBULK 2026 β" prefix; page title is now simply "Parts catalogue" Fix
πPer-page selector β New dropdown: 48 / 200 / 500 / 1000 / 2000 / All results per page New
π¨Color filter fixed β Root cause: API only loaded 200 of 12,658 parts. Now loads ALL parts in parallel chunks; color names display correctly; "Color 110" = Charcoal Fix
πAdmin password updated β New secure admin password active for both georgs@studsup.com and admin@studsup.com; old demo1234 still works for testing Fix
v7.1
June 13, 2026
Full mobile responsive β hamburger nav, bottom tab bar, per-page breakpoints
π±Hamburger menu β horizontal nav hidden on mobile, replaced with slide-down drawer containing all links New
β¬οΈBottom tab bar β fixed 5-tab navigation bar at screen bottom: Home / Search / Parts / Profile / AI New
πPer-page breakpoints β all 13 pages get responsive CSS at 768px and 480px: stacked grids, hidden sidebars, full-width buttons New
π½Modal sheets β modals slide up from bottom on mobile instead of appearing centred Improved
βοΈFilter FAB on parts catalogue β fixed floating button to open/close filters panel on mobile New
v7.0
June 13, 2026
Zero fake data, all buttons fixed, Rebrickable CDN for images
π§ΉAll fake data removed β no more 2.4M, 94K, 12K, 340 LUGs; replaced with real DB counts Fix
π§19 broken alert() buttons fixed β now use proper toast(), navigation, or clipboard API Fix
πͺFake store names removed β BrickMaster_Shop, PartsBarn_EU, BrickMasterPaul replaced with generic labels Fix
πΌοΈRebrickable CDN β all 12,658 part images and 8 set images updated to cdn.rebrickable.com (works in all browsers) Improved
πAPI research β BrickLink requires seller OAuth (unusable); Rebrickable free CDN confirmed working; Brickset API returns instruction PDF URLs Improved
v6.2
June 13, 2026
Live deployment + admin accounts + parts catalogue API fix
πLive deployment started β initially on Render.com, migrated to Hetzner VPS in 2026 Improved
πAdmin accounts added β georgs_bricks (admin) and admin@studsup.com have admin role New
π¦Parts catalogue API β paginated, server-side filtering & sorting Fix
πΌοΈPart images β Rebrickable CDN (100% coverage for 12,658 LUGBULK parts) Improved
πSearch & API endpoints β robust element_id lookup, Rebrickable fallback Fix
β‘Auto-deploy β push to GitHub β GitHub Actions β live on Hetzner VPS Improved
v6.0
June 12, 2026
Real backend + full-text search across all categories
ποΈSQLite database β 4.3 MB, 12,658 parts from LUGBULK_2026.xlsx, FTS5 full-text indexes on all tables Backend
πFastAPI REST backend β 15 endpoints, paginated results, <20ms query time Backend New
πGlobal search page rebuilt β searches Parts, Sets, Stores, Discounts, Users, LUGs, Streams, Videos simultaneously New
π¦Parts catalogue β removed 3.5 MB JS file, API serves paginated parts on demand Improved
π·οΈDiscounts as a separate search category with promo codes, min order, validity dates New
β‘Search fallback β if backend is not running, search page shows demo results with a warning banner Improved
πThis page β version history added New
v5.0
June 11, 2026
Stream chat fixed, buy buttons wired, LUGBULK in global nav
π΄Stream live chat β fixed DOM timing bug (autoChat ran before page loaded), Enter key works, user name shown from session Fix
π°Buy buttons β fully wired on part detail page: confirm panel, order confirmation, Add to cart with mini summary New
πLogin-aware buy panel β shows sign-in prompt for guests, full buy/cart/wishlist for signed-in users New
πͺSeller rows β each seller now has a Buy button, clicking selects that seller and updates buy panel New
π¦Parts catalogue added to main navigation on all pages Improved
π"+ Sell parts" button β redirects to login for guests, to profile/shop for signed-in users Fix
v4.0
June 10, 2026
LUGBULK catalogue from real Excel data + LUGBULK history in profile
πLUGBULK_2026.xlsx imported β 12,658 parts with BrickLink price data (sold/available min/avg/max) New
πΌοΈPart images β lazy-loaded from BrickLink CDN using Element ID + BL Color ID pattern New
πCart panel β slide-in cart, qty adjust, CSV export, running total New
πLUGBULK history tab in profile β year-by-year order table (2000βpresent), qty input per year, localStorage save, CSV export/import New
π¨147 color swatches in sidebar filter β searchable, multi-select New
v3.0
June 10, 2026
Login system, profile setup wizard, LUG public/private separation
πLogin page β sign in, register, forgot password, social login (Google/Facebook/Apple), password strength meter New
π€Profile setup wizard β 4 steps: avatar colour, LEGO interests (12 themes), build skill sliders, privacy toggles New
πLUG privacy β voting always private/anonymous, full member list members-only, about/events/gallery public New
πNav login-awareness β shows user name/avatar when signed in, Sign in button for guests on all pages Improved
π Project index (index.html) β cards for all pages with features listed New
v2.0
June 9, 2026
LUG governance, voting system, custom roles, postal address
πLUG governance rules β first registrant = Head, one LUG per user, leave/dissolve logic, LUG auto-dissolves when empty New
π³οΈVoting system β elections (52% threshold), polls, rule changes; anonymous votes, active/closed states New
π
Custom roles β create/edit/delete roles with granular permissions (8 permission types) New
π¬Postal address in LUG settings β official shipping/letter address, visible only to Head and Ambassador New
πHead transfer β voluntary transfer modal + 52% member vote path New
πPDF download on part detail β datasheet, XML parts list, CSV, LDR 3D model with progress animation New
πInstructions library page β 5 tabs, build checker (cross-reference collection vs set parts), download modal New
π§Shared CSS + JS β global variables, nav, buttons, modals, toast, tabs extracted to css/shared.css + js/shared.js Improved
v1.0
June 8, 2026
Initial prototype β all core pages designed and built
π Homepage β hero, category grid, featured listings, feature cards, live stream preview, LUG spotlight, blog feed, footer New
π§±Part detail page β price history chart (Chart.js, 4 time ranges), sellers tab, reviews, in-sets tab, color picker, price alert New
πSearch results β sidebar filters (category, condition, price, location, rating, color), sort, list/grid view, pagination New
π¦My Collection β parts table with qty editing, sets with ROI, wishlist, build checker, value charts (Chart.js), trade offers New
ποΈLUG club page β cover, stats bar, gallery, events, members grid, tabs, join/follow/leave actions New
π₯Live streams page β featured stream with live chat, stream grid with live/VOD badges, filters, Go Live button New
βοΈUser profile + blog β cover, stats, blog posts, blog editor, gallery, shop, activity feed, build skill bars New
π¨Design system β dark navy + gold LEGO palette, StudsUp brand, responsive layout New
π All pages in this release
π
π
π¦
π§±
π
ποΈ
π₯
π€
π
π
βοΈ
π
Homepage
home.html
Search
search.html
Parts catalogue
parts.html
Part detail
part-detail.html
My Collection
collection.html
LUG club
lug.html
Streams
stream.html
Profile + Blog
profile-blog.html
Instructions
instructions.html
Sign in
login.html
Profile setup
profile-setup.html
Changelog
changelog.html