Skip to content

Refactor hero image styling and clean up CSS#19

Open
graffhyrum wants to merge 20 commits into
pytexas:mainfrom
graffhyrum:hero-image-stying
Open

Refactor hero image styling and clean up CSS#19
graffhyrum wants to merge 20 commits into
pytexas:mainfrom
graffhyrum:hero-image-stying

Conversation

@graffhyrum

@graffhyrum graffhyrum commented Mar 18, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Unified hero image dimensions and removed redundant media queries in extra.css
  • Streamlined homepage overrides in home.html by consolidating inline styles into CSS
  • Cleaned up redundant color scheme rules
  • Documented external dependencies (Cairo, lychee) in README

Test plan

  • Verify hero image displays correctly on desktop and mobile
  • Confirm light/dark theme switching works properly
  • Check homepage layout renders as expected

🤖 Generated with Claude Code

Live SS:
live-homepage

Branch SS:
dev-homepage

@MasonEgger

Copy link
Copy Markdown
Member

When I pull this down locally it has a ton of gap between the nav bar and text
Screenshot 2026-04-10 at 4 03 51 PM
Screenshot 2026-04-10 at 4 03 58 PM

@ProsperousHeart

Copy link
Copy Markdown
Member

@graffhyrum - thanks for putting this in for us! Have you by chance had an opportunity to review and address what @MasonEgger shared last month?

@graffhyrum

Copy link
Copy Markdown
Contributor Author

When I pull this down locally it has a ton of gap between the nav bar and text Screenshot 2026-04-10 at 4 03 51 PM Screenshot 2026-04-10 at 4 03 58 PM

What's your screen resolution and aspect ratio there?

MasonEgger and others added 17 commits May 14, 2026 15:18
* rough draft of Recruiter sponsorship

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* minor tweaks and pulling in Laura changes

* Update docs/sponsors/recruiter.md

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>

* Exclude recruiter page canonical URL from link checker

The recruiter page is hidden (noindex, not in nav), so its canonical/og:url
meta tags point to a URL that doesn't exist on production yet, causing
lychee to report a false 404.

* tweaking CI and fixing broken link

---------

Co-authored-by: Laura Santamaria <nimbinatus@users.noreply.github.com>
…ove Sumaiya to Sunday, put Pandy first after Sunday lunch
Previous retry-wait-time of 5s was too short to outlast GitHub's ~60s
rate limit window. Increases wait to 30s, lowers concurrency to 2, and
passes --github-token so lychee uses authenticated GitHub API requests
(5000 req/hr vs 60/hr unauthenticated).

