| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | fix(api): await setShadowHidden in badges PUT | Fuwn | 2026-04-18 | 1 | -1/+4 |
| | | | | | | | | setShadowHidden is async and hits Supabase. The PUT handler called it without await, so the handler could respond before the database write landed (and any error was silently lost). Add the missing await so the response only goes out after the update settles. | ||||
| * | fix(api): drop unused redirect query param from oauth refresh | Fuwn | 2026-04-18 | 1 | -3/+1 |
| | | | | | | | | | | | | | The refresh endpoint accepted a ?redirect query param and, when present, called redirect(303, "/") instead of returning the refreshed token as JSON. The target was hardcoded to "/" regardless of the param's value, so the feature was dead — and the pattern of reading a "redirect" param invited future open-redirect bugs if someone wired the value through to redirect() directly. The sole in-tree caller (feeds/activity-notifications) reads the JSON response, so always return JSON and drop the redirect import. | ||||
| * | fix(api): gate badge click-count on Origin and fix 401 response reuse | Fuwn | 2026-04-18 | 1 | -9/+11 |
| | | | | | | | | | | | | | | The PUT ?incrementClickCount path ran before any auth guard, letting unauthenticated callers spam-increment arbitrary badges. Require the request Origin to match appOrigin() so legitimate in-browser clicks (authenticated or not) still count while direct scripted calls are rejected. Also convert the shared `unauthorised` Response singleton into a factory. The singleton's body was consumed on first use, so subsequent 401 paths returned a `Response body is locked` error instead of the intended "Unauthorised" body. | ||||
| * | fix(api): encode subsplease timezone to prevent query-param injection | Fuwn | 2026-04-18 | 1 | -5/+6 |
| | | | | | | | | The `tz` query value was interpolated raw into the upstream URL, letting callers append arbitrary query segments (e.g. `tz=foo&f=hax`). Wrap the value in encodeURIComponent and rename the local variable away from the banned `tz` abbreviation. | ||||
| * | fix(ui): balance homepage media panels | Fuwn | 2026-04-12 | 1 | -62/+220 |
| | | |||||
| * | revert(ui): remove april fools executive mode | Fuwn | 2026-04-02 | 3 | -99/+22 |
| | | |||||
| * | fix(ui): tune april fools notification copy | Fuwn | 2026-04-01 | 1 | -1/+1 |
| | | |||||
| * | fix(ui): simplify april fools controls | Fuwn | 2026-04-01 | 1 | -15/+52 |
| | | |||||
| * | feat(ui): add april fools executive mode | Fuwn | 2026-04-01 | 3 | -22/+62 |
| | | |||||
| * | fix(badges): hide outbound link notice | Fuwn | 2026-04-01 | 1 | -1/+1 |
| | | |||||
| * | fix(state): restore persisted list UI state | Fuwn | 2026-03-28 | 2 | -4/+6 |
| | | |||||
| * | fix(cache): preserve hydrated client state | Fuwn | 2026-03-28 | 1 | -1/+2 |
| | | |||||
| * | fix(auth): ignore malformed user cookies | Fuwn | 2026-03-28 | 6 | -24/+54 |
| | | |||||
| * | fix(api): keep preferences publicly readable | Fuwn | 2026-03-27 | 1 | -4/+1 |
| | | |||||
| * | fix(profile): restore owner controls for new accounts | Fuwn | 2026-03-27 | 2 | -21/+41 |
| | | |||||
| * | refactor(supabase): move app access to service role | Fuwn | 2026-03-27 | 2 | -40/+56 |
| | | |||||
| * | fix(actions): resolve quality and trigger deploy drift | Fuwn | 2026-03-22 | 1 | -6/+8 |
| | | |||||
| * | perf: lazy-load authenticated list surfaces | Fuwn | 2026-03-22 | 2 | -25/+145 |
| | | |||||
| * | refactor: centralise site origin usage | Fuwn | 2026-03-22 | 11 | -61/+44 |
| | | |||||
| * | refactor(effect): add request body schema decoders to api routes | Fuwn | 2026-03-03 | 4 | -5/+36 |
| | | |||||
| * | refactor(effect): migrate api auth cookie decoding | Fuwn | 2026-03-03 | 4 | -57/+18 |
| | | |||||
| * | refactor(effect): migrate core auth decode boundaries | Fuwn | 2026-03-03 | 2 | -18/+6 |
| | | |||||
| * | chore(cleanup): remove stale eslint directives | Fuwn | 2026-03-01 | 2 | -3/+0 |
| | | |||||
| * | chore(biome): drop formatter style overrides | Fuwn | 2026-03-01 | 53 | -1463/+1597 |
| | | |||||
| * | chore(biome): re-enable noImplicitAnyLet rule | Fuwn | 2026-03-01 | 11 | -11/+22 |
| | | |||||
| * | chore(biome): enable svelte linting | Fuwn | 2026-03-01 | 2 | -3/+3 |
| | | |||||
| * | chore(biome): enable svelte formatting | Fuwn | 2026-03-01 | 21 | -955/+954 |
| | | |||||
| * | chore(biome): re-enable noDoubleEquals rule | Fuwn | 2026-03-01 | 1 | -1/+1 |
| | | |||||
| * | chore(types): decouple app code from fragile generated route types | Fuwn | 2026-03-01 | 1 | -1/+1 |
| | | |||||
| * | perf: optimise list hot paths and shared timers | Fuwn | 2026-03-01 | 3 | -9/+9 |
| | | |||||
| * | fix: Resolve all ESLint errors and warnings | Fuwn | 2026-01-29 | 8 | -12/+12 |
| | | |||||
| * | feat(Landing): Update to match LandingHero | Fuwn | 2026-01-28 | 1 | -5/+1 |
| | | |||||
| * | feat: Add hero for landing and welcome page | Fuwn | 2026-01-27 | 2 | -0/+11 |
| | | |||||
| * | feat(+layout.svelte): Add Web Analytics | Fuwn | 2026-01-26 | 1 | -0/+3 |
| | | |||||
| * | fix: Add null guards and improve error messaging for user lookups | Fuwn | 2026-01-23 | 4 | -6/+27 |
| | | |||||
| * | fix: Resolve unused imports, dead code, and type definitions | Fuwn | 2026-01-23 | 1 | -1/+0 |
| | | |||||
| * | refactor: Migrate event handlers to new Svelte 5 syntax | Fuwn | 2026-01-23 | 10 | -39/+39 |
| | | |||||
| * | refactor(layout): Replace empty p elements with reusable Spacer component | Fuwn | 2026-01-23 | 12 | -39/+51 |
| | | |||||
| * | fix(html): Replace self-closing non-void HTML elements with proper closing tags | Fuwn | 2026-01-23 | 11 | -38/+38 |
| | | |||||
| * | fix(notifications): Replace svelte-notifications with custom store for Svelte 5 | Fuwn | 2026-01-22 | 1 | -4/+3 |
| | | |||||
| * | format: Apply Prettier formatting | Fuwn | 2026-01-22 | 1 | -7/+21 |
| | | |||||
| * | deps(svelte): Migrate to Svelte 5 with compatibility mode | Fuwn | 2026-01-22 | 1 | -3/+8 |
| | | |||||
| * | deps(sveltekit): Migrate to SvelteKit 2 | Fuwn | 2026-01-22 | 2 | -2/+2 |
| | | |||||
| * | format: Apply Prettier formatting | Fuwn | 2025-12-15 | 11 | -67/+50 |
| | | |||||
| * | fix(api:birthdays): Update HTML parser for primary source | Fuwn | 2025-12-07 | 1 | -3/+3 |
| | | |||||
| * | fix: Throw redirects | Fuwn | 2025-12-01 | 2 | -2/+2 |
| | | |||||
| * | feat(badges): Add a no-load query parameter | Fuwn | 2025-09-06 | 1 | -8/+15 |
| | | |||||
| * | style(src): Remove self-closing tags with attributes | Fuwn | 2025-06-23 | 1 | -2/+2 |
| | | |||||
| * | style(src): Remove self-closing p and div tags | Fuwn | 2025-06-23 | 12 | -39/+39 |
| | | |||||
| * | refactor(LastActivity): Move display guard to component | Fuwn | 2025-06-14 | 1 | -3/+1 |
| | | |||||