-
9f1e9f5253
Rewrite AGENTS.md in short plain sentences (#327)
next
clawbot
2026-10-27 05:06:36 +01:00
-
8669b5cf04
Rewrite README.md sentence by sentence (closes #327)
issue-327-readme-rewrite
clawbot
2026-10-27 01:42:48 +00:00
-
-
2c90144e7b
Go on past cache entries the reconciliation pass cannot read (closes #343)
clawbot
2026-10-27 00:16:54 +00:00
-
26b5160aa8
Test that reconciliation goes on past entries it cannot read
clawbot
2026-10-27 00:14:45 +00:00
-
33045a24b5
Keep a variant's accounting row when its file cannot be read (closes #340)
clawbot
2026-10-26 23:56:34 +00:00
-
701ed9b94b
Test that reconciliation drops a variant's row only when its file is missing
clawbot
2026-10-26 23:54:24 +00:00
-
233765033a
Answer 499 to a client that goes away while waiting for an image (closes #339)
clawbot
2026-10-26 23:26:36 +00:00
-
d33316caf3
Test that a client leaving while another request makes its image gets 499
clawbot
2026-10-26 23:26:07 +00:00
-
6de69f7349
Name pixa's concepts at the start of the README's Design section (closes #321)
clawbot
2026-10-26 23:19:19 +01:00
-
93b13d6638
Load every setting from one table in internal/config (closes #320)
clawbot
2026-10-26 22:32:03 +01:00
-
b73bbde46e
Detect a fetched image's format from its bytes once (closes #319)
clawbot
2026-10-26 21:21:39 +01:00
-
ac850823f4
Keep cached sources and variants in one FileStore type (closes #318)
clawbot
2026-10-26 20:24:33 +01:00
-
17376d885b
Split internal/imgcache into the image proxy and the cache (closes #317)
clawbot
2026-10-26 20:00:25 +01:00
-
87cb1ab5f6
Serve both image routes with one function and one error mapping (closes #316)
clawbot
2026-10-26 15:24:24 +01:00
-
77d55abb7e
Derive every key from the signing key in one place (closes #315)
clawbot
2026-10-26 14:10:20 +01:00
-
7b6712538e
Take the signature, the expiry and the URL scheme off the image request (closes #314)
clawbot
2026-10-26 13:49:12 +01:00
-
63690a9ec9
Build the image pipeline in pixad's fx graph (closes #313)
clawbot
2026-10-26 12:28:23 +01:00
-
ac2bae0489
Remove the code nothing in production calls (closes #312)
clawbot
2026-10-26 10:54:14 +01:00
-
b49d0068df
Count hits, misses, fetches and transforms as Prometheus counters (closes #311)
clawbot
2026-10-26 10:20:42 +01:00
-
6b19e4c96c
Declare only the tables and columns pixa writes and reads (closes #310)
clawbot
2026-10-26 09:29:26 +01:00
-
5f9d624d74
Serve a cache hit with no database read or write (closes #309)
clawbot
2026-10-21 18:12:55 +02:00
-
a19cca2f34
Store a source the way a variant is stored, one row and one file per source URL (closes #308)
clawbot
2026-10-21 16:31:33 +02:00
-
00d8ba26c5
One image request type instead of five (closes #307)
clawbot
2026-10-21 14:41:07 +02:00
-
385c0ca76f
Run only script/cibuild in the Gitea workflow (closes #203)
clawbot
2026-10-21 13:22:59 +02:00
-
989da78681
Keep WebP, AVIF and JPEG XL encodes at the limits under 40 seconds (closes #272)
v1.0.0-rc3
clawbot
2026-10-20 15:19:07 +02:00
-
4fb6350aa1
Answer 415 for a source whose first bytes do not match its Content-Type (closes #253)
clawbot
2026-10-20 14:40:51 +02:00
-
cde9c0d10d
Let a bug fix change the test that pins the behavior the bug calls wrong (closes #280)
clawbot
2026-10-20 14:25:07 +02:00
-
957ec85f97
Re-vendor the canonical files from sneak/prompts at 0653579 (closes #221)
clawbot
2026-10-19 06:11:43 +02:00
-
930e43961e
Read a trusted_proxies entry in the IPv4-mapped form as its IPv4 range (closes #303)
clawbot
2026-10-19 05:29:05 +02:00
-
9eacfa6406
Space reconciliation passes by ten times the last pass's time (closes #250)
clawbot
2026-10-19 05:00:48 +02:00
-
0ab15324f7
Read a blocked_networks entry in the IPv4-mapped form as its IPv4 range (closes #301)
clawbot
2026-10-19 03:00:43 +02:00
-
faad959bea
Refuse local-use NAT64 addresses, and IPv4-compatible ones in blocked_networks (closes #299)
clawbot
2026-10-16 06:52:17 +02:00
-
3a6b3bc202
Refuse an IPv6 address that holds an internal IPv4 address (closes #297)
clawbot
2026-10-16 05:31:55 +02:00
-
08d6c3c459
Fetch an IPv6 source host written without a port (closes #295)
clawbot
2026-10-16 05:00:47 +02:00
-
efa431ba18
Escape state_dir in the db_url derived from it (closes #290)
clawbot
2026-10-16 04:37:54 +02:00
-
8b4dcda549
Keep a side computed for a size with one side 0 at 1 or more (closes #283)
clawbot
2026-10-16 04:17:59 +02:00
-
6d271d4617
Make one image URL per source on the generator page for host case and an empty path (closes #293)
clawbot
2026-10-16 04:04:19 +02:00
-
4a4bc9758f
Fetch the source path and query URL-encoded, not joined as text (closes #288)
clawbot
2026-10-16 03:31:15 +02:00
-
9a96740463
Crop the centre before resizing for fit=cover (closes #282)
clawbot
2026-10-16 02:23:18 +02:00
-
1fd5cf8bd0
Refuse an image URL whose source path or query holds a # (closes #286)
clawbot
2026-10-16 01:36:56 +02:00
-
62b4f4791e
Refuse an image URL whose host is not a host name or IP address (closes #275)
clawbot
2026-10-16 01:14:51 +02:00
-
22bfc432b6
Document how a source query goes into an image URL, and accept it (closes #255)
clawbot
2026-10-16 00:17:33 +02:00
-
f743930f71
Default max_concurrent_processing to half the CPUs pixa sees (closes #242)
clawbot
2026-10-15 23:07:22 +02:00
-
4e30dc7467
Re-vendor the canonical files from sneak/prompts at e3f79c4 (closes #221)
clawbot
2026-10-15 22:40:38 +02:00
-
16f9d1dfd1
Label request metrics with standard HTTP methods only (closes #274)
clawbot
2026-10-15 21:47:11 +02:00
-
742db9ceb1
Logging out ends every login session (closes #256)
clawbot
2026-10-15 20:44:44 +02:00
-
2ab96155ba
Sync cached files and refuse ones left empty or partial (closes #252)
clawbot
2026-10-15 19:27:33 +02:00
-
3ba9ae9c39
Stop a transcode whose request has ended before it encodes (closes #243)
clawbot
2026-10-15 18:44:11 +02:00
-
a3aa73f6fd
Tell upaas operators to set the cache size limit (closes #251)
clawbot
2026-10-15 18:16:17 +02:00
-
7956da1f59
Label request metrics by route, not by path (closes #254)
clawbot
2026-10-15 16:37:20 +02:00
-
69f65d4302
Remove expired negative cache rows in the eviction loop (closes #244)
clawbot
2026-10-15 15:02:27 +02:00
-
2790125cb2
Serve a cached variant while its source URL is in the negative cache (closes #245)
clawbot
2026-10-15 13:45:25 +02:00
-
c23585dd6d
Lower-case the image URL's host and require a signature for a port (closes #246)
clawbot
2026-10-15 12:31:14 +02:00
-
5d1e3ea871
Escape : and % in the signed and cached path and query (closes #247)
clawbot
2026-10-15 09:37:01 +02:00
-
761ade2e36
Accept a chunked upstream body of exactly the maximum size (closes #248)
clawbot
2026-10-15 07:44:09 +02:00
-
88e1b1cdfa
Allowlist no host in the example config (closes #249)
clawbot
2026-10-15 06:26:23 +02:00
-
afb5dc5d0d
Refuse a fit=outside size whose output exceeds the maximum (closes #257)
v1.0.0-rc2
clawbot
2026-10-13 10:44:45 +02:00
-
d8760c40a1
Refuse a size whose computed side exceeds the maximum (closes #241)
clawbot
2026-10-13 09:44:44 +02:00
-
ca512fdb4f
Remove the unused cache lifetime setting (closes #69)
v1.0.0-rc1
clawbot
2026-10-13 07:58:55 +02:00
-
52f69d3082
Refuse SVG sources and never save an unknown input as JPEG (closes #68)
clawbot
2026-10-13 07:13:17 +02:00
-
162a2a33ef
Keep counts not written by the request's deadline in memory (closes #224)
clawbot
2026-10-13 03:07:23 +02:00
-
40ad39843b
Limit each client's requests to the image routes (closes #236)
clawbot
2026-10-13 01:36:18 +02:00
-
bdde021b45
Save PNG compressed, WebP at effort 4 and AVIF at effort 1 (closes #232)
clawbot
2026-10-08 14:13:25 +02:00
-
db91ab29e6
Serve JPEG XL when a request names no format (closes #222)
clawbot
2026-10-08 12:49:56 +02:00
-
8597253ffd
Serve and accept JPEG XL as an image format (part of #222)
clawbot
2026-10-08 11:01:12 +02:00
-
99e4aa3bb2
Run pixad on the Alpine release it is built on (closes #229)
clawbot
2026-10-08 09:35:03 +02:00
-
d2944aa891
Eviction no longer reads a whole table while requests wait on the database (closes #227)
clawbot
2026-10-08 07:12:02 +02:00
-
54328377d0
Install libvips JPEG XL support and require it at startup (part of #222)
clawbot
2026-10-08 06:19:05 +02:00
-
5058fd532b
Queue SQLite writes on one connection so none fails as locked (closes #223)
clawbot
2026-10-08 04:50:31 +02:00
-
15d95436a5
Serve the format auto, chosen from the Accept header (closes #88)
clawbot
2026-10-05 05:24:50 +02:00
-
01823d27db
Format the markdown with prettier in script/fmt and script/fmt-check (closes #100)
clawbot
2026-10-05 04:24:45 +02:00
-
a941a80bf9
Run lint and tests as Dockerfile phases built with --no-cache (closes #202)
clawbot
2026-10-05 03:41:50 +02:00
-
55cf7f4fac
Add script/loadtest to measure throughput, latency and memory (closes #81)
clawbot
2026-10-05 02:58:41 +02:00
-
c434581a54
Fetch the tags in the CI checkout (closes #208)
clawbot
2026-10-05 02:07:32 +02:00
-
f77faf13de
Keep config.yml out of git and the Docker build context (closes #212)
clawbot
2026-10-05 01:58:32 +02:00
-
ae7c3f226d
Keep local config files out of the Docker build context (closes #211)
clawbot
2026-10-05 01:24:41 +02:00
-
2beba15ae7
Move pixad's startup from cmd/pixad into internal/app (closes #206)
clawbot
2026-10-05 01:07:47 +02:00
-
23ec4026f6
Ignore .claude/ in .gitignore (closes #204)
clawbot
2026-10-05 00:41:42 +02:00
-
ef828f71a5
Keep secrets out of the Docker build context at every depth (closes #205)
clawbot
2026-10-05 00:07:37 +02:00
-
f3231a3c5a
Replace REPO_POLICIES.md with the canonical copy from sneak/prompts (closes #196)
clawbot
2026-10-04 23:59:29 +02:00
-
cca2e3f926
Test the image proxy flow end to end (closes #80)
clawbot
2026-10-04 23:24:46 +02:00
-
708a9bec20
Test that a URL made on the generator page with a ttl expires (closes #199)
clawbot
2026-10-04 22:42:03 +02:00
-
8314099abd
Refuse image requests whose Referer is on referer_blocklist (closes #90)
clawbot
2026-10-04 22:24:50 +02:00
-
8568c17d1b
Move the example config to configs/, delete scripts/ and CONVENTIONS.md (closes #97)
clawbot
2026-10-04 21:07:52 +02:00
-
625fd42ace
Wait on a busy SQLite database and turn on WAL mode (closes #198)
clawbot
2026-10-04 20:58:37 +02:00
-
66e71b4207
Make the periodic reconciliation test wait for the startup pass (closes #189)
clawbot
2026-10-04 19:59:36 +02:00
-
847ad5b428
Count what the cache holds in the default cache_max_bytes (closes #184)
clawbot
2026-10-04 19:41:49 +02:00
-
233a9c05ad
Test logging in, logging out, the URL generator and /v1/e/ tokens (closes #77)
clawbot
2026-10-04 19:24:39 +02:00
-
842372250f
Remove unsafe-inline from the Content-Security-Policy (closes #125)
clawbot
2026-10-04 18:58:40 +02:00
-
58d601ea48
Replace the deprecated gomodguard with gomodguard_v2 by re-vendoring .golangci.yml (closes #57)
clawbot
2026-10-04 18:34:54 +02:00
-
48f21d4ecf
Abort startup on a config file pixa cannot read (closes #176)
clawbot
2026-10-04 18:24:43 +02:00
-
f8c437b83f
Merge TODO.md with git's union merge (closes #190)
clawbot
2026-10-04 17:58:41 +02:00
-
04093f53ad
Stop TestEvictionRunsOnPeriodicSchedule racing the evictor (closes #183)
clawbot
2026-10-04 16:58:34 +02:00
-
be6c715b36
Write the deployment guide and an example Caddy config (closes #89)
clawbot
2026-10-04 15:08:03 +02:00
-
604b51eea6
Test metrics auth, CORS preflight, login logging and metrics (closes #79)
clawbot
2026-10-04 14:39:27 +02:00
-
ba5a716223
Test the image route's signature check and error answers (closes #76)
clawbot
2026-10-04 13:58:29 +02:00
-
c7173c47d8
Return and pass on request IDs, and give /v1/e/ ETag, 304 and HEAD (closes #84)
clawbot
2026-10-04 12:41:54 +02:00
-
363774c058
Document every route, encrypted URLs and the config file search (closes #75)
clawbot
2026-10-04 09:58:36 +02:00
-
1616e91a6a
Stop cache eviction in progress at shutdown (closes #102)
clawbot
2026-10-04 09:24:42 +02:00
-
6830bdc5de
Remove unimplemented Purge and three unused interfaces (closes #73)
clawbot
2026-10-04 08:41:37 +02:00