Commit graph

27 commits

Author SHA1 Message Date
c8b0ecbd87 add canonical permacomputer preamble to all source files 2026-02-25 17:40:12 -05:00
027f5afc57 Add public domain license and headers to all source files
- Add LICENSE file (public domain, permacomputer values)
- Add license headers to all 27 Python source files
- Restore full about_ch9_p2 with "terminated 🟣" content
- Translate about_ch9_p2 to all 26 languages

The permacomputer is community-owned infrastructure optimized around:
TRUTH, FREEDOM, HARMONY, LOVE
2026-01-08 15:38:28 -05:00
763f27f6ab Restore missing links and text to about page translations
7 translation keys restored with HTML links across all 27 languages:
- about_ch1_p1: link to pig.py blog post
- about_ch2_p3: dead-link to bitbucket + "Click it. We dare you..." text
- about_ch3_p1: link to "programming is like alchemy" article
- about_ch3_p4: link to arxiv:2507.13461 (Marathon Fusion chrysopoeia)
- about_ch3_p7: link to Wikipedia wu wei + restored energy balance text
- about_ch4_p4: link to git.unturf.com/engineering/unturf/pig.py
- about_ch9_p2: link to permacomputer.com

These links were lost during initial i18n extraction. Wu wei energy
that elites used to tombstone pig.py now unfolds neopig.py.
2026-01-08 14:57:46 -05:00
2c30aa8672 Restore full about page translations for all 27 languages
- Restored 7 translation keys that were compressed during initial i18n:
  - about_ch3_p4: 'pigs in an hg blanket' joke and (n,2n) reaction details
  - about_ch3_p5: 17.7 years cooling time detail
  - about_ch3_p6: 'Old pig was slaughtered' reference
  - about_ch9_truth/harmony/freedom/love: Full philosophical paragraphs

- Added apply_restored_translations.py utility script
- All 189 translations updated (27 languages × 7 keys)
2026-01-07 20:41:12 -05:00
c6bf3c375e Fix /page/{uri_hash} to render directly instead of redirecting 2026-01-06 17:26:58 -05:00
d91c0592ca Fix remaining import paths in serp/server.py
- async_web_fetcher -> neopig.async_web_fetcher
- screenshot -> neopig.screenshot

These were missed during the module reorganization, causing
/page/view and other endpoints to fail with import errors.
2026-01-06 15:44:22 -05:00
58c93f217a Reorganize project structure: move modules to neopig/, scripts to scripts/, data to data/ 2026-01-06 14:06:43 -05:00
b61959eb34 Link Marathon Fusion chrysopoeia citation to arxiv:2507.13461 2026-01-06 13:17:05 -05:00
d7e74dadab Add ChunkFive font and periods to become manifesto
- Vendor ChunkFive font for become phrases
- Add periods to all become_ translations (27 languages)
- Simplify become_un to just the prefix (un., in., не-., etc.)
- White color for finale un. in footer
2026-01-06 12:26:38 -05:00
0a805a14a7 Complete definite article removal across all translations
Round 2 fixes:
- Quadrivium cite: El/O/Le/Das/Il/Het → removed (es/pt/fr/de/it/nl)
- French ch3_p3: Les années/Le web → Années/Web
- French ch3_p7: L'apprentissage → Apprentissage
- Italian: L'originale/I programmi/Il pensiero/Il machine/Il codice/Gli archivi
- Dutch: Het originele/De gedachte/De code/Het quadrivium

Pattern: 'a web is ephemeral' applied consistently
2026-01-06 11:54:25 -05:00
329cf1c454 Remove definite articles from about page body text
- Spanish: El/Los/La → removed or use Una (web)
- Portuguese: O/A → removed or use Uma (web)
- French: Le/Les/La → removed or use Une (web)
- German: Das/Der → removed or use Ein (web)
- Italian: Il/I/Gli/Le → removed or use Un (web)
- Dutch: Het/De → removed or use Een (web)
- Swedish: Den → removed or use En (webb)

