| Commit message (Collapse) | Author | Age | Files | Lines | |
|---|---|---|---|---|---|
| * | 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 |
| | | |||||
| * | fix(Home): Guard LastActivity component visibility | Fuwn | 2025-06-14 | 1 | -1/+3 |
| | | |||||