Skip to content

Instantly share code, notes, and snippets.

View simonw's full-sized avatar

Simon Willison simonw

View GitHub Profile
This file has been truncated, but you can view the full file.
{"type":"summary","summary":"SQLite Datasette permission matching fix","leafUuid":"87b603ee-c5a4-44eb-b270-ebc8ea6841d7"}
{"type":"file-history-snapshot","messageId":"5ff4b2b2-6ef6-4119-9b87-28fb8f0a568a","snapshot":{"messageId":"5ff4b2b2-6ef6-4119-9b87-28fb8f0a568a","trackedFileBackups":{},"timestamp":"2025-12-20T05:56:49.103Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/private/tmp/files","sessionId":"16c4b025-7b6e-43f0-854e-ca7363f2fee9","version":"2.0.74","gitBranch":"","type":"user","message":{"role":"user","content":"http://localhost:8042/demo.html is served from this directory, take a screenshot of it and look at it"},"uuid":"5ff4b2b2-6ef6-4119-9b87-28fb8f0a568a","timestamp":"2025-12-20T05:56:49.097Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
{"type":"file-history-snapshot","messageId":"662cbb96-5dbb-415a-9dd3-8b2275c5f1b0","snapshot":{"messageId":"662cbb96-5dbb-415a-9dd3-8b2275c5f1b0","trackedFileBackups":{},"timestamp":"2025-12-19T04:25:55.259Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/tools","sessionId":"8f5e8399-da56-4001-8c1e-c790821c87d4","version":"2.0.73","gitBranch":"main","type":"user","message":{"role":"user","content":"In claude-code-timeline the feature that gathers all user prompts should skip any prompts that have \"isCompactSummary\": true in their JSON object"},"uuid":"662cbb96-5dbb-415a-9dd3-8b2275c5f1b0","timestamp":"2025-12-19T04:25:55.254Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
{"parentUuid":"662cbb96-5dbb-415a-9dd3-8b2275c5f1b0","isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/tools","sessionId":"8f5e8399-da56-4001-8c1e-c790821c87d4","version":"2.0.73","gitBranch":"main","message":{"
{"type":"summary","summary":"Claude Code CLI Warmup and Capabilities Demo","leafUuid":"326c44b4-ec01-4ce5-bd0b-c60cf78f2b97"}
{"type":"summary","summary":"Git Staging: Selective Add Instead of Add All","leafUuid":"ba2e43de-0adf-44b5-b069-e7175a5bfee3"}
{"type":"file-history-snapshot","messageId":"f4029495-97bf-4c3d-890d-717a805e0265","snapshot":{"messageId":"f4029495-97bf-4c3d-890d-717a805e0265","trackedFileBackups":{},"timestamp":"2025-12-19T01:26:16.937Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/private/tmp/hi","sessionId":"3f5f590c-2795-4de2-875a-aa3686d523a1","version":"2.0.73","gitBranch":"","type":"user","message":{"role":"user","content":"Use the uv-tdd skill to build a uvicorn+httpx HTTP proxy server that proxies all traffic through to the same path on simonwillison.net but adds an x-proxied-by: uvicorn header and another header with microsecond performance numbers for the proxied request"},"uuid":"f4029495-97bf-4c3d-890d-717a805e0265","timestamp"
{"type":"file-history-snapshot","messageId":"1d49da9b-2eff-48f2-8489-9dbe74025103","snapshot":{"messageId":"1d49da9b-2eff-48f2-8489-9dbe74025103","trackedFileBackups":{},"timestamp":"2025-12-19T00:51:54.150Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/uv-preview","sessionId":"55873bfa-2c34-479f-98cc-a0ac1d422634","version":"2.0.73","gitBranch":"","type":"user","message":{"role":"user","content":"Use the uv-tdd skill to build a hello world uvicorn app with no other dependencies"},"uuid":"1d49da9b-2eff-48f2-8489-9dbe74025103","timestamp":"2025-12-19T00:51:54.143Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
{"parentUuid":"1d49da9b-2eff-48f2-8489-9dbe74025103","isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/uv-preview","sessionId":"55873bfa-2c34-479f-98cc-a0ac1d422634","version":"2.0.73","gitBranch":"","message":{"model":"claude-haiku-4-5-20251001","id":"msg_01BuQSFLHMqrieMtFH
{"type":"summary","summary":"Fix gemma models media resolution bug","leafUuid":"57935458-46f4-4de2-acd9-c2d9b0cfce5f"}
{"type":"file-history-snapshot","messageId":"2d3ea5b0-e396-47eb-9201-ad68121b1145","snapshot":{"messageId":"2d3ea5b0-e396-47eb-9201-ad68121b1145","trackedFileBackups":{},"timestamp":"2025-12-18T17:34:53.085Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/ecosystem/llm-gemini","sessionId":"f2e931f9-8b7b-4282-90df-49a51cfa96a3","version":"2.0.72","gitBranch":"main","type":"user","message":{"role":"user","content":"Make it so the media_resolution option has None as the default value, then the code that uses it swaps in MediaResolution.LOW if None is found - this is so we do not log a bunch of records as having deliberately used that media resolution when actually the user didn't specify one"},"uuid":"2d3ea5b0-e396-47eb-9201-ad68121b1145","timestamp":"2025-12-18T17:34:53.080Z","thinkingMetadata":{"level":"high","disabled":f
This file has been truncated, but you can view the full file.
{"type":"file-history-snapshot","messageId":"dcc95258-0076-46ec-89d6-2f5d9896129d","snapshot":{"messageId":"dcc95258-0076-46ec-89d6-2f5d9896129d","trackedFileBackups":{},"timestamp":"2025-12-18T05:59:32.566Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/llm","sessionId":"2e4c6077-4b9d-4382-b32c-e3fa9f41f1d6","version":"2.0.72","gitBranch":"logs-options","type":"user","message":{"role":"user","content":"Run this command: uv run llm logs -m gemini-3-flash-preview -q pelican -n 3\n"},"uuid":"dcc95258-0076-46ec-89d6-2f5d9896129d","timestamp":"2025-12-18T05:59:32.555Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
This file has been truncated, but you can view the full file.
{"type":"summary","summary":"Add Copy Prompts Button to Timeline HTML","leafUuid":"014285fe-4b68-406e-9b31-3207f2ea18eb"}
{"type":"file-history-snapshot","messageId":"11cf2c88-128e-4ca4-9a83-46c5672aa70e","snapshot":{"messageId":"11cf2c88-128e-4ca4-9a83-46c5672aa70e","trackedFileBackups":{},"timestamp":"2025-12-18T05:51:48.598Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/tools","sessionId":"4e7c9d12-3299-44a8-84b5-11cb81f04bb4","version":"2.0.72","gitBranch":"main","type":"user","message":{"role":"user","content":"The claude-code-timeline.html file needs an update - the codex-timeline.html file implements a \"Show prompts\" button which opens a modal dialog with the prompts and a Copy button - the Claude one currently just has a Copy prompts button. Upgrade the Claude one to instead use a Show prompts button that works like the Codex one."},"uuid":"11cf2c88-128e-4ca4-9a83-46c5672aa70e","timestamp":"2025-12-18T05:51:48.592Z","thinking
{"type":"file-history-snapshot","messageId":"8a8e8bb1-7464-49a2-8721-eb221f3a3218","snapshot":{"messageId":"8a8e8bb1-7464-49a2-8721-eb221f3a3218","trackedFileBackups":{},"timestamp":"2025-12-17T21:58:07.314Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon","sessionId":"277f51ae-9694-41eb-a820-d77baba3d489","version":"2.0.71","gitBranch":"","type":"user","message":{"role":"user","content":"Make it so claude_code_to_gist.py always looks in ~/.claude/"},"uuid":"8a8e8bb1-7464-49a2-8721-eb221f3a3218","timestamp":"2025-12-17T21:58:07.307Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
{"parentUuid":"8a8e8bb1-7464-49a2-8721-eb221f3a3218","isSidechain":false,"userType":"external","cwd":"/Users/simon","sessionId":"277f51ae-9694-41eb-a820-d77baba3d489","version":"2.0.71","gitBranch":"","message":{"model":"claude-opus-4-5-20251101","id":"msg_013XNKdKinAzMyDwRYsoLsCv","type":"message","role":"assistant","content":[{"type":"think
{"type":"file-history-snapshot","messageId":"cc93ec3d-d1ea-4e9c-b82d-6f575befa5ef","snapshot":{"messageId":"cc93ec3d-d1ea-4e9c-b82d-6f575befa5ef","trackedFileBackups":{},"timestamp":"2025-12-17T21:50:59.635Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/tools","sessionId":"e2651abf-182b-466f-8fe6-4b422b5821f5","version":"2.0.71","gitBranch":"main","type":"user","message":{"role":"user","content":"Modify claude-code-timeline.html add a \"Copy prompts\" button directly above the two column display bit that concatenates together all of the user prompts - where type=user and content-type=text and role=user - into a single block and copies it to clipboard"},"uuid":"cc93ec3d-d1ea-4e9c-b82d-6f575befa5ef","timestamp":"2025-12-17T21:50:59.626Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}
{"parentUuid":"cc93ec3d-d1ea-4e9c-b82d-6f575befa5ef","isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/d
This file has been truncated, but you can view the full file.
{"type":"summary","summary":"Claude Code Timeline Event Detail Styling Improvements","leafUuid":"84cea148-6abc-45db-b496-b76521d56d66"}
{"type":"file-history-snapshot","messageId":"e762b279-f8cb-429f-bf6c-ccdd48bb8426","snapshot":{"messageId":"e762b279-f8cb-429f-bf6c-ccdd48bb8426","trackedFileBackups":{},"timestamp":"2025-12-17T20:58:42.037Z"},"isSnapshotUpdate":false}
{"parentUuid":null,"isSidechain":false,"userType":"external","cwd":"/Users/simon/Dropbox/dev/tools","sessionId":"43daf8c0-2ba6-4328-9f98-582b7b4b4cdd","version":"2.0.71","gitBranch":"main","type":"user","message":{"role":"user","content":"Inspect claude-code-timeline.html and see if there is any way that malicious HTML and script tags in a JSONL file might be rendered dangerously thanks to the new markdown rendering feature"},"uuid":"e762b279-f8cb-429f-bf6c-ccdd48bb8426","timestamp":"2025-12-17T20:58:42.031Z","thinkingMetadata":{"level":"high","disabled":false,"triggers":[]},"todos":[]}