ERB Firsts

ERBFirsts.com Version Log  v0.30

ERBFirsts.com Version Log
================================================================================

================================================================================
VERSION v0.30 — 2026-04-06  [no generator — forum build Pass 6]
================================================================================
RESULTS FROM v0.29: Post Reply button non-functional. Category page showed
  no topics. New Topic button non-functional. Moderation queue wiring
  incomplete.

FIXED:
- erb-forum-topic.html: fully wired to Firestore
    Posts load from Firestore posts collection (pending=false only)
    Topic title, reply count, view count loaded from topics collection
    View count increments on each visit
    Post Reply submits to Firestore with: content, author info, attachments,
      pending flag (true for newUser), reactions map, createdAt timestamp
    File attachments upload to Firebase Storage, URLs stored with post
    Banned/view-only users blocked with clear message
    New users: post saved as pending=true, user shown review message
    Reactions write reaction counts to Firestore
    Lightbox for image attachments
- erb-forum-category.html: fully wired to Firestore
    Topics load from Firestore topics collection ordered by date desc
    New Topic creates topic + first post in Firestore
    Same banned/viewOnly/newUser checks apply
    Topic links correctly pass cat and id params to topic page
================================================================================

================================================================================
VERSION v0.29 — 2026-04-06  [rebuild_pass17.py + forum nav updates]
================================================================================
RESULTS FROM v0.28: Version Log still in Misc dropdown on all pages.
  Admin panel had no nav link — no way to reach it while browsing.
  Admin nav item not visible to admin users.

FIXED:
- rebuild_pass17.py: Version Log removed from Misc dropdown on all
    generator-built pages (cover pages + all detail pages)
- All static pages: Version Log removed from Misc dropdown
- All static pages: Admin nav item added (hidden by default)
- index.html: auth script added — Admin nav shows for admin users
- All forum pages: Admin nav item added to forum nav
- All forum pages: auth scripts updated — Admin nav shows for admin users
- erb-forum-admin.html: Admin nav item added to its own nav
================================================================================

================================================================================
VERSION v0.28 — 2026-04-06  [no generator — forum Pass 5 + email fix]
================================================================================
RESULTS FROM v0.27: Admin panel not yet built. Home page email showing as
  [email protected] due to Cloudflare obfuscation not working on Firebase hosting.

FIXED:
- erb-forum-admin.html: new admin panel with 6 sections:
    Forum Settings (max file size, max attachments, allowed types) → Firestore
    Custom ERB Reactions (4 slots, GIF upload, label, enable/disable) → Firestore
    Categories (add, edit, lock/unlock, delete) → Firestore
    Users (search, ban, view-only, promote/demote moderator) → Firestore
    Moderation Queue (approve/reject pending first posts) → Firestore
    Storage Usage (guidance to check Firebase Console)
    Access control: redirects to login if not authenticated,
    shows Access Denied if not admin role
- index.html: fixed email obfuscation — replaced broken Cloudflare cdn-cgi
    encoding with JavaScript character array decode (works on any static host)
    Both sig email and footer email fixed
- index.html: version comment bumped to v0.27
================================================================================

================================================================================
VERSION v0.27 — 2026-04-06  [no generator — forum build Pass 4]
================================================================================
RESULTS FROM v0.26: Forum pages had no login functionality. Login, reply
  composer, reactions, and New Topic button all static/disabled.

FIXED:
- erb-forum-login.html: new Google Sign-In page
    Google OAuth via Firebase Auth (popup flow)
    On first login: user record created in Firestore users collection
      (uid, displayName, email, photoURL, joinDate, postCount, role,
       banned, viewOnly, newUser flag for moderation queue)
    Already-logged-in state shows user name/avatar + Sign Out button
    Redirects to forum index after successful login
- erb-forum-auth.js: shared Firebase init module
- erb-forum-index.html: nav Login link updates to first name when logged in
- erb-forum-category.html: New Topic button enables when logged in
- erb-forum-topic.html: reply composer and reactions enable when logged in
================================================================================

