drop files in the bucket https://dropper.wayl.one
Find a file
2026-10-12 07:40:08 -05:00
.agents/skills/production-traces release: 0.0.41 2026-08-31 21:16:38 -05:00
alembic feat: seed game event catalogs 2026-10-11 20:21:43 -05:00
docs feat: improve game timeline event coverage 2026-10-12 00:03:50 -05:00
dropper feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00
issues release: 0.0.41 2026-08-31 21:16:38 -05:00
research feat: seed game event catalogs 2026-10-11 20:21:43 -05:00
scripts feat: improve game timeline event coverage 2026-10-12 00:03:50 -05:00
static feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00
tailwind release dropper 0.0.14dev40 2026-05-19 18:16:17 -05:00
templates feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00
tests feat: improve game timeline event coverage 2026-10-12 00:03:50 -05:00
.dockerignore release dropper 0.0.14dev37 2026-05-19 14:01:18 -05:00
.dropper-copier-answers.yml init 2024-12-14 19:30:43 -06:00
.gitignore feat: upgrade runtime to Python 3.15 and enforce strict typing 2026-10-10 15:03:44 -05:00
.python-version feat: upgrade runtime to Python 3.15 and enforce strict typing 2026-10-10 15:03:44 -05:00
AGENTS.md feat: publish agent access docs and changelog 2026-10-10 21:25:11 -05:00
alembic.ini release: 0.0.16 2026-05-25 15:04:24 -05:00
CHANGELOG.md feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00
Dockerfile feat: publish agent access docs and changelog 2026-10-10 21:25:11 -05:00
justfile feat: upgrade runtime to Python 3.15 and enforce strict typing 2026-10-10 15:03:44 -05:00
LICENSE.txt init 2024-12-14 19:30:43 -06:00
llms.txt feat: add game event timeline editor 2026-10-11 18:55:45 -05:00
mise.toml feat: upgrade runtime to Python 3.15 and enforce strict typing 2026-10-10 15:03:44 -05:00
package-lock.json add revision history 2026-02-27 07:49:07 -06:00
package.json init 2024-12-14 19:30:43 -06:00
PLAN.md Timeline editor: double-ended trim slider, insert above/below fixes, file drop prevention 2026-02-27 17:11:51 -06:00
pyproject.toml feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00
PYTHON_UPGRADE.md feat: upgrade runtime to Python 3.15 and enforce strict typing 2026-10-10 15:03:44 -05:00
README.md feat: add game event timeline editor 2026-10-11 18:55:45 -05:00
STRATEGIC_PLAN.md Phase 2C Progress: 41 errors remaining 2025-12-17 17:11:52 -06:00
tailwind.config.js fix: make game assignment work for draft profiles 2026-10-11 19:06:26 -05:00
uv.lock feat: pace filmstrips and link metadata results 2026-10-12 07:40:08 -05:00

Dropper

Drop files

Development

Install the pinned Python, uv, Node.js, pnpm, just, and FFmpeg tools with mise:

mise trust
mise install
mise exec -- just install
mise exec -- just dev

With mise activated in your shell, you can run just directly. Tool versions and shared environment variables live in mise.toml; keep credentials and personal overrides in the ignored mise.local.toml.

Update a tool and its project pin with mise use --pin TOOL@VERSION, then verify the relevant project commands before committing mise.toml. Python and JavaScript package dependencies remain managed by uv and npm. Podman/Docker and the Cairo system library require OS installation. Kubernetes and local Ollama workflows also require their respective tools and services.

ChatGPT library metadata

To use your ChatGPT plan for library metadata, install the project dependencies and start the local companion on the computer where Dropper is open:

uv sync
uv run dropper-chatgpt

In Dropper, choose Continue with ChatGPT, select a model, and run Describe library. The default model is the first account model whose name contains luna, when available. The companion listens on 127.0.0.1:8765; OAuth tokens are stored in ~/.config/dropper/chatgpt.json with private file permissions. They are used locally and are never sent to Dropper. The production hosts dropper.wayl.one and dropper.waylonwalker.com, dev hosts, and localhost origins are allowed by default. Add any additional origin with the comma-separated DROPPER_CHATGPT_ALLOWED_ORIGINS setting before starting the companion.

ChatGPT results are kept in media_chatgpt_metadata, separate from the existing current metadata. Worker and media JSON include chatgpt_metadata and a best_metadata object that prefers non-empty ChatGPT values and falls back to the existing metadata. Gaming items include category: "gaming", gaming: true, and a game title when identifiable. Apply database migrations with uv run alembic upgrade head before using the ChatGPT analysis workflow.

Game event profiles and timestamped clip annotations are managed at /metadata/game-events. Add a game's gameplay context and event enum definitions there; Describe library then asks Luna for matching clip events as it analyzes tagged videos. The page includes a synchronized video player and event timeline, and agents can read or add clip events through the authenticated /api/media/{media_id}/timeline-events endpoints.

The library runner spaces ChatGPT requests at least 500 ms apart and allows up to eight in flight when responses take longer. OpenAI does not publish a fixed parallel-request limit for this ChatGPT plan flow; usage depends on the task and the account's app limit. Review it under ChatGPT Settings → Usage. The metadata page shows active previews and estimates remaining time from recent batch completion rates.

Automated agents can fetch /llms.txt for instructions tailored to the current request's authentication state. /changelog serves the shipped Markdown release notes.

Python development and the runtime container use CPython 3.15.0. See the upgrade validation and timings.

License

dropper is distributed under the terms of the MIT license.

Type checking

Run just typecheck after changes. ty checks all Python files in dropper/, scripts/, tests/, and alembic/, including standalone scripts and ignored files inside those directories. Every ty diagnostic is an error; strict equality and generic narrowing are enabled. Type-ignore comments cannot suppress errors, and there are no source exclusions.

The optional Whisper transcription proof of concept requires Python 3.10–3.14 because its native ctranslate2 dependency has no Python 3.15 wheel. It remains included in type checking through an explicit engine protocol.