Repository navigation
Releases: chanjdaniel/Conventioner
Releases · chanjdaniel/Conventioner
Release list
v1.0.0
1.0.0 (2026-10-18)
⚠ BREAKING CHANGES
discordGuildIdanddiscordWebhookUrlare no longer part of the market contract, andPOST /markets/{id}/discord/notify-assignmentno longer exists. Stored documents keep the keys harmlessly; nothing reads them.
Features
- a deployment says whether it can serve a request (07ea9a3)
- a seat's hint sits in its top right corner (aad143a)
- a table-share request finds its partner (E27) (f365a32)
- among equals, a vendor who will take fewer tiers is placed first (9f9e91f)
- an answer naming several addresses pairs with the first applicant (dc4cd43)
- applicant: the form asks dates and tiers as one grid (f09734c)
- application: a vendor has a name (e9603a8)
- assignment: assign runs in the assignment phase and nowhere else (211e58d)
- assignment: pair vendors who ask to share a table (5853353)
- assignment: say why a vendor has no table (dce7342)
- assignment: the solver places around pinned vendors (052bd67)
- check-in: make the check-in page work on a phone (2923d27)
- checkin: the page names the market and says which day (f1464d2)
- contract: tier preference is answered per date (a750bf1)
- csv-proposal: hosted TypeSafe settles what the rules cannot (2ce5c3f)
- csv-proposal: the file proposes the plan (79c8a89)
- csv-proposal: the rules propose what each CSV column is (6db0726)
- dialog: a dialog is a form, and the create-market dialog proves it (4893657)
- dialog: every dialog is the same thing, and Enter means one thing (664d715)
- dialog: manage organization stays open (84b216d)
- E17-E20 - the workspace follows the phase, the real form, and one dialog (d7df80a)
- E21 - the market frame, one market from the server, and named writes (5735e17)
- E22 the assignment tab, E23 the plan uses its space (0f3d7ee)
- E28 The details line up (81c20fb)
- each market date is its own row, flowing in columns beside the calendar (64979ae)
- essential: a vendor's preferred name (5660117)
- find a market on the Markets page (E25) (314e7a7)
- fixtures: anonymise a form export by who shares each value (68516a6)
- forms: let a market declare a preference ordering unasked (5ecf9f8)
- import: the form is fixed without leaving the import (720ca33)
- import: the importer says what a single column cannot tell it (ddf5c1d)
- lifecycle: the phase rail (66eadb0)
- market-setup: start from a draft's Google Form responses (5eb6f94)
- market: market dates are chosen on a calendar (966a29e)
- markets: a market belongs to one organization, for good (018a58f)
- markets: a run records what it was made from (25e6bc2)
- markets: intake mode is an organizer choice (7dc6935)
- markets: leaving draft is finalizing, and it is recorded (2c188b5)
- markets: Market Setup is addressed by id and reads the one store (ba22588)
- markets: nothing about a market is stored in the browser (689cb48)
- markets: one store holds the open market, as the server has it (8eb6265)
- markets: renaming is its own write, and only while a draft (b35de1d)
- markets: search, sort and filter the Markets page (3325cf1)
- markets: the application chip (46258cb)
- markets: the assignment rules close with the assignment (131ebe8)
- markets: the form lock is on the market, and nothing borrows it (2bbd082)
- markets: the plan saves only the plan (f70b755)
- markets: the whole-market PUT is gone (c00bbc8)
- markets: Vendors, Import and the floorplan editor are addressed by id (2bcde91)
- market: the applications surface says which phase it is in (bd6fd35)
- market: the assignment surface (557b50a)
- market: the plan is one ordered page (db59513)
- market: the workspace opens the surface the phase is worked on (0ced4d1)
- new-market: I already have a Google Form (a5e478a)
- organizations: deleting an organization is safe (c4d9ad7)
- phases: let a market return to draft before anyone has applied (74ce274)
- phases: publishing lands in market_days, archived means finished (adfae56)
- placements: a pin that cannot be honoured (84055d6)
- placements: a placement has one writer (fd0062c)
- placements: a trail for placements ([cb3271c](https://github.com/chanjdaniel/Conven...
v0.1.0
0.1.0 (2026-09-13)
Features
- add dashboard route and update login redirects (b8a6e88)
- add DashboardView component with navigation buttons (01e7762)
- add Docker infrastructure for containerized development (0d1b56a)
- api: resolve org member emails and add userRole to org response (87a0e7d)
- applicant-auth: implement applicant email-code login backend (#35) (4425006)
- applications: allow importing only while a market takes applications (#61) (914fb64)
- applications: ask table choice and an optional table-share partner (#50) (6d7c0c2)
- applications: ask tier preference separately from availability (#49) (656f580)
- applications: enforce applicant identity uniqueness with atomic upsert and migration (#29) (aee4efb)
- applications: essential form fields with plan-derived offering and freeze-on-first-answer (#45) (af3bde4)
- applications: import vendors from a Google Forms CSV (#53) (a6898a2)
- applications: map a checkbox grid to one question (#54) (9f2d1e7)
- applications: organizer monitoring view and results-publication gate (#39) (9164815)
- applications: preview which rows will be skipped before importing (#57) (e5b394c)
- applications: remember the import mapping and restore it next time (#58) (75b22a1)
- applications: require applicant email before showing application form (#40) (6464f52)
- applications: resolve cell values that do not match the market (#56) (0f77e13)
- applications: return an approval to review when its answers change (#60) (9367c26)
- applications: separate new, updated and absent on re-import (#59) (a31484e)
- applications: stub table type to a single type (#51) (61a8bf0)
- assignment: add column index mapping and market draft flag (28bb554)
- assignment: derive assignment stats and table rows on demand (11b187d)
- assignment: enrich unassigned table metadata and share market schema contract (17157d7)
- assignment: rename route to assignment-results and refresh results UI (ba5c70b)
- assignment: the solver reads Applications (E02) (#64) (6182685)
- back-end: fail closed on unconfigured production security defenses (#27) (ce34f08)
- backend deployment setup (c9a46c1)
- dashboard: add last market card and implement sign out (ec0fb47)
- e2e: fail CI on flaky tests and surface retry-rescued passes (#33) (20db23c)
- frontend: add applicant-facing login, application page, and dashboard views (#37) (79f70f7)
- market_documents: store market slug with indexed lookup, replacing O(n) scan (#28) (24d0df3)
- markets: add application form builder with draft-phase lock (#23) (3cbebdb)
- markets: add Conventioner phase and application data model (#21) (cb75151)
- markets: add phase-transition endpoint with centralized guard registry (#24) (a4ef3cc)
- markets: complete market phase state machine with guards, offer sweep, and phase control UI (#46) (3307caf)
- markets: MVP market lifecycle - guard correction and intake mode (E03) (#65) (c32ee06)
- markets: require an organization at market creation (#22) (c994d49)
- orgs: add manage organization overlay (718d8c9)
- release: prove the MVP journey end to end and fix what it found (E04) (#66) (d4a116f)
- sprint-2: CSV export, Discord webhook, vendor attendance form (5cadf90)
- sprint-3: VendorsView, TablesView, clickable stat cards (a1ff3c9)
- ui: market home route, slug routing, and assignment column mapping (992f62b)
Bug Fixes
- assignment: robust handling of vendor max_days and table_share_email attributes (e59bde5)
- back-end/env.example (3244623)
- e2e: add tier-2 E2E suite and fix add-user-to-market role route (#14) (c068d64)
- e2e: add tier-3 auth E2E suite and fix Discord webhook parsing (#16) (e56841d)
- e2e: close five test/helper integrity gaps ([#31](https://github.com/chanjdaniel/Convention...