Applies 'a web is ephemeral' pattern across all languages
2026-01-06 11:45:49 -05:00
2ac5681c69 Remove definite articles from about page translations
- about_ch2_title: Remove La/Das/De/Den (es/pt/fr/de/it/nl/sv)
- about_ch6_title: Remove Arsenalen → Arsenal (sv)
- about_ch11_title: Remove al/o/le/das/il/het/Grisen (6 langs)
2026-01-06 11:40:40 -05:00
1df1e9cc49 Update Langoliers translations for all 27 languages 2026-01-06 11:36:33 -05:00
061ea5b6f4 In loving memory of repos Atlassian fed to Langoliers 2026-01-06 11:32:59 -05:00
10b86ef745 Remove 'the' from about page - cleaner prose 2026-01-06 11:29:46 -05:00
b43e79e881 Fix: 'an original pig.py' not 'the original pig' 2026-01-06 11:21:57 -05:00
5fa60638ea Fix: 'our digital depths' not 'the' 2026-01-06 11:20:56 -05:00
7e67ee4900 Fix: 'bones' not 'the bones', 'our public domain' not 'the' 2026-01-06 11:19:58 -05:00
85d1d1e119 Add 'become un*' manifesto and cross to about footer
- become ungovernable/unstoppable/untouchable/unseen/unknown/un
- ✝️ cross with "Sorry for the convenience" (Mitch Hedberg)
- Translations in all 27 languages
2026-01-06 09:33:42 -05:00
0974593873 Refactor language handling to FastAPI Depends
- Replace get_lang() calls with Depends(get_language) dependency
- Language resolution: ?lang=XX query > cookie > Accept-Language header
- Middleware sets cookie, frontend cleans URL via history.replaceState
- view_page_by_hash now redirects instead of direct call
2026-01-06 08:25:50 -05:00
4b247f0be9 Fix lang param: middleware sets cookie, frontend cleans URL
No more redirect loop - middleware just sets cookie on response,
frontend uses history.replaceState to remove ?lang=XX from URL.
2026-01-05 22:17:13 -05:00
f124828c16 21 side quests scattered through the codebase
1-20 are findable. 21 is the absence itself.

fnord
2026-01-05 21:10:02 -05:00
3714c9b6a9 Extract common CSS to 5 external stylesheets (DRY)
- base.css: Core layout, typography, container
- nav.css: Navigation bar styles
- forms.css: Form elements, buttons, inputs, checkboxes
- quests.css: CSS-only easter eggs
- results.css: Media grid and result card styles

Templates now link external CSS via extra_css_links block.
Page-specific styles remain inline (correct pattern).
Fixed OVER_9000 test (it's OVER 9000, so 9001).
2026-01-05 20:44:35 -05:00
7fff500f2f CSS-only side quests: no JS, pure delight
Interactions via CSS animations and SVG:
- Hover logo: 🐷 appears, click: oink!
- Hover body: 'grow food not lawn' rises from below
- Print stylesheet: Sign Maker approves
- Spider descends from nav on hover
- About page: spider-pig SVG descends on hero hover
- Sign Maker's mark ☉ at page end - spins on hover
- ::selection styled in brand colors

Side quest comments scattered: 1/21, 2/21, 3/21...

No JavaScript easter eggs. CSS only. The way it should be.
2026-01-05 20:31:29 -05:00
e9c0cf965f The 5 Adventures: View Source rewards the curious
Setting Orange, 5th of Chaos, YOLD 3192 - Mungday

Adventure #1: View Source on any page
Adventure #2: /fnord - you weren't supposed to see it
Adventure #3: /5 - The Law of Fives is never wrong
Adventure #4: /23 - The 23 enigma
Adventure #5: /kallisti - ΚΑΛΛΙΣΤΙ - to the prettiest one

Hidden throughout:
- HTML comments in templates guide the seeker
- fnord appears where you least expect it
- 23 skidoo in the live feed
- The Sign Maker leaves breadcrumbs

Truth, Freedom, Harmony, Love.
2026-01-05 20:22:34 -05:00
81662f1781 Mungday chaos: Sign Maker easter eggs, fix OVER_9000, England flag
Setting Orange, 5th of Chaos, YOLD 3192 - Celebrate Mungday!

- Add Sign Maker comments throughout codebase
- Fix OVER_9000 = 9001 (it's OVER 9000, not exactly 9000)
- Change English flag from 🇺🇸 to 🏴󠁧󠁢󠁥󠁮󠁧󠁿 (St. George's Cross)
- Fnord. You didn't see this commit.
2026-01-05 20:18:23 -05:00
c7c20c5bce Refactor serp.py into serp/ package, add /eggs endpoint
- Extract serp.py into serp/ package for better testability
  - serp/app.py: FastAPI app, LanguageMiddleware
  - serp/server.py: All route handlers
  - serp/i18n.py: Translations, LANG_NAMES with flags
  - serp/models.py: CrawlRequest model
  - serp/archive.py: Tarball handling
  - serp/logging.py: Job logging
  - serp/utils.py: slugify function
- Add /eggs endpoint listing easter eggs:
  - #0: ?lang=XX forces language via middleware
  - #1: OVER_9000 pagination limit
  - #2: The 72 Rules of St. Benedict (A Way)
- Fix test module import issue (app_module -> app_config)
- LANG_NAMES includes flags and codes (e.g., 🇺🇸 EN English)
2026-01-05 19:16:04 -05:00