================================================================================
VERSION v0.26 — 2026-04-06  [rebuild_pass16.py]
================================================================================
RESULTS FROM v0.25: Footer green bar too wide (full viewport width) and too
  much padding (2rem top/bottom) on all pages. Forum page footer also had
  wrong color and excess padding.

FIXED:
- erb-style.css: footer padding reduced from 2rem to 4px
- erb-style.css: footer max-width set to var(--content-width) with margin auto
    — green bar now constrained to content width, not full viewport
- erb-forum-index.html: footer inline style updated to match global footer
    (same dark green #2d4a2d, 4px padding, content-width constrained)
- All generated pages rebuilt with updated CSS
================================================================================

================================================================================
VERSION v0.25 — 2026-04-06  [rebuild_pass16.py]
================================================================================
RESULTS FROM v0.24: Forum nav link on all generator-built pages still pointed
  to old phpbb2 forum. Misc dropdown in generator had old items (ERB Interview,
  Tour of Ekstrom Library) not matching live site. erb-forum-index.html logo
  shifted left due to wrong header structure (erb-title vs logo-nav-wrap).

FIXED:
- rebuild_pass16.py: Forum nav link updated from phpbb2 to
    {prefix}/forum/erb-forum-index.html — works correctly for both
    root-level cover pages (.) and subfolder detail pages (..)
- rebuild_pass16.py: Misc dropdown corrected to match live site:
    For Sale, Links - ERB Related, Media Files, Mystery Inscription, Version Log
- rebuild_pass16.py: pre-existing bug fixed in build_other_detail —
    prev_lk_pn_bot / next_lk_pn_bot variables were missing (NameError)
- erb-forum-index.html: header fixed — logo-nav-wrap replaces erb-title,
    forum-nav-wrap moved inside logo-nav-wrap,  wrapper removed from logo
================================================================================

================================================================================
VERSION v0.24 — 2026-04-06  [no generator — forum build Pass 1]
================================================================================
RESULTS FROM v0.23: Forum nav item still linked to old phpBB2 forum at
  erbfirsts.com/phpbb2/. New forum build not yet started.

FIXED:
- Forum Pass 1: static shell pages created for new Firebase-based forum
    erb-forum-index.html — forum index with 6 categories, stats bar,
      who's-online strip, Login to Post prompt, responsive layout
    erb-forum.css — forum-specific styles extending erb-style.css
    Both files use erb-forum-* naming convention for BAT routing
- DeployERBFirsts_17.bat: two additions for forum support
    Added: if not exist "%PUBDIR%\forum" mkdir "%PUBDIR%\forum"
    Added: erb-forum routing rule — ^erb-forum prefix routes to public\forum\

STILL TO DO:
- Update main site nav Forum link from phpbb2 to forum/erb-forum-index.html
    (deferred until forum is fully built and live)
- Forum Pass 2: category/topics listing page
- Forum Pass 3: topic/post page with reply composer + file attachments
- Forum Pass 4: Google login (Firebase Auth)
- Forum Pass 5: Admin panel + configurable settings
- Forum Pass 6: Moderation queue + ban/view-only controls
- Forum Pass 7: Rate limiting + Firestore security rules
================================================================================

================================================================================
VERSION v0.23 — 2026-04-05 PST  [no generator changes — static pages only]
================================================================================
RESULTS FROM v0.22: F.E.A.S.T. pages updated. No media page existed.
  Buy/Sell box still on home page. Old ERB Interview and Library Tour pages
  separate with no modern styling.

FIXED:
- erb-misc.html rebuilt as "Media Files" page with:
    HTML5 video player for ERB_library_visit.mp4 (960x720 display)
    HTML5 audio player for ERBfirsts_interview.mp3
    Both set to preload=auto for immediate playback on click
    Description text from original pages preserved
- index.html: removed For Sale / Buy ERB box from sidebar
- All modern static pages: Misc dropdown updated —
    removed "ERB Interview" and "Tour of Ekstrom Library"
    added "Media Files" after "Links — ERB Related"
- DeployERBFirsts.bat: added public/media/ folder creation
    added .mp3/.mp4/.wmv routing to public/media/
    retained ROUTING debug lines and rename try/catch fix
================================================================================

================================================================================
VERSION v0.22 — 2026-04-05  [no generator changes — static pages only]
================================================================================
RESULTS FROM v0.21: F.E.A.S.T. report pages were old Word-exported HTML with
  no site styling. Monthly prior report links broken (wrong extensions).
  erb-feast.html section order wrong. No sort functionality.

FIXED:
- All 12 x 2005 monthly FEAST reports rebuilt as clean modern HTML with:
    site fonts (Playfair Display + Source Serif 4), mustard header color (#eec400),
    sticky column header, N/A for Auto-Biography date, $0 values → blank,
    typo fixed (City ofGold → City of Gold)
- All 19 x 2003/2004 monthly FEAST reports rebuilt with same styling
- erb-feast.html section reorder: title → subtitle → meta line → table →
    Prior Reports box → intro paragraph → footnotes → footer
- erb-feast.html: "below" → "above" in intro paragraph
- erb-feast.html: all 2005 monthly links fixed from .htm → .html
- erb-feast.html: all 2004 monthly links fixed from .htm → .html
- erb-feast.html: Prior Reports links open in new tab (target=_blank)
- erb-feast.html: compact meta line — Total left, FINAL REPORT center,
    REPORT DATE right, all on one line
- erb-feast.html: sticky logo/nav (position:sticky on .erb-header)
- erb-feast.html: sticky table header rows offset by nav height via window.load
- erb-feast.html: sortable columns — click to sort asc/desc/default series order;
    # column always shows sequential row number; ▲/▼ sort indicators
- erb-feast.html: sort click scrolls page to table header position below nav
- DeployERBFirsts.bat: rename fix — try/catch suppresses red error when
    ERBFirsts-*.zip already exists in Downloads
- DeployERBFirsts.bat: ROUTING/EXT-CHECK/AFTER-CLEAN debug lines added to
    diagnose why erb-feast.html was not being deployed from zip
================================================================================

================================================================================
VERSION v0.21 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.20: Research pages (erb-dj, erb-feast, erb-signatures) still had
  old nav missing Version Log in Misc dropdown.

FIXED:
- Nav updated on all 3 Research pages with correct Misc dropdown
================================================================================


================================================================================
VERSION v0.20 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.19: Version number still showing on home page. Static pages
  (erb-misc, erb-sell, erb-erblinks, erb-inscription, home) had outdated nav
  missing Version Log in Misc dropdown.

FIXED:
- Version number removed from home page footer
- All static pages nav updated with correct Misc dropdown including Version Log
- Consistent nav across all page types (home, covers, detail, static)
================================================================================


================================================================================
VERSION v0.19 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.18: Version number showing on cover pages and home; home showing
  stale version. Version number should only appear on Version Log page.

FIXED:
- Removed version number from all cover pages (Tarzan, MPV, Other)
- Removed version number from all static pages except home and version log
- Version log page now shows current version number next to heading
- Home page updated to v0.19
================================================================================


================================================================================
VERSION v0.18 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.17: Reprint anchor working but landing slightly too high (194px).

FIXED:
- scroll-margin-top reduced from 194px to 150px on reprints anchor
================================================================================


================================================================================
VERSION v0.17 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.16: Reprint anchor landing 1/3 into Burt covers (consistent across
  all books). Bottom nav scroll working. Anchor structure correct but insufficient
  upward offset.

FIXED:
- Reprint anchor: added scroll-margin-top:194px to <a id="reprints"> element
    (calculated from h2+h3+hr+spacing+1/3 image height = ~194px total offset)
- Version number and log updated
================================================================================


================================================================================
VERSION v0.16 — 2026-04-02  [rebuild_pass15.py]
================================================================================
RESULTS FROM v0.15: Reprint button scroll approach wrong. Version log inaccurate.

FIXED:
- Reprint anchor: replaced scroll-margin approach with classic invisible offset
    anchor: <a id="reprints" style="display:block;height:0;visibility:hidden;"></a>
    placed immediately before <h2>Reprint Editions</h2>. Bulletproof HTML.
- Version log: completely rewritten with accurate entries for every version,
    correct version numbers, generator script filename for each version,
    what was fixed and what remained broken
================================================================================

================================================================================
VERSION v0.15 — 2026-04-01  [rebuild_pass14.py — modified]
================================================================================
RESULTS FROM v0.14: Reprint button now lower than before (80px too much).
  Version log had all entries incorrectly renamed to v0.11.

FIXED:
- scroll-margin-top reduced to 8px (nav scrolls away so minimal offset needed)
- Version log txt and HTML files updated (though log entries were still inaccurate)

STILL BROKEN:
- Reprint button still unreliable — scroll-margin-top approach fundamentally wrong
    for this use case
- Version log entries were all labeled v0.11 (corrupted by blanket regex replacement
    in an earlier session)
================================================================================

================================================================================
VERSION v0.14 — 2026-04-01  [rebuild_pass14.py]
================================================================================
RESULTS FROM v0.13: Reprint button barely showing bottom of A.L. Burt text —
  scroll-margin-top:10px not enough offset. Bottom nav landing in middle of page.

FIXED:
- scroll-margin-top on h2#reprints increased to 80px
- Bottom nav scroll: investigated — issue was scroll saving 'bottom' but
    scrollHeight not reached due to timing; confirmed pn-bottom class working
    and JS saving/restoring correctly

STILL BROKEN:
- Reprint button still not landing at "Reprint Editions" heading — scroll-margin-top
    unreliable across browsers (80px overshoots because nav is not fixed/sticky)
================================================================================

================================================================================
VERSION v0.13 — 2026-04-01  [rebuild_pass13.py]
================================================================================
RESULTS FROM v0.12: Acorn caption still below wrong photo. Reprint button still
  not landing at "Reprint Editions" heading. Scroll position not working for
  bottom nav arrows.

FIXED:
- ext_side_cap support added to Tarzan renderer: renders styled italic caption
    in text box below ext_side image
- t1: ext_side_cap set with acorn caption text; ext_side_maxw reduced to 200px;
    caption key removed from ident_paras copyright page item (was wrong location)
- Reprint section: id="reprints" moved from wrapper div to <h2> element directly;
    scroll-margin-top:10px added — clicking button now scrolls to heading
- Scroll position save/restore: clicking top pn-left/pn-right saves window.scrollY
    to sessionStorage; restored on page load
- Bottom nav: pn-bottom class added to bottom bar links; JS saves 'bottom' string;
    on load restores to document.body.scrollHeight

STILL BROKEN:
- Reprint button landing just below "Reprint Editions" heading — scroll-margin-top
    value needs adjustment
- Bottom nav scroll: landing in middle of page not at true bottom
================================================================================

================================================================================
VERSION v0.12 — 2026-04-01  [rebuild_pass12.py]
================================================================================
RESULTS FROM v0.11: Reprint button img path wrong depth. OLD ENGLISH text still
  above image. Acorn caption still wrong photo. t1_ext3 appearing twice.

FIXED:
- Reprint button img path corrected: ../images/ for Tarzan (not ../../images/)
- layout:row renderer updated: text and image now in single flex div together;
    standalone <p> suppressed when layout=row active
- t1 ident_imgs=None: cleared old ident_imgs entry that was causing t1_ext3 duplicate
- caption key added to ident_paras renderer: renders styled italic box below image
- t1: Acorn caption moved to caption key on the ext_side item (t1ext2.jpg);
    removed from ident_paras copyright page item where it was wrongly placed

STILL BROKEN:
- Acorn caption still appearing below copyright page photo not below acorn spine photo
    (ext_side and ident_paras are different rendering paths — caption key was added
    to ident_paras renderer but ext_side doesn't use that path)
- Reprint button scrolling to middle of A.L. Burt text not to "Reprint Editions" heading
================================================================================

================================================================================
VERSION v0.11 — 2026-04-01  [rebuild_pass11.py]
================================================================================
RESULTS FROM v0.10: Version stale on home/covers. Reprint button no hover.
  OLD ENGLISH/GOTHIC text/photo still separate lines. Acorn caption wrong location.
  t24 duplicate caption. erb-o28 photo distortion.

FIXED:
- Version strings updated to v0.11 on all generated pages (VERSION_COMMENT)
- Static files (erb-index, erb-shelf, erb-misc, etc.) version updated directly
- Reprint button replaced with reprint_button.jpg image; data-hover attribute
    for swap to reprint_button_2.jpg on mouseover; placed right of book title
    in header for all books with reprint data; JS hover script added
- layout:row support added to ident_paras renderer — text and image in same flex div
- t1 OLD ENGLISH/GOTHIC: layout:row applied — each label now beside its photo
- t1: Acorn caption moved to caption key on copyright page photo item
- t24: extra= field cleared (removed duplicate label caption)
- erb-o28: converted to ident_paras with both photos (cover + spine) inline

STILL BROKEN:
- Reprint button img path using ../../ (wrong depth for Tarzan pages)
- OLD ENGLISH text appearing above image not beside it (separate <p> tag issue)
- Acorn caption still below wrong photo (copyright page not spine photo)
- t1 ident_imgs still set causing t1_ext3 to render twice
================================================================================

================================================================================
VERSION v0.10 — 2026-04-01  [rebuild_pass10.py]
================================================================================
RESULTS FROM v0.9: Reprint DJs now showing. Several book-specific layout issues.

FIXED:
- Reprint button: green "↓ Reprint Editions" jump button added to identifier section
    for all books with reprint data (t1-t5); id="reprints" anchor on reprint div
- t1: OLD ENGLISH/GOTHIC split into separate ident_paras items with own images
- t5: t5_ext1.jpg enlarged to 320px
- t26: Converted to ident_paras; ASP note text corrected; t26_ext.jpg inline
- t27: Duplicate spine image removed from photos section
- t24: Copyright page variant photos (ext7/1/6/8) moved inline in ident section;
       label photos (ext4/ext3) with individual captions side by side
- erb-o28 (Girl from Farris): Both photos now display side by side inline;
    Other renderer ident_paras support added
- t27: Full Whitman invoice attribution text added (Brian J. Bohnett Dec 2007);
       Canaveral 1963 paragraph added with t26_ext.jpg photo

STILL BROKEN:
- Home showing v0.6, Tarzan covers showing v0.3 (static files not regenerated)
- Reprint button hover animation not working
- OLD ENGLISH/GOTHIC text and photo still on separate lines
- Acorn caption in wrong place (below wrong photo)
================================================================================

================================================================================
VERSION v0.9 — 2026-04-01  [rebuild_pass9.py]
================================================================================
RESULTS FROM v0.8: Reprint DJ images not displaying. t2/t4 photos stacking.

FIXED:
- All 21 reprint DJ filenames corrected to match exact Firebase names:
    Rule confirmed: underscore immediately before "dj" removed everywhere
    e.g. a_toa_g&ddj.jpg, a_bot_burtdj.jpg, a_rot_burt_reprodj.jpg, etc.
- display:inline-block;vertical-align:top added to ident_paras and ident_imgs
    image renderers — photos now display side by side

STILL BROKEN:
- Various layout/content issues across t24/t26/t27/t1/t5/erb-o28 reported next session
================================================================================

================================================================================
VERSION v0.8 — 2026-04-01  [rebuild_pass8.py]
================================================================================
RESULTS FROM v0.7: t27 missing extra photo. t24 missing t24_ext1. t1 copyright
  page too small. t2 Canadian photos duplicating enlarged below content.
  t4 title/copyright photos broken. t5 five-books photo too small + duplicate.

FIXED:
- t27: t27_ext.jpg added as ext_side (main spine photo, 320px float right);
       t27_ext1.jpg in photos section
- t24: ext_pairs corrected — t24_ext1.jpg added, pair order fixed
- t1: Copyright page (t1_ext2.jpg) enlarged to 350px; ext_side enlarged to 340px;
      duplicate copyright page entry removed from ident_imgs
- t2: Canadian photos moved inline in ident_paras at 200px; full-width duplicates
      removed from photos section
- t4: Title/copyright photos moved inline in ident_paras at 320px; removed from
      photos section (ext_pairs cleared)
- t5: Five-books photo (t5ext.jpg) ext_side enlarged to 360px; duplicate ext_pairs
      entry removed
- ext_side_maxw and imgs_maxh support added to renderer

STILL BROKEN:
- Reprint DJ images not showing (wrong filenames in generator)
- t2/t4 photos still stacking vertically instead of side by side
================================================================================

================================================================================
VERSION v0.7 — 2026-04-01  [rebuild_pass7.py]
================================================================================
RESULTS FROM v0.6: DJ captions missing/wrong for most books. t1 DJ filename wrong.
  Reprint G&D images not displaying (& encoding bug in HTML src attribute).

FIXED:
- All 27 Tarzan DJ captions assigned correctly from ASP source:
    12 reproduction DJs (standard caption), 14 original DJs (unique captions),
    t27 confirmed no DJ exists
- t1 DJ filename corrected: t1_dj.jpg → t1dj.jpg
- Reprint src encoding fixed: & literal in src= URL, &amp; only in alt= text
- t6/t7/t8/t10/t11/t13/t26/t28 DJ images added (were None)
- t9/t12/t14/t15/t16/t17/t18/t19/t20/t21/t22/t23/t24 unique DJ captions set

STILL BROKEN:
- t27 missing extra photo; t24 missing t24_ext1.jpg
- t1 copyright page photo too small; t2/t4/t5 photo layout issues
================================================================================

================================================================================
VERSION v0.6 — 2026-03-31  [rebuild_pass6.py]
================================================================================
RESULTS FROM v0.5: Reprint images all same size, not distinguishing covers vs DJs.

FIXED:
- Reprint covers: max-height 130px portrait; spines max-width 45px narrow
- Reprint DJs: max-width 270px landscape, separate row from covers
- Identifier ext-row images: max-height 160px with auto width (proper proportions)
- All applies to t1-t5 reprint sections
================================================================================

================================================================================
VERSION v0.5 — 2026-03-31  [rebuild_pass5.py]
================================================================================
RESULTS FROM v0.4: Ext images still wrong sections on t1/t2/t4/t5.

FIXED:
- t1: OLD ENGLISH and GOTHIC images now inline with correct identifier paragraphs
      using ident_paras; copyright page photo (t1_ext2.jpg) inline
- t2: Canadian edition photos (t2_ext1/2/3) now inline below Canadian paragraph
- t4: Title page and dedication photos (t4ext/t4ext1) inline beside identifier text
- t5: Joe Lukes comparison photo (t5_ext1) now below Joe Lukes paragraph

STILL BROKEN:
- Reprint section image sizing — covers/DJs/spines all same size
================================================================================

================================================================================
VERSION v0.4 — 2026-03-31  [rebuild_pass4.py]
================================================================================
RESULTS FROM v0.3: Shelf links wrong. Index bookshelf link broken. FEAST/ext issues.

FIXED:
- Shelf: Added dynamic JS scaling so image map coordinates scale with image width
- Shelf: Fixed bookshelf image on index.html linking to erb-shelf.html
- t1: FEAST moved after reprint section; OLD ENGLISH/GOTHIC identifier text added;
      t1dj.jpg added; G&D missing images added (a_toa_g&d_2dj, a_toa_g&d_3dj);
      G&D text corrected (1927-1973, artwork change detail)
- t2: FEAST moved after reprint; t2dj.jpg added; Shaun Hoadley credit added
- t3, t4: FEAST moved after reprint
- t5: FEAST moved after reprint; Joe Lukes credit added; DJ caption fixed
- Version log added (this file)

STILL BROKEN:
- t1-t5 ext images still rendering in wrong section or wrong size
================================================================================

================================================================================
VERSION v0.3 — 2026-03-29  [rebuild_pass3.py]
================================================================================
FIRST WORKING BUILD. Basic structure in place.

KNOWN ISSUES:
- Shelf links going to wrong book (image map not scaling with image width)
- Bookshelf image on index.html not linking to shelf page
- t1-t5 FEAST tables in wrong position (should appear after reprint section)
- t1-t5 identifier ext images in wrong section (photos vs identifiers)
- Reprint sections incomplete/missing on some books
================================================================================