## Files Modified
- .github/workflows/link-check.yml - Increase retry wait, lower concurrency, add github-token
Co-authored-by: Mason Egger <mason@masonegger.com>
… syntax (pytexas#20)

Co-authored-by: Mason Egger <mason@masonegger.com>
Adds Temporal sponsor talk (Mason Egger - "Events are the Wrong
Abstraction") and Anaconda sponsor talk details (Dr. James A. Bednar -
"Data Visualization in Python") with descriptions, bios, and headshots.
Reorders talks.md to match the Saturday/Sunday schedule sequence.

## Files Modified
- data/schedule.yaml - Replace Temporal TBD placeholder with talk details, add link for Anaconda talk, update speaker format to "Sponsor / Speaker"
- docs/schedule/talks.md - Add two sponsor talk entries, reorder all talks to match schedule order, update intro text
- docs/schedule/index.md - Auto-generated from schedule.yaml with updated links
Enable virtual attendance page, add network event and attendee guide
to in-person page, update banner for this weekend, and enable Slido
redirect with 2026 event URL.

## Files Modified
- mkdocs.yml - Enable virtual attendance nav, comment out opportunity grants, enable redirects plugin with Slido URL, remove stale reg redirect, fix "Bluesy" → "Bluesky" typo
- docs/attend/in-person.md - Add attendee guide link, add network event section (rooftop garden, 6:30-9pm Saturday) with after-hours access instructions
- docs/attend/virtual.md - Add note that only speakers have virtual greenroom access
- docs/assets/images/virtual/nav-bar.png - Replace Discord screenshot to remove pytexas-stage channel
- overrides/main.html - Update banner to "PyTexas is this weekend" with ticket urgency
New this year: Open Spaces run Saturday and Sunday afternoons alongside
the main talk track. Added a dedicated page explaining the format,
participation process (propose, vote, attend), and guiding principles.
Split the schedule into Main Stage and Open Spaces columns with TBD
afternoon slots. Disabled the schedule build hook since the schedule
is now manually maintained for the conference weekend.

## Files Modified
- docs/schedule/open-spaces.md - New page explaining Open Spaces format, how to participate, rules, and Law of Two Feet
- docs/schedule/index.md - Split Saturday/Sunday tables into Main Stage + Open Spaces columns, added Open Spaces intro row, topic submission and voting annotations, TBD afternoon slots
- mkdocs.yml - Added Open Spaces to schedule nav, disabled schedule.py build hook
- .gitignore - Added .env
* Mark 2026 event as concluded and point visitors to 2027

The 2026 conference is over, so the site needs to stop reading as if
the event is still upcoming and start steering visitors to the next
year. Following the pattern used by the 2025 archive site, this:

- Replaces the "PyTexas is this weekend!" banner with a post-event
  message and link to https://www.pytexas.org/2027/.
- Rewrites the homepage hero, CTA, and card grid in past tense
  ("That's a Wrap!"), with the primary button now pointing to the
  2027 site.
- Updates descriptions and copy across about, attend (in-person and
  virtual), sponsors (index, sponsor-us, asking-for-sponsorship), and
  schedule/tutorials so dates and CTAs match a concluded event.
- Adds "concluded" / "applications closed" callouts on the virtual
  and grants pages, which remain linked from the FAQ.

Also resolves the remaining concrete items from pytexas#3:

- Removes docs/reg.md, an orphan stub that was never wired into
  mkdocs-redirects and is unreferenced.
- The previously-flagged broken anchor (faq.md -> in-person.md#grants)
  and the missing-nav entries for sponsors/index.md and
  attend/virtual.md were already fixed in earlier commits; verified
  here.

Fixes pytexas#26
Refs pytexas#3

* Add `just serve-ts` for testing over Tailscale

The default `just serve` binds to 127.0.0.1, which is fine on the
local machine but unreachable from other devices on the tailnet
(e.g. testing the site from a phone or another laptop).

`serve-ts [PORT]` resolves the host's Tailscale IPv4 via
`tailscale ip -4`, fails fast with a clear message if Tailscale
isn't running, prints the URL it's about to bind, and starts
`mkdocs serve` on that address. Defaults to port 8000.

* Accept 403 in lychee link check

The link checker is currently failing on
`https://abmparking.com/facilities/austin-city-hall-garage/` (the
"Other Parking Options" link in `attend/in-person.md`). The URL is
fine for real users — a browser request returns 200 — but the server
returns 403 to requests without a browser User-Agent, which is a
common Cloudflare/anti-bot pattern.

403 means "Forbidden", not "Not Found". The resource exists; the bot
just isn't allowed to fetch it. For a link checker on a marketing
site, treating 403 the same as 200 is the standard workaround.

Adds 403 to the existing `--accept` list alongside the redirects and
429 we already pass through.

* Update docs/sponsors/sponsor-us.md

Co-authored-by: Kassandra Keeton <ProsperousHeart@users.noreply.github.com>

* Update docs/sponsors/sponsor-us.md

Co-authored-by: Kassandra Keeton <ProsperousHeart@users.noreply.github.com>

* Keep homepage SEO copy and drop em-dashes

The post-event rewrite stripped the keyword-rich paragraph that fed
Google search ("largest gathering of Python developers... software
development, data science, community, and of course: Python"). Without
it, the homepage is a wrap-up message plus a CTA, which gives crawlers
very little to index. ProsperousHeart flagged this in review on PR pytexas#27.

Restores a past-tense version of that paragraph between the wrap-up
message and the 2027 CTA. Keeps the original SEO keywords and the
**20th year** anniversary callout, and matches what the 2025 archive
site does (which kept its equivalent line for the same reason).

Also drops three em-dashes from the same file while in there: the H2
wrap-up header becomes a colon, the Sponsor card uses a period, and
the new SEO line is written without one.

---------

Co-authored-by: Kassandra Keeton <ProsperousHeart@users.noreply.github.com>
* Embed YouTube recordings on talks and keynotes pages

Following the same pattern used on the 2025 archive site after that
event wrapped, embed each talk's recording from the PyTexas 2026
YouTube playlist directly under the talk description on the schedule
pages, before the speaker block.

Videos are matched to entries by speaker name (some recording titles
differ slightly from the original schedule titles, but each speaker
has a unique session). Coverage:

- 16 of 17 entries in `schedule/talks.md`. Sumaiya Nalukwago's talk
  is intentionally left without an embed because there is no recording
  in the published playlist.
- Both keynotes in `schedule/keynotes.md` (Dawn Wages, Hynek Schlawack).

Two lightning-talk recordings exist in the playlist but are not added
here since neither `talks.md` nor `keynotes.md` has a section for
them — matches what the 2025 archive did.

* Accept 403 in lychee link check

The link checker is currently failing on
`https://abmparking.com/facilities/austin-city-hall-garage/` (the
"Other Parking Options" link in `attend/in-person.md`). The URL is
fine for real users — a browser request returns 200 — but the server
returns 403 to requests without a browser User-Agent, which is a
common Cloudflare/anti-bot pattern.

403 means "Forbidden", not "Not Found". The resource exists; the bot
just isn't allowed to fetch it. For a link checker on a marketing
site, treating 403 the same as 200 is the standard workaround.

Adds 403 to the existing `--accept` list alongside the redirects and
429 we already pass through.

* Add/youtube video embeds formatting update (pytexas#29)

* create and add keynote speaker formatting

* add keynote slide links and other info shared

* add speaker reply formatting + cleanup

* add formatting and available resources

* Fix two broken links flagged by lychee on PR pytexas#28

Two failures in CI link-check, both new on this branch:

1. Adam Gordon Bell's "Repo" link in `talks.md` had two URLs jammed
   into one markdown link target, separated by a space. Lychee
   URL-encoded the space to `%20` and 404'd on the resulting
   pseudo-URL. The trailing Pulumi URL was already linked separately
   on the next bullet as "His [site]", so removing it from the
   "[Repo]" target loses nothing and points the link at the actual
   repo Adam referenced.

2. Indrasena Manga's LinkedIn profile (`indra7979`) is the correct
   URL but LinkedIn returned 404 to the GitHub runner's request.
   Two other `linkedin.com/in/` profiles on this same branch passed
   the same lychee run, so it's targeted anti-bot behavior on that
   specific request, not a blanket runner block. Ignoring that one
   URL in `.lycheeignore` is more auditable than a wildcard.

* Broaden lychee ignore to all LinkedIn URLs

Followup to the previous commit. The targeted single-URL ignore for
`indra7979`'s profile assumed the 404 was localized to that handle,
but a subsequent run showed LinkedIn's anti-bot flips on other
`/in/` URLs too, intermittently. Avik and Kassandra's profiles
passed earlier and could fail on the next run.

Replacing the single entry with `https://www.linkedin.com/` covers
every LinkedIn URL the site uses today (all `linkedin.com/in/...`
speaker profiles in `docs/`). Acceptable for a marketing-site
link checker; LinkedIn link rot is not something CI needs to gate
deploys on.

---------

Co-authored-by: Kassandra Keeton <ProsperousHeart@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants