# Tasks ## 1. Repository initialization - [x] 1.1 Initialize jujutsu repository with `jj git init` in repo root and verify `.jj` directory exists ## 2. Container build setup - [x] 2.1 Create Containerfile in repository root based on Debian/Ubuntu base image with multiarch support for i386 - [x] 2.2 Install required system packages: cups, avahi-daemon, dbus, wget/curl, and 32-bit runtime libraries (libc6:i386, libstdc++6:i386, etc.) - [x] 2.3 Copy the local Brother driver packages (`assets/Brother HL-4150CDN/lpr-driver/hl4150cdnlpr-1.1.1-5.i386.deb` and `assets/Brother HL-4150CDN/cupswrapper/hl4150cdncupswrapper-1.1.1-5.i386.deb`) into the build context and install them in the container with `dpkg -i --force-all` (verify install reports success) - [x] 2.4 Configure CUPS and Brother drivers (symlink PPD/filter files as needed, set up cupsd.conf for container use) and verify files are in correct locations - [x] 2.5 Set up startup script to run dbus, avahi-daemon, and cupsd in the container - [x] 2.6 Expose ports 631 (CUPS/IPP) and 5353/udp (mDNS) in Containerfile and verify ports are declared ## 3. Printer configuration - [x] 3.1 Add logic/config to create and share the Brother HL-4150CDN printer (using lpadmin) with appropriate network URI and PPD; ensure printer is shared for network clients - [x] 3.2 Configure Avahi/CUPS for AirPrint advertisement and verify printer will be discoverable - [x] 3.3 Add environment-based configuration for the printer address and advertised name (`PRINTER_IP`, `PRINTER_PROTOCOL`, `PRINTER_NAME`, `PRINTER_DESCRIPTION`; `PRINTER_URI` overrides) ## 4. Documentation and testing - [x] 4.1 Create or update README with instructions for building and running the container with podman (including host network mode note for mDNS, volume mounts if needed) - [x] 4.2 Test container build with podman build and verify image builds successfully - [x] 4.3 Test container run and verify CUPS is accessible and printer is shared/discoverable (manual verification) - [x] 4.4 Verify `podman run` with `PRINTER_IP` and a custom `PRINTER_NAME` creates the queue at the derived URI and advertises that name