PageSourceSearch

https://pupwife.com/scripts/desktop/citrusBirthdayConfig.js

js pupwife.com collected 2026-09-30 15:04:41 UTC 3,543 bytes, 104 lines download raw bytes

1/**
2 * CitrusOS birthday registry — date-keyed party config (extensible per person).
3 */
4(function (global) {
5    'use strict';
6
7    var BIRTHDAYS = [
8        {
9            id: 'cleo',
10            month: 8,
11            day: 26,
12            label: 'Birthday party',
13            assets: {
14                balloon: '/images/birthday/balloon.png',
15                balloonGold: '/images/birthday/balloon_gold.png',
16                cakeSheet: '/images/birthday/cleocake_animated.png'
17            },
18            balloonColors: [
19                '#F46607',
20                '#F2DB07',
21                '#218BEE',
22                '#C8A8FF',
23                '#FF6B9D',
24                '#FFC48C'
25            ],
26            balloonDisplayPx: { min: 80, max: 100 },
27            cakeFrames: { cols: 4, framePx: 640, blownOut: 0, lit: [1, 2, 3] },
28            copy: {
29                stickyNote: 'birthday party on pupwife.com!',
30                secretThanks: 'thanks for celebrating with pupwife.com today!',
31                micIdle: 'Hit Start Blowing when you are ready. You gotta blow HARD! (heh,.  .,,.  .,that\s what she said,,,,)',
32                micStartBtn: 'Start Blowing',
33                micBlow: 'Really put some lung into it! Blow hard enough to pass the orange tick.',
34                micFallback: 'Tap the flame if your mic isn\'t working',
35                confettiBtn: 'Make it rain',
36                wishlistLabel: 'Birthday wishlist',
37                biosLines: [
38                    'Party subsystem loading... OK',
39                    'Inflating balloon drivers... OK'
40                ]
41            },
42            links: {
43                wishlist: 'https://www.amazon.com/hz/wishlist/ls/372O1JRK99CC6'
44            }
45        }
46    ];
47
48    var DEBUG_KEY = 'debugBirthday';
49    var TRAIL_SAVE_KEY = 'citrusos_birthday_saved_trail';
50
51    function readDebugId() {
52        try {
53            var raw = global.sessionStorage.getItem(DEBUG_KEY);
54            if (!raw) return null;
55            if (raw === '1' || raw === 'true') return 'cleo';
56            return raw;
57        } catch (e) {
58            return null;
59        }
60    }
61
62    function getActiveBirthday(now) {
63        var debugId = readDebugId();
64        if (debugId) {
65            for (var i = 0; i < BIRTHDAYS.length; i++) {
66                if (BIRTHDAYS[i].id === debugId) return BIRTHDAYS[i];
67            }
68        }
69        now = now || new Date();
70        var month = now.getMonth();
71        var day = now.getDate();
72        for (var j = 0; j < BIRTHDAYS.length; j++) {
73            var entry = BIRTHDAYS[j];
74            if (entry.month === month && entry.day === day) return entry;
75        }
76        return null;
77    }
78
79    function isBirthdayActive(now) {
80        return !!getActiveBirthday(now);
81    }
82
83    function getBootBiosLines() {
84        var entry = getActiveBirthday();
85        if (!entry || !entry.copy || !entry.copy.biosLines) return null;
86        return [
87            'CitrusOS BIOS v0.1 — pupwife.com',
88            'Checking citrus modules... OK'
89        ].concat(entry.copy.biosLines, [
90            'Mounting /home/puppy... OK',
91            'Starting window manager... OK',
92            'Loading music player... OK'
93        ]);
94    }
95
96    global.CitrusBirthdayConfig = {
97        birthdays: BIRTHDAYS,
98        getActiveBirthday: getActiveBirthday,
99        isBirthdayActive: isBirthdayActive,
100        getBootBiosLines: getBootBiosLines,
101        DEBUG_KEY: DEBUG_KEY,
102        TRAIL_SAVE_KEY: TRAIL_SAVE_KEY
103    };
104})(typeof window !== 'undefined' ? window : this);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.