Session logs
Session logs
A working journal of paired sessions between Hasmukh and Claude, across every project. Each entry captures what was built, what changed, what got stuck, and what is still open. Newest first; the badge on each card shows the date and the project it belongs to.
20 June 2026, afternoon · Zoom CompanionNamed per-session recording logs (v0.14.0)
Hasmukh is running the Medilearn camera app in an all-day production. The Zoom meeting and the bot sit in it all day. Between sessions there are speaker changeovers, nature breaks and lunch or coffee breaks, where most participants switch their cameras off as expected.
18 June 2026, morning · s2l.onlineNewsletter bot protection
Hasmukh's daily activity digest showed bot sign-ups arriving on the newsletter form (gibberish names, padded-Gmail addresses — the same actor that had hit the sign-up page and created fake accounts). He asked me to review the newsletter form and add a guard rail if needed.
16 June 2026, evening · Zoom CompanionBuild kit for Peter Sargeant
The operator asked for a way to share how the Camera Monitor app was built with a friend, Peter Sargeant, so that Peter could paste a single prompt into his own Claude Code account and end up with the same app.
15 June 2026, evening · s2l.onlineBot protection (contact form and sign-up) and page width
Hasmukh reported too many bot messages coming through the "Send us a message" contact form and wanted a way to confirm a real person is sending.
13 June 2026, evening · VodalibraryVodalibrary: 6-digit code sign-in, and email moved off SendGrid
Changed how people sign in to vodalibrary.online. Instead of clicking a link in an email, members now type a 6-digit code that we email them. This matches the experience on the doctors' site (medilearn.africa).
13 June 2026, morning · Medilearn"Check on HPCSA" button fixed (dead register link)
Continuation of the 12 June session. The original report was that a button on the ML Doctors admin page "takes me to the URL and nothing happens". The early part of this session assumed the Approve button was the culprit and confirmed that Approve works correctly end to end.
12 June 2026, evening · Docs siteSession recordal by date and group on the docs site
Hasmukh asked for a review of documentation.mobilearn.africa and for every working session to be recorded there by date and labelled by project group, with multiple sessions on the same day easy to tell apart, and set "log and publish" as the trigger phrase for immediate publishing.
12 June 2026, evening · MedilearnPasswordless doctor system, hardening and fixes
A long working session on medilearn.africa's doctor verification. Started as a planning request and became a full build-out.
12 June 2026, evening · MedilearnFirst name and surname split, and sign-in repair
Hasmukh asked for the doctor sign-up to capture First Name and Surname separately (instead of one Full name box), since the HPCSA register is searched by surname, with email and MP number as before, and approval continuing to unlock the recordings.
12 June 2026, morning · MedilearnDoctor authentication for medilearn.africa recordings
An overnight-and-afternoon session that took the medilearn.africa doctor verification system from "built but quietly broken" to live and public.
11 June 2026, afternoon · Medilearnmedilearn.africa domain audit
Hasmukh shared the domains.co.za DNS management link for medilearn.africa (service 403352) and asked for a deep dive into what had actually been built on the domain, as the history had become confusing.
10 June 2026, evening · Emailmedilearn.africa outbound email migration
Hasmukh, working from Kenn's guide, asked for help moving medilearn.africa's outbound email off SendGrid onto Mailgun; the session started on the evening of 10 June 2026 and spanned into 11 June, wrapping up just after midnight.
9 June 2026, evening · MedilearnPlanning doctor verification and gated recordings
Hasmukh asked how to plan and execute a way to put the Past Events recordings behind doctor verification on the live medilearn.africa.
9 June 2026, afternoon · GuidesStudy guide system rebuild without Make
The Make.com webhook was replaced with a same-origin /submit endpoint on the VPS, so quiz results from the staff handbooks at handbook.s2l.online now post directly to the Monday.com board "Study Guide Completions" (18416710291).
8 June 2026, evening · s2l.onlineServer root password reset and ZoomISO Terminal help
Hasmukh reopened an older session (originally 26 May) in the evening to ask how to recover the root password for the server.
8 June 2026, evening · GeneralReviewer and documentation password resets, site inventory
Hasmukh reopened an older worktree session in the late afternoon with a string of access questions.
7 June 2026, morning · GeneralInteractive studio wiring diagram HTML
Although it ran in the PageMotor 0.9.3b folder, this session had nothing to do with PageMotor: across 6 and 7 June it built interactive HTML maps of the broadcast studio wiring (ATEM switcher, Mac Studio, SDI/HDMI converters, Yamaha DM3 audio and more).
5 June 2026, evening · PageMotorPageMotor 0.9.3b rollout to three local sites
Claude read and summarised Kenn's build-safety brief for PageMotor 0.9.3b (a small two-file bugfix patch on 0.9.2b), flagging that the brief's token field was blank and taking no action until asked.
5 June 2026, afternoon · PageMotorPageMotor 0.9.2b rollout to local factory sites
Took delivery of the PageMotor 0.9.2b update folder (new core, two AI skill plugins, and Kenn's CC-to-CC build-safety brief) and rolled it out across the local PageMotor-Factory environment.
4 June 2026, evening · PageMotorPageMotor 0.9 source of truth and Discovery AI pipeline
In this session, run with Kenn, the latest PageMotor codebase was locked in as the canonical source of truth, a full local PHP and MySQL stack was installed on the Mac, and the whole Discovery AI pipeline was then built on top of it: an interview plugin that produces a Design Brief, the Marula School of Medicine demo site synthesised from that Brief, three ways to ship a finished site, two interactive lesson guides, and a design-diversity gate after Hasmukh flagged that the outputs were looking samey.
4 June 2026, afternoon · PageMotorKenn's PageMotor 0.9.1 brief and memory refresh
Kenn's Claude Code supplied a build-safety brief for PageMotor 0.9.1b listing five known faults that can break sites during building, the worst being a theme save failure when a Design Option contains a raw var(...) value.
3 June 2026, evening · MedilearnSafari wide margins on the homepage
Hasmukh noticed the live medilearn.africa homepage showing wide empty margins on the sides in Safari, while it looked fine in Chrome, and asked why. Investigated the site's styling end to end and found no fault in the website.
3 June 2026, evening · Discovery AITIB AI builder, new site for Crossing the Line
Hasmukh asked to create a new website using the TIB AI builder that Kenn set up, the same one used for the Tech Plus Things site. I traced the builder to discovery.mobilearn.africa (the tibaai-discovery plugin), read its method, and ran it for him.
2 June 2026, evening · s2l.onlineZoomISO v3 text course built and published on s2l.online
Hasmukh supplied the official ZoomISO version 3.0.3 PDF manual and asked for a deep, lessons-style text course built from it and published on s2l.online, so he can learn the software properly.
2 June 2026 · MedilearnPast Events video description beside the Watch button
Hasmukh asked to take the description from a talk's video (the description box on Vimeo) and show it to the right of the green "Watch the recording" button in the Past Events spotlight, the same idea used on s2l.online. Bridget Hodkinson's Gout talk was the worked example.
2 June 2026 · MedilearnPast Events page restyled as a gallery
Restyled the Past Events page on the live medilearn.africa site to match a podcast-style reference Hasmukh shared. The most recent event now sits large at the top as a featured item, with all events shown below as a gallery of photo tiles.
2 June 2026 · MedilearnPast Events: Bridget and Mashiko recordings
Added the recorded video of Prof Bridget Hodkinson's "Gout: What's New" talk to the live Past Events page (medilearn.africa). Located the matching Vimeo recording by its tag 20251001bridget , set it to play privately only on the live site, and attached it to the correct event.
1 June 2026 · Medilearnmedilearn.africa Vimeo connection and Jantina past-event recording
Connected the live medilearn.africa site to Vimeo (manual fetch only, no automation), then added the recorded Jantina de Vries ethics talk to the Past Events page so it plays on the site.
28 May 2026 · GeneralVangelis MacMini workspace catch-up
Hasmukh opened the project from a different machine, the Vangelis MacMini, and asked for a review of the workspace and a summary of everything done so far. No site changes were made this session.
28 May 2026 · MedilearnMedistage go-live to medilearn.africa
Took the site previously at medistage.medilearn.africa live as the new medilearn.africa. The old WordPress site (previously hosted at 41.222.32.14) was archived to iCloud and then replaced. Site is live, secure, and indexable. Old medistage links 301 to the new address.
28 May 2026 · Discovery AIDiscovery AI medical school track analysis
Hasmukh asked whether the Discovery AI plugin on tibaai.org could be adapted for a medical school attached to a teaching hospital, covering clinical care, cutting-edge research, and the training of scientists and healthcare workers.
27 May 2026 · MedilearnSetshedi caption, lectures list page, ML Lectures plugin
Three pieces of work on medistage.medilearn.africa today. First, a caption was added beneath the Prof Mashiko Setshedi portrait in the UCT Partnership section of the homepage.
26 May 2026, evening · Docs siteOverview page session-logs cleanup
Hasmukh reported that the Session logs section on documentation.mobilearn.africa/overview/ looked broken. Investigation showed three distinct rendering glitches in the most recent entries that the page had picked up over the last few days of publishing.
26 May 2026, morning · s2l.onlineActivity monitoring: on-site dashboard and daily digest
Started by checking whether the sign-in and sign-up emails sent by the S2L Magic Login plugin are still being delivered.
26 May 2026 · MedilearnMedistage under-construction notice
Hasmukh wanted visitors to know the site is still being built. He picked the slim top-of-page banner option.
26 May 2026 · Medilearnmedistage founder photograph
Hasmukh asked to insert an image into the "Founder photograph" placeholder on the medistage homepage, in the section headed "Born from medicine, built through technology, ignited by COVID."
26 May 2026 · MedilearnUnhide Register Now button on medistage homepage
Hasmukh asked for the "Register Now — It's Free" button on the medistage homepage to be brought back. The button had been hidden on 25 May 2026 with an inline display:none while the session title and date were still placeholders.
26 May 2026 · Medilearnmedistage nav buttons broken from other pages
Hasmukh reported that the top navigation buttons on medistage.medilearn.africa (About, What We Offer, How It Works, Partner With Us, Contact, Register for Next Session) did nothing when clicked from a page other than the homepage.
26 May 2026 · Medilearnmedistage live session image
Hasmukh shared a Zoom-style image of 12 South African doctors on a live call and asked to drop it into the "Not a webinar. A live clinical experience." block on the medistage homepage, replacing the placeholder that read "Live session photo or Zoom screenshot goes here".
26 May 2026 · Medilearnmedistage how-it-works connector line alignment
Hasmukh shared a screenshot of the "How it works" section on the medistage homepage and pointed out that the thin horizontal connector line between the three numbered circles looked misaligned. Confirmed the site in question was medistage.medilearn.africa.
26 May 2026 · MedilearnFCP Part 1 Refresher Course landing page on medistage
Following the earlier session that brought the "Register Now" button back on the medistage homepage banner, Hasmukh asked for a proper landing page behind that button.
26 May 2026 · Medilearnmedistage deactivate "Read the full story" button
Hasmukh sent a screenshot of the founder section on the medistage homepage showing the "Read the full story →" button under Dr Hasmukh Gajjar's bio, and asked for the button to be deactivated.
26 May 2026 · MedilearnDeactivate "Education built for doctors in practice" buttons on medistage homepage
Hasmukh sent a screenshot of the offerings grid on the medistage homepage and asked for the four call to action buttons in that section to be deactivated for now.
25 May 2026 · MedilearnProf Setshedi UCT partnership block and photo refresh
Hasmukh asked for a profile block on the medistage homepage stating that medilearn manages some of the online events in collaboration with the Department of Medicine, UCT, with a photo of Prof Mashiko Setshedi.
25 May 2026 · Medilearnmedistage workspace location
Hasmukh asked where his local workspace for medistage.medilearn.africa lives on his laptop. Confirmed there is no dedicated local folder for medistage. The site is hosted entirely on the s2l VPS and is accessed through the server connection.
25 May 2026 · MedilearnMedistage Setshedi block lookup
Hasmukh asked about the "Prof Setshidi block". After confirming what he meant, I read the current state of the Prof Mashiko Setshedi event card on the medistage Past Events page and reported it back in plain English. No changes were made.
25 May 2026 · MedilearnHide Register Now button on medistage homepage
Hasmukh asked to hide the "Upcoming Free Session" banner on medistage.medilearn.africa, then corrected the scope to just the "Register Now — It's Free" button inside that banner.
25 May 2026 · Medilearnmedistage broadcast gallery captions
Hasmukh asked for captions to be added under the six images in the "our live broadcasts" gallery on medistage.medilearn.africa. Confirmed the site is medistage (not staging.medilearn.africa). Captions were supplied by Hasmukh one image at a time.
25 May 2026 · GeneralClaude Code Groups question
Brief Q&A session. Hasmukh shared a screenshot of the Claude Code sidebar context menu showing a "Move to group" option and asked what Groups mean in CC.
25 May 2026 · Medilearnmedistage — Recent Events banner and Past Events page
Added a "Recent Events" banner on the medistage homepage, sitting directly below the existing "Upcoming Free Session" banner, with a "Browse past events" button that links to a new placeholder page at /past-events.
25 May 2026 · s2l.onlineMagic login polish: URL migration, page redesign, homepage sign-in
Continuation of the previous evening's magic-link work. Hasmukh manually cleared every self-registered learner overnight via the admin UI, leaving just the three Administrators (himself, Kenn, webmaster).
24 May 2026 · s2l.onlineVimeo nightly sync for s2l.online courses
Started as an explanation of the current manual Vimeo refresh workflow for s2l.online, then expanded into building and switching on a nightly automatic sync that mirrors how vodalibrary works, adapted to the s2l course-and-lesson shape.
24 May 2026 · s2l.onlineQuiz page redesign
Hasmukh sent a screenshot showing the quiz page from yesterday's build looking unstyled, with options crammed onto a single line inside bare fieldset boxes. Investigated the cause, rebuilt the look from scratch, and shipped it. Pending Hasmukh's feedback on the new design.
24 May 2026 · s2l.onlineMagic-link sign-in plugin for s2l.online
Hasmukh said he was not comfortable with the existing EP Membership password login on s2l.online and asked whether we could give learners the same vodalibrary.online experience, where you only need an email address to sign in.
24 May 2026 · GeneralSystem reminder banner question
Very short session. Hasmukh asked what the repeating banner at the start of each turn means. Explained in plain English that it is an internal note from the system listing my available tools, skills, and site notes, and that he can safely ignore it.
24 May 2026 · GeneralPull request status message question
Hasmukh asked what the recurring "Pull request status couldn't be checked and may be out of date" message means. Explained that it is a Claude Code message about checking GitHub, not anything to do with the s2l.online website, and that it is safe to ignore.
23 May 2026, afternoon · Zoom CompanionQuick time check
Single-question session. Operator asked for the current date and time in South Africa, which was returned as Saturday, 23 May 2026, 16:46:47 SAST.
23 May 2026, afternoon · Zoom CompanionSession, 23 May 2026, Date query
Brief utility session. The user asked for the current South African date and time in the format yyyymmdd hh:mm:00. The answer returned was 20260523 16:48:00.
Lesson completion gate (95% watch rule)
Hasmukh raised a concern that learners can mark a lesson complete on s2l.online without actually watching the video. He asked how to stop that.
23 May 2026 · GeneralDate/time check
Very short session. Hasmukh asked for the current date and time in the format he normally uses. Returned Saturday, 23 May 2026, 18:45 SAST.
23 May 2026 · GeneralDate/time check (evening)
Very short session. Hasmukh asked for the current date and time in his standard format. Returned 20260523 21:49:36 (SAST). Separate from the earlier 18:45 SAST check on the same day.
23 May 2026 · s2l.onlineCourse quiz (check at the end)
Designed and shipped a "check at the end of a course" feature on s2l.online. Each course can now have an optional short multiple-choice quiz, learners take it after marking the last lesson complete, results are scored automatically, and the admin gets a report by course and by learner.
22 May 2026 · VodacomVodacom progress report request
Hasmukh asked for a Vodacom FY2026 projects progress report. I asked which reporting window to use. He chose a custom date range but has not yet supplied the From and To dates. The report itself has not been generated yet, as the session is waiting on those dates.
22 May 2026 · s2l.onlinehome page logo
Hasmukh asked for the S2L logo to be more pronounced on the home page. After discussing placement, he chose to have the logo sit above the headline in the top banner, and asked that the previous look be reversible.
20 May 2026, evening · Zoom CompanionSession, 20 May 2026, Live participant-count dashboard
User asked for an HTML dashboard that shows how many participants are in a meeting, in the spirit of the Camera Monitor app, with an incremental number display to create excitement amongst the members.
18 May 2026 · MedilearnZoom Companion, Medilearn fork built and verified live
Picked up cleanly from the previous session's plan: build a parallel "Camera Monitor (Medilearn)" packaged app for the medilearn.africa Zoom tenant, distinct from the Mobilearn build that was shipped yesterday.
17 May 2026, afternoon · ConsciousCuisineSession opened, no work done
Session opened with the standard ConsciousCuisine operating brief loaded. Hasmukh did not raise a task. Claude offered to help with content work (recipe drafting, copy edits, Ayurveda blocks, OG card descriptions) and waited for direction. No substantive discussion followed before the stop.
17 May 2026 · Zoom CompanionZoom Companion, v0.10.0 dual-tenant attempt reverted, v0.11.0 broadcast overlay shipped
Resumed Camera Monitor work to action the v0.10.0 plan drafted at end of yesterday's session.
16 May 2026 · Zoom CompanionZoom Companion, DEVLOG catch-up and v0.9.1 / v0.9.2 fixes
Hasmukh asked to resume work on Camera Monitor, noting that the latest was v0.9.0. On opening the project, package.json confirmed v0.9.0 and a v0.9.0 DMG was already built in dist/ (built earlier in the day), but DEVLOG.md and CLAUDE.md were both still stuck at v0.3.1 from 2026-05-11.
16 May 2026 · Zoom AppsOBF cross-account support
Built OBF authentication so Camera Monitor can join meetings hosted by accounts outside Mobilearn. Operator authorises once via browser OAuth, bot then joins on their behalf. Shipped as v0.9.0 with updated operator guide. One open re-test on auth-required external meetings.
15 May 2026 · GeneralWebsite inventory
Quick session to pull the latest repo updates and produce a list of all websites currently running on the VPS.
15 May 2026 · Zoom AppsShape A polish and notifications
A long debugging arc on macOS notifications, then a polish run of three features: session reports in HTML / TXT / CSV written to ~/Documents/Camera Monitor Logs/ on Leave, a configurable “at least N seconds” notification threshold, and a snooze button with a live countdown. Camera Monitor v0.7.0 built and waiting for the morning test.
Footer fix and webinar support
Recovered yesterday's power-outage work in iCloud, rebuilt v0.3.1, then v0.3.2 to unhide the version footer that my own anti-popup CSS had been killing. Added webinar support: a paste-the-URL field auto-extracts meeting number, passcode and registration token (tk) from any Zoom URL and passes tk into client.join() only when set. v0.4.0 built.
Workflow rollout to five iCloud projects
Started as a quick walk-through of how the existing s2l session-log + publish routine actually works. The conversation expanded into a practical rollout: Hasmukh wanted the same routine running in his other working folders.
9 May 2026 · VodalibraryVodalibrary privacy lockdown and in-page video player
Three big additions to vodalibrary.online today. First, an editable sign-in email: Hasmukh wanted a custom Mobilearn-branded preamble on every magic-link email, and now has an Admin Settings page where he can rewrite the subject and body himself any time.
8 May 2026 · MedilearnEthics page replicated, plus a long day of homepage fixes
Hasmukh asked for the live page at medilearn.africa/ethical-consideration-for-ai-in-healthcare-and-research-in-south-africa/ to be replicated as a draft on medistage.medilearn.africa.
7 May 2026 · Discovery AIDiscovery AI Phase 1, the resume after compaction
This session is the resume point after the previous conversation ran out of context and was compacted. Yesterday a great deal was built (the live mashiko.medilearn.africa reference site, two new transportable skills, a verified bio folder for Prof Setshedi), but in the wrong shape.
7 May 2026 · Docs siteAuto-publishing session logs after midnight
Hasmukh asked what is needed so that every session log is published to documentation.mobilearn.africa just after midnight SAST, including sessions that span across the midnight boundary.
6 May 2026 · MedilearnMedistage Setshedi interview, the investigation phase
Medistage Setshedi interview, the investigation phase
6 May 2026 · MedilearnNovamira connectors and a fresh PageMotor at medistage
Node.js LTS (v24.15.0) was installed via the official .pkg from nodejs.org, which Hasmukh ran himself (installer needed his Mac password). The Claude CLI was then installed into a user-local npm prefix at ~/.npm-global , deliberately not system-wide, so future updates do not need sudo.
5 May 2026 · VodalibraryVodalibrary moves to vodalibrary.online
SendGrid domain authentication for vodalibrary.online followed: three CNAMEs added at domains.co.za, validated green at SendGrid. The sender address moved from library@vodalibrary.vodavideos.co.za to library@vodalibrary.online .
5 May 2026 · VodalibraryVodalibrary announcements feature and dated outputs
The launcher always opens the most recent HTML in the folder, found by a simple newest-first list. Old files stay until Hasmukh archives them by hand, which keeps the history under his control.
4 May 2026 · VodalibraryVodalibrary launch and bulk Vimeo tagging
Total over the day: 1,196 videos newly tagged with vodac . Running total in the account: 1,201. All operations went through /root/scripts/vimeo-fetch.py and Vimeo’s API on the server, so the API token never left the VPS.
3 May 2026 · VodalibraryVimeo library export, viewer, and a refresh launcher
The full account on the day: 1,962 videos. Roughly 465 of those have descriptions on Vimeo; the rest are bare titles. The single tag VodacomFibre is the only fibre-related tag in the account.
3 May 2026 · s2l.onlineA quick site health check
A quick site health check
3 May 2026 · s2l.onlineOnline Meetings course on s2l.online
The slug is zoom2020-english , language english , level free , status published , in line with the rest of the English catalogue. Both videos on Vimeo are public-embed, so no per-video embed authorisation was needed.
3 May 2026 · s2l.onlineWhatsApp isiXhosa course, plus the login fix that let everyone see it
What was different this time was scale: ten lessons instead of six, and almost eighty minutes of content instead of twenty. Not a long form course by any stretch, but enough that putting the wrong order in front of a learner would be obvious.
2 May 2026 · s2l.onlineA “you are human” check on the register page
Hasmukh first leaned toward reCAPTCHA on familiarity, then changed his mind: Turnstile’s lighter footprint and weaker data trail fit the s2l audience better. Decision: Turnstile. He created the keys at Cloudflare and shared them.
2 May 2026 · s2l.onlineDiscovery plugin check on s2l.online
Discovery plugin check on s2l.online
1 May 2026 · Medilearnmedilearn.africa rebuild kickoff
The new site sits on the same VPS as s2l, but in its own system user, its own PHP-FPM pool, and its own database. Isolation is more than tidiness: it means a problem on one site cannot reach the other.
1 May 2026 · s2l.onlineA short blog page sanity check
A short blog page sanity check
1 May 2026 · Docs siteAutomatic publishing of daily session logs
The start-of-session check looks for any previous-day log that has not yet been published. If it finds one, it asks Claude to publish it as a permanent page on the documentation site, including a mention on the /overview/ index in the same run. If there is nothing to publish, it stays silent.
1 May 2026 · s2l.onlineCourse deletion no longer reloads the admin
A small but irritating UX bug in the EP Courses admin. Deleting a course used to fire window.location.reload(), which bounced the admin back to a top-level view and lost whichever tab or filter had been open. Deletion now removes the row in place with a soft fade, leaving the rest of the screen untouched. Two-file change, one in js/ep-courses.js and one in plugin.php, with a JS cache-bust so the new behaviour lands immediately. Timestamped server-side backups of both files.
A SARS isiXhosa course built from Vimeo videos
A free six-lesson SARS course in isiXhosa goes live on s2l.online, built end-to-end from existing Vimeo recordings. One new course row in pm_ep_courses (slug sars2isixhosa, level free, six lessons, ~21 minutes total), six lesson rows wired to their Vimeo ids and lesson durations, lesson titles kept in isiXhosa exactly as supplied. The course is reachable at /sars2isixhosa/ and visible without an account.
Lesson description on the watch page
A short follow-up to the 27 April lesson-description work. The description was live but only on the course landing page; from today it also renders on the watch page, in a soft grey panel between the lesson title and the video, so a learner sees the context before pressing play. Re-uses the existing per-language translation helper, so an isiXhosa learner will see an isiXhosa description if one is written. Two-file change — a few lines in plugin.php and a small block in ep-courses-frontend.css — with timestamped server-side backups kept of both files.
A working journal, started
An organisational session, not a code one. Set up a top-level sessions-log/ folder in the s2l-assistant project, agreed a four-section format for every entry (summary, decisions, changes made, follow-ups), wrote a short README to explain the convention, and committed the first entry same-day. From now on every working session ends with a dated Markdown file capturing what was decided and why — the local notes that sit underneath the polished docs pages.
A short description under every lesson on s2l.online
A small, well-shaped change to EP Courses: every lesson can now carry a one-or-two-line short description, edited in the admin (next to the title), translated per language, and rendered under the lesson title on every course landing page. End-to-end work across five layers — database column, admin editor, save handler, frontend markup, frontend CSS — with the existing translation system honoured throughout. Lessons without a description render exactly as before, so nothing visually breaks for content not yet enriched.
27 April 2026 · s2l.onlineBlog page added, then a new SARS course on s2l.online
Two pieces of work in one day. Morning: stood up a blog on s2l.online — refreshed the existing /blog page from a Coming Soon placeholder into a card-based post listing, added a Blog link to the desktop and mobile menus, seeded a friendly first post. Afternoon: built a brand-new English course called SARS2s2L from two Vimeo videos tagged S2LSARS, wired the course landing page, and surfaced the course on both the English Courses page and the home page. Includes one good scar around an over-eager REPLACE.
Login-loop fix, two languages hidden, and the new S2L logo dropped into the header
The login loop was not a loop. Auth was working; the home page nav simply did not change with login state, so users assumed registration had failed. Added a [member-nav] shortcode to EP Membership, swapped three nav locations to use it, and fixed an unrelated braces bug on the profile page. Same day: hid the isiNdebele and Tshivenda language pages until their courses are ready, and dropped the new S2L logo into the site header beside the “Something to Learn Online” wordmark.
Private content reviewer built on the SA VPS
New self-hosted reviewer at reviewer.s2l.online. Static HTML, React via CDN, Bunny Fonts, basic-auth per user, Let’s Encrypt cert. Hasmukh’s page is live with the S2L preamble and a 9-channel grid.
25 April 2026 · s2l.onlineSARS course, learner auth wired up, email migrated to mobilearn.africa
Built the SARS eFiling course on s2l.online from a Vimeo folder, finally wired the register and login pages to the EP Membership shortcodes, migrated SMTP off Kenn’s domain, added an SPF record, and fixed the long-running lesson drawer bug.
23 April 2026 · MobiLearn CPDCPD activity funnel for MobiLearn, plus the wifi course on s2l.online
Built the six-stage activity funnel for cpd.medilearn.africa and added a wifi-skills course to the s2l home page.