A 48-port faceplate was wider than the screen, so the page grew and left black empty space. Ports now wrap to 12-wide on a phone and fill the card.
- ●Patch panels stay two rows of 12. A 48-port switch wraps to four rows of 12 on a phone; desktop still shows two rows of 24.
- ●Port keys stretch with the card. The page no longer scrolls sideways from the rack drawing.
admin@harborline.local was a demo-seat shortcut at the bottom of login, not a signed-in account. Those seats now sit under Harborline demo so the form stays empty.
- ●Sign in lede is your email. Tap Harborline demo only to walk the fictional company.
- ●Email and password stay empty until you type or open a demo seat. Demo is not Enlighten admin.
The A + LANTERN mark was flattening because the img box was 184×64 while CSS set a shorter height. It now uses the real 1838×640 ratio.
- ●BrandLogo width/height match the PNG. CSS aspect-ratio 1838/640, max-width none, object-contain.
- ●Header mark no longer sits in a min-w-0 flex child that can squeeze it. Footer bulb unchanged.
Menu rows are closer together so the list fits. The rail stays on screen and does not scroll into empty space past the last item.
- ●Nav links are 2rem tall with tight group gaps. Find, Jobs, Billing stay one word.
- ●Aside is sticky, viewport-tall, and clipped. Rail overscroll is off so the left of the page never goes blank below the last link.
Product chrome never falls back to the Enlighten lightbulb. The bulb stays in the Powered by footer only.
- ●BrandLogo fallbacks are lockup then /lantern-icon.png. The Enlighten lightbulb is not a header or tab icon.
- ●Favicon / apple-touch / PWA icons stay the purple-around-A square. Hard-refresh the tab if a cached bulb sticks.
The expanded rail is only as wide as the icon, the word, and a compact count. No extra padding canyon.
- ●Expanded rail is 10.5rem (168px). Collapsed stays 4.25rem icon-only. Labels stay one word and nowrap. Find is still Find.
- ●Nav uses px-1, gap-2, shorter group tracking. Jobs/Billing/admin badges stay, compact (min 1.25rem). Overflow hidden on the rail is fine.
- ●Darker purple rail scrollbar and hover chevrons stay. Did not start plant CSV.
The left rail overflow bar is a thin darker purple, with a short hover chevron instead of cheap native arrows.
- ●aside[data-collapsed] nav: track #1a1030 / #3b0764, thumb #6d28d9, orange hover. Custom chevrons nudge on hover. Firefox uses darker purple scrollbar-color. Did not widen the rail or start plant CSV.
The left menu is tighter. Open work orders and unpaid invoices show a small number. Plant items stay unbadged.
- ●Expanded rail is 12rem (192px). Collapsed stays icon-only. Org and account still truncate in the header, not by widening the menu.
- ●Jobs: open work orders (not billed). Billing: draft/open/sent invoices. Tests: unattached or a fail from the last 30 days. Docs stay quiet. Admin Launch/Health/Board/Clients/Mail badges stay.
- ●Rail overflow uses the same thin dark orange/purple scrollbar. Did not start plant CSV.
The orange search control is a rounded square like the input beside it — same height, 10px corners, lucide Search. Not a circle and not a wrapping pill.
- ●SearchForm submit is size-14 / size-12 with rounded-[10px], same as the Find input. .btn-lantern-icon overrides the pill 999px radius. Sidebar Find stays icon + Find.
The field tool no longer shows a thick white Windows scrollbar on the purple UI. Scrollbars are thin, dark-track, with a purple-to-orange thumb like the launch spine and lantern button.
- ●Firefox uses thin scrollbar-width and scrollbar-color. WebKit uses a 9px rounded thumb on html, body, overflow panels, the left rail, sheets, and textareas.
- ●Track stays near #0b0d14. Thumb is #6d28d9 into #f97316 / #ffb020. Hover is a touch brighter. Not a loud rainbow bar.
- ●Did not start plant CSV. Did not rewrite password hashes.
If you are signed in — including Enlighten admin — Launch, Changelog, and contractor pages use the collapsible left rail with lucide icons and the icon+LANTERN lockup. The old GTM top menu (Open the tool / Talk to Enlighten pills) is logged-out marketing chrome only, and those wrapping slogans are gone from compact header pills.
- ●SiteShell: usesAppChrome(pathname, viewer). A viewer always gets AppChrome, even on /launch, /changelog, and /for-contractors.
- ●MarketingChrome is logged-out only. Compact header is lockup + Sign in + Contact. Talk to Enlighten stays a sentence on the contractor page, not a wrapping pill.
- ●Find is a search icon. .btn-lantern stays nowrap. Did not start plant CSV. Did not rewrite password hashes.
Shop pages stay public: /launch, /changelog, /plan (business plan), and GET /api/health. Enlighten /admin/health and /admin/errors stay behind the operator seat. Live hashes stay put.
- ●Middleware lets /launch, /changelog, /plan, /api/health, and /api/ops/report through without a session.
- ●/plan redirects to /for-contractors/plan so the business plan is one short URL.
- ●/admin/health and /admin/errors stay Enlighten-only. Did not rewrite password hashes.
Login, signup, forgot, reset, marketing, pitch, changelog, and legal show icon + LANTERN from /lantern-lockup.png. Live /_next/image was 400ing the mark even though the PNG itself was fine.
- ●BrandLogo is a raw img to /lantern-lockup.png. Footer Powered by Enlighten stays /enlighten-icon.png. No Enlighten wordmark beside the lockup.
- ●next.config turns off the image optimizer so a leftover next/image cannot send chrome through /_next/image.
- ●remote-release copies the lockup into standalone and nginx httpdocs. Did not rewrite password hashes.
What's new is a public living log. Launch shows finish-speed dates. Enlighten health watches the public pages so a 5xx or unstyled shop page is a report, not a screenshot.
- ●Public /changelog and footer What's new. Audience admin rows stay on the Enlighten board only.
- ●Public /launch plus Enlighten /admin/launch. Finish-speed: chrome Tuesday 15 Sep 2026, then plant CSV → price book → invoice PDF → first building before charge Friday 30 Oct 2026. No fake weekly calendar. No Stripe.
- ●GET /api/health is public JSON. POST /api/ops/report is public. /admin/health is the same board as /admin/errors. Nav badge is open reports.
Charge-the-walk stays Friday, October 30, 2026. Remaining work now has actual dates: chrome/plan today, plant CSV 3 Oct, price book 10 Oct, invoice PDF 17 Oct, first real building 24 Oct. No Stripe.
- ●Public /launch, Enlighten /admin/launch, and /for-contractors/roadmap share one finish-speed sequence.
- ●Catalog due dates merge onto the live board without rewriting password hashes.
- ●Plant CSV is next. Stripe stays later.
The contractor launch strip was pulling the server store (node:fs, crypto, SMTP) into the client graph because it imported both getStore and the countdown. Shop pages now pass the deadline counts as props. instrumentation.ts was the webpack Edge leak — it dynamically imported the store without webpackIgnore. The live chrome — search icon, icon+LANTERN lockup, left rail — can ship.
- ●GtmLaunchStrip is presentational. Server pages load launch board data and pass deadline / done / total.
- ●instrumentation.ts loads the store with webpackIgnore so Edge webpack never sees node:crypto/fs/net/path/tls.
- ●store.ts imports server-only. Did not touch live password hashes. rsync still excludes data/.
The field tool chrome is a collapsible left sidebar with lucide icons. Header is the Lantern lockup only. Enlighten Studios sits in the footer as Powered by, not as a second wordmark beside LANTERN.
- ●Product header is icon + LANTERN. Org name is not printed next to the mark. Operator org is not shown in the header.
- ●Left rail: labels when open, icons when collapsed. Collapsed state persists in localStorage. Mobile opens the same nav in a left sheet from the hamburger.
- ●Find, Floors, Lens, jobs, billing, team, guide, and admin keep their routes. Feature flags still hide seats that do not have the module. Admin uses the same shell.
- ●Public /for-contractors pages keep a simple top marketing nav. Login lockup has no Enlighten Studios subtitle.
The orange Find control is a magnifying glass. Compact chrome uses icon + a real word. Slogan fragments that wrap (Find it, Open the tool) are gone.
- ●Search submit is lucide Search with aria-label Find. Sidebar Find stays icon + Find when open, icon-only when collapsed.
- ●Marketing header: Find with a search icon for signed-in shops, Contact for the mail CTA. Talk to Enlighten stays a sentence on the contractor page, not a wrapping pill.
Production deploy was blocked on a TypeScript error on /for-contractors/roadmap. Optional due dates still print when present. Did not start plant CSV.
- ●formatLaunchDeadline only receives a string due, not an empty object from 'due' in item on const PHASES.
- ●Chrome Tuesday 15 Sep 2026 and charge Friday 30 Oct 2026 stay the only calendar dates. Live hashes stay in /root/Lantern/data.
launch-changelog.tsx and the changelog store share one ChangelogEntry shape. The 4037d62 webpack build failed because the page still expected commit groups after the store rewrite. Footer, Terms, and Privacy stay public. Live hashes stay put.
- ●4037d62 failed next build: launch-changelog imported changelogGroups / changelogCommitCount / CHANGELOG_LIVE_* after StoreFile.changelog became items[].
- ●This deploy — ChangelogEntry lives on auth types. The launch log maps items onto commits so webpack typechecks. /terms and /privacy stay public. rsync still excludes data/.
Launch stays the deadline and the checklist. The Tuesday dump is on /launch. What’s new also lives at /changelog as a living log.
- ●Public /changelog with today’s work. Enlighten admin Changelog tab plus POST /api/admin/changelog.
- ●Entries persist in the tenant file as changelog. Merge-add only — never a reason to rewrite the live store.
- ●/launch and /admin/launch carry the plan and the Tuesday dump. /changelog is the footer’s living log.
The plan is on /launch and /admin/launch (not a link stub). The Tuesday diary is on those pages and also at /changelog.
- ●4037d62 after 04:16 UTC · This deploy — Put the business plan and Tuesday changelog on Launch. Hard-refresh /launch and /admin/launch.
- ●Public /changelog (What's new) is the same living log, newest first.
Public /launch is the deadline page (countdown, phases, live vs next). Enlighten /admin/launch is Mike’s checklist. Status writes into launchBoard in the tenant file (merge-add only). Deadline is Friday, October 30, 2026.
- ●7eae10c 04:14 UTC · Live — Report completed work to the Enlighten /admin/launch board. Countdown and checkboxes share one write path.
- ●POST /api/admin/launch and reportLaunchItem share one write path.
- ●Honest seed: Harborline walk and chrome are done; plant CSV, price book, invoice PDF, first building, and freeze-if-unpaid are not.
Public contractor landing, print one-pager, price sheet, plant-import scope, business plan, timeline, and sales playbook. Those routes are not behind login.
- ●cb385de 04:08 UTC · Live — Publish Lantern go-to-market pages and Cable Pro pricing.
- ●/for-contractors, /pitch, /for-contractors/plan, /roadmap, /playbook, /pricing, /import.
- ●Published price: $99 office, $35 field, extra building $30, import $1,500–$8,000 typical $3,500. No Stripe.
Eight review sheets at /brand. Mike locked kit 8 option 3: gold triangular A on a dark rounded square with a violet wash, plus the LANTERN wordmark. Favicon, apple-touch, and PWA icons are that square.
- ●8af9957 04:06 UTC · Live — Ship kit 8 option 3 as live Lantern product chrome.
- ●89c5191 03:18 UTC · Live — Add Lantern 10-mark logo kit for review.
- ●Mike’s choice is live: gold triangular A on a dark rounded square with a violet wash, plus the LANTERN lockup.
- ●Favicon, apple-touch, and PWA icons are the purple-around-A square only.
Studio mark and link sit at the bottom of the app panel and the login frame, pointing at enlightenstudios.us. Footer lists Terms, Privacy, Launch, Contact. /terms and /privacy are public.
- ●767b8aa 04:06 UTC · Live — Add Powered by Enlighten Studios credit to Lantern chrome.
- ●Powered-by credit on desktop, mobile, and login. Links to enlightenstudios.us.
- ●Legal copy on /terms and /privacy. Curl at 04:16 UTC still 307'd logged-out visitors to Sign in; this deploy lists them as public.
Fourth package for shops that only need PO and invoices — no closet map. /billing filters by number, PO, bill-to, site, SKU, status, and issued dates on shareable query URLs.
- ●e4f74a4 03:47 UTC · Live — Add billing-only package and invoice ledger search.
- ●Billing package: work orders, PO, invoices, SOP. No Find, Lens, floors, or Fluke as the job.
- ●Search the ledger with ?q= and ?status= so a shop can share a filtered view.
Billing is the shop’s ledger: work-order PO, catalog lines, Net 30. Enlighten can turn a module off for company admins; company admins can hide the same tools from field seats.
- ●0ba37cf 03:19 UTC · Live — Add customer invoices and two-layer feature flags.
- ●/billing is the contractor AR ledger (not Enlighten’s cut).
- ●Flags are company-level and seat-level. Invoice rows survive deploys with the rest of the tenant file.
A customer drawing becomes the Floors background. Drag an orange box; the crop sits under each room card. Harborline keeps its schematic until a PDF exists.
- ●8630e3b 02:09 UTC · Live — Add floor-plan PDF studio and location clips on Floors.
- ●839ee7f 03:04 UTC · Live — Fix PDF highlight so dragging paints a selectable area.
- ●Harborline schematic stays until a PDF exists.
A release rsyncs the app and excludes data/. Operator sign-in is not reset by shipping code. The live store stays on the server data directory. This log does not discuss credential internals.
- ●113a6d9 03:02 UTC · Live — Keep operator credentials on the live data dir.
- ●Deploy never sends or overwrites the live tenant file.
- ●Production LANTERN_DATA_DIR is the server data directory, not the build tree.
Two Harborline cards: company admin cannot open Enlighten Admin; user demo is field-only. Production mail submits to the box postfix. Mail tab shows host, port, and from.
- ●Company-admin demo cannot open Enlighten Admin. User demo is field-only.
- ●Production mail goes to local postfix on 127.0.0.1:25.
- ●Admin Mail tab shows the postfix target when SMTP_HOST is set, plus the existing test-send button.
- ●Demo cards invite a mapped-plant walk instead of leading with what the seat cannot do.
Package sits on the company (and optionally a seat) and maps onto module flags. Enlighten picks the mode on the client record. Harborline stays Advanced for sales walks.
- ●MSP Basic is plant/Find without billing the customer from Lantern. Cable Pro is the offer (jobs, Fluke PDF, invoices). Advanced is both.
- ●An employee who opens Jobs, Tests, or Lens sees intranet + Find copy, not a Cable Pro upsell, when that module is off for the seat.
Company admin is /team, separate from Enlighten /admin. Work orders carry a PO. Fluke is a PDF on the job — no LinkWare parse. SOP lives under Docs. Field and operator how-to books are /guide and /admin/guide.
- ●8893a8a 02:03 UTC · Live — Ship company roles, SOP, jobs, Fluke tests, and feature flags.
- ●Signup and first client contact are company admin. Harborline extra seats, SOP, a sample work order, and a LinkWare-style PDF seed when missing.
- ●Lens captures length and product. /guide for the shop; /admin/guide for Mike.
The form does not prefill Harborline. Tap a demo card to fill that seat. Forgot / reset mails a two-hour link. Admin is a different seat than the demo.
- ●Email and password start empty. Harborline fills only from the demo cards.
- ●/forgot and /reset issue a two-hour reset and mail the link.
The closet hole: desk phone on the wall jack (PoE, VLAN 20), workstation daisy-chained through the phone. Search an extension. File a phone from Lens. Open /phones for every Harborline location.
- ●Harborline phones are plant, not a separate directory. Extension search, Lens file, and a Phones tab for each location.
First stretch of the day. Lens stops covering the rack. Harborline becomes a signed-in demo tenant. Mike gets a real operator console. Clients lead with buildings so a phone can still reach Admin.
- ●MDF/IDF picker and port overlay sit off the live camera until a closet is selected, so the rack stays visible.
- ●Sign in exists. Harborline is the demo tenant. Accounts, billing, and buildings live in the store.
- ●Admin Clients lists every location and building. Board is a kanban. Tools cover demo reset, export, operators, and audit.
- ●The add-client form sits under the directory. The Admin chip stays in the header on a phone.