Build custom container images / build (map[base_image:php:8-fpm-alpine build_args:PHP_VERSION=8
context:php8-pgsql fingerprint_command:{ apk info -v | LC_ALL=C sort; find /usr/local/lib/php/extensions /usr/local/etc/php/conf.d -type f -exec sha256sum {} + | LC_ALL=C sort; }
name:ph… (push) Successful in 49s
Build custom container images / build (map[base_image:postgres:18 build_args:PG_VERSION=18
POSTGIS_VERSION=3
VCHORD_VERSION=0.5.3
context:postgres fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; find /usr/lib/postgresql -type f -exec sha256su… (push) Successful in 1m42s
Build custom container images / build (map[base_image:python:3 build_args:PYTHON_VERSION=3
context:python-tools fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; }
name:python-tools oci_labels:org.opencontainers.ima… (push) Successful in 54s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim
context:linkki-tiedotus fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; }
name:linkki-tiedotus oci_labels:… (push) Successful in 29s
Build custom container images / build (map[base_image:python:3.12-slim build_args:PYTHON_VERSION=3.12-slim
context:timepoll fingerprint_command:{ dpkg-query -W -f='${binary:Package}=${Version}\n' | LC_ALL=C sort; pip freeze | LC_ALL=C sort; }
name:timepoll oci_labels:org.opencontai… (push) Successful in 44s
35 lines
1.9 KiB
Markdown
35 lines
1.9 KiB
Markdown
# Timepoll Implementation
|
|
|
|
- [x] Poll model, SQLite persistence, timezone-aware schedules and vote conversion.
|
|
- [x] Public/admin API, edit conflicts, live updates and basic abuse limits.
|
|
- [x] Poll creation, administration, voting grid and overlap summaries.
|
|
- [x] Responsive light/dark UI, touch interactions and accessibility.
|
|
- [x] Backend and browser tests, Docker image definition, build workflow and documentation.
|
|
|
|
Public codes use nine Crockford Base32 characters (3-3-3); private admin
|
|
codes use twelve (4-4-4). Participant editing is intentionally trust-based.
|
|
There are no accounts, calendar integrations, notifications or meeting durations.
|
|
All persisted voting intervals are UTC instants; IANA timezones control display
|
|
and conversion of the creator's local daily schedule.
|
|
|
|
## Verification
|
|
|
|
- 24 backend tests pass, including DST transitions, half-hour transitions,
|
|
vote conversion, edit conflicts, code collisions and restart persistence.
|
|
- Chromium desktop and touch/mobile tests pass in light/dark modes, including
|
|
live updates and a 320-pixel-wide editing viewport.
|
|
- Ruff, workflow/Compose YAML validation and whitespace checks pass.
|
|
- The build workflow runs the backend tests before building and publishing the
|
|
Docker image. Publishing an image does not deploy a running service.
|
|
|
|
## Usability Follow-Up
|
|
|
|
- [x] Explicit added-date collection and pending-date validation.
|
|
- [x] Matching time dropdowns and outward rounding on slot-size changes.
|
|
- [x] Root-level public/private links; old preview routes removed.
|
|
- [x] Direct clipboard copying, tested against the actual clipboard over HTTP.
|
|
- [x] Dismiss hover details on pointer exit and page/grid scrolling.
|
|
- [x] Other participants' availability and boundaries remain visible through draft selections; combined view after saving or cancelling.
|
|
- [x] Compact 15-minute rows on desktop and mobile.
|
|
- [x] Emphasized hour labels and rules for 15- and 30-minute grids.
|