← Back to sign in

Changelog

Every user-visible change merged to pencorOS, newest first. Generated from git log.

165 entries

June 2026

  • v0.3023Jun 10, 2026Fixedba931b7

    change-items:subcontract number inline after the subcontractor name — clickable, wraps (#54)

  • v0.3022Jun 10, 2026Fixed7e2fdd8

    auth:close missing permission gates found by the full-repo role-gate audit (#53)

  • v0.3021Jun 10, 2026Fixed106a3b5

    change-items:right-align Link column + center Xfer/Fcst flag checkboxes (#52)

  • v0.3020Jun 10, 2026Added1e598da

    change-items:ROM holds the line amount — auto-fills from qty × rate, Subtotals column removed (#51)

  • v0.3019Jun 10, 2026Fixed4b7c632

    oco:markup flows contract→OCP→OCO + Pending OCO advance rolls into a real order (#50)

  • v0.3018Jun 10, 2026Added2725110

    change-orders:end-to-end change-order lifecycle — detail-page parity, budget drill-downs, contract rollups (#49)

  • v0.3017Jun 10, 2026Addedc093d63

    change-items:double-row cost-lines grid (Budget/Costs stacked rows) (#48)

  • v0.3016Jun 9, 2026Fixed993bd70

    change-items:compact cost-lines grid + drop RFI-header New Change Item stub (#47)

  • v0.3015Jun 9, 2026Fixed11db631

    team:project roles are read-only on the Team page — edit via Directory only (#46)

  • v0.3014Jun 9, 2026Fixede41b766

    directory:persist the Add User dialog's Default role as the user's defaultProjectRole (#45)

  • v0.3013Jun 9, 2026Fixed1163dad

    budget:lock freezes only the Original Budget column — forecasting stays available (#44)

  • v0.3012Jun 9, 2026Addedb0dc337

    oco-sco:2-column detail pages for OCP, OCO, and SCO; CI grid number input polish (#43)

  • v0.3011Jun 9, 2026Added1545523

    change-items:CI detail page rework — 2-col layout, edit-mode grid, Type-gated Open, forecast record view (#42)

  • v0.3010Jun 8, 2026Addeddd1518d

    budget:budget transfers permanently lock the budget (edits frozen, transfers stay open) (#41)

  • v0.3009Jun 8, 2026Addedc01402e

    change-items:CI/OCP detail refinements — stepper, real budget tools, OCP PCO fields, attachments (#40)

  • v0.3008Jun 8, 2026Added9260071

    change-items:pull-based provenance breakout + cost-line grid + OCO batch (#39)

  • v0.3007Jun 8, 2026Fixedaf9d85d

    change-items:show subcontractor name in Add Cost Line subcontract picker (#37)

  • v0.3006Jun 8, 2026Added1338b43

    owner-contracts:use UserCombobox for signers in Send Contract dialog (#36)

  • v0.3005Jun 8, 2026Fixedbe2b2d4

    subcontracts:Send-for-Signature in stepper header + contract-PDF upload at Contract Final (#35)

  • v0.3004Jun 8, 2026Fixed769a900

    owner-contracts:add contract-draft upload at Final Draft; drop 'scope sheet' wording (#34)

  • v0.3003Jun 7, 2026Added0d35f17

    users:bulk import users from .xlsx (Project/Pencor Admin only) (#33)

  • v0.3002Jun 7, 2026Fixed11a4bd6

    projects:relax admin id validators from .cuid() to .min(1) (#32)

  • v0.3001Jun 7, 2026Addedf4d3978

    users:add an 'Add User (No email)' option to the create-user dialog (#30)

  • v0.3000Jun 7, 2026Fixed517123b

    subcontracts:show the signed-copy PDF drag box at SENT for any editor (#28)

  • v0.2999Jun 7, 2026Added42f63fa

    change-items:DRAFT-only row delete for change items, OCOs, SCOs (#27)

  • v0.2998Jun 7, 2026Addedeb08624

    budget:Budget Transfer tool (Change Item Management target #4) (#26)

  • v0.2997Jun 6, 2026Addedcb81557

    change-items:CI-locked forecast / Proceeding flow (target #3.5) (#25)

  • v0.2996Jun 6, 2026Added8140215

    sco:build the Subcontract Change Orders module (target #3) (#24)

  • v0.2995Jun 6, 2026Addedc5af3dc

    oco:build the Owner Change Orders module (target #2) (#23)

  • v0.2994Jun 6, 2026Added2a7d206

    change-items:build the Change Items module (target #1) (#22)

  • v0.2993Jun 5, 2026Added3bd010c

    nav:Timecards company module + company side tools for all Pencor staff (#18)

  • v0.2992Jun 5, 2026Added883066f

    permissions:company-level access, derivative financials nav + RBAC consolidation (#17)

  • v0.2991Jun 5, 2026Fixedb022a85

    auth:repair invite & reset links via server-side token_hash verifyOtp

  • v0.2990Jun 2, 2026Added3642d24

    drawings:void sheets via hard-delete + append-only audit log (#12)

  • v0.2989Jun 2, 2026Addedf259b58

    security:finish auth/permission hardening — gate all built-module privileged actions (#11)

  • v0.2988Jun 1, 2026Fixed8dd6690

    email:resolve outbound link origin via getAppUrl() so links are always live (#10)

May 2026

  • v0.2987May 31, 2026Fixed109e156

    meta:lowercase browser title to "pencorOS"

  • v0.2986May 31, 2026Fixed7b03c40

    ci:add DIRECT_URL env var for Prisma migrate deploy

  • v0.2985May 31, 2026Fixed6da0be7

    ci:reword "Contact" in custom-login README to pass docs linter

  • v0.2984May 31, 2026Fixed4b78b6d

    login:update tagline to "the operating system for Pencor Construction"

  • v0.2983May 31, 2026Fixedb9bc722

    login:wrap "//"-prefixed tagline as a string expression

  • v0.2982May 31, 2026Added99a054f

    login:redesign sign-in screen to cover + roadmap design

  • v0.2981May 30, 2026Fixedba07819

    ci:unbreak ESLint flat config under Node 24 / ESLint 9.39

  • v0.2980May 30, 2026Fixed3932046

    auth:hard-navigate after login/set-password + allow /auth callback unauthenticated (fixes Supabase login bounce)

  • v0.2979May 30, 2026Fixed591d422

    build:exclude .next/cache + public/uploads from serverless tracing

  • v0.2978May 30, 2026Fixed210ddbd

    owner-contracts:make getPencorCompanyId deterministic + pin test contractor to own company (kills shared-DB flake)

  • v0.2977May 30, 2026Fixeda9749e3

    build:force-dynamic on (dashboard) layout so auth-gated pages aren't prerendered

  • v0.2976May 30, 2026Fixed277e9d0

    build:rename useSupabaseStorage off the use* prefix (rules-of-hooks) + prefer-const in company test

  • v0.2975May 30, 2026Fixeda6436d4

    rfis:add key to sendButton in EditableQuestion to silence React key warning

  • v0.2974May 30, 2026Fixedfbae609

    rfis:widen New RFI dialog to prevent horizontal scroll from long attachment names

  • v0.2973May 30, 2026Added2012279

    permissions:gate directory pages/nav (view + carve-outs) + matrix editor

  • v0.2972May 29, 2026Added1645e39

    permissions:gate directory company actions + admin roster

  • v0.2971May 29, 2026Addeda7a1326

    permissions:gate directory user actions + role-assignment ladder

  • v0.2970May 29, 2026Addede8f9f4a

    permissions:UI gates for drawings/specs detail actions

  • v0.2969May 29, 2026Addeda4e0b66

    permissions:gate submittal create/edit/settings (+ rfi.settings)

  • v0.2968May 29, 2026Addedf191cae

    permissions:gate drawing-set delete (drawings.void)

  • v0.2967May 29, 2026Addedd5cec18

    permissions:gate specifications upload/edit/delete

  • v0.2966May 29, 2026Added7935223

    permissions:gate drawings upload/edit (drawings.upload / drawings.edit)

  • v0.2965May 29, 2026Added6956b8a

    permissions:gate subcontract create/edit (subcontract.create / .manage)

  • v0.2964May 29, 2026Addedb2de862

    permissions:gate project settings edit (project.settings)

  • v0.2963May 29, 2026Added120fd5a

    permissions:gate project settings edit (project.settings)

  • v0.2962May 29, 2026Added889ae06

    permissions:gate project settings edit (project.settings)

  • v0.2961May 29, 2026Added8dd2d70

    permissions:gate owner-contract create/edit (ownerContract.create / .manage)

  • v0.2960May 29, 2026Added11267b6

    permissions:gate RFI create/edit (rfi.create / rfi.edit)

  • v0.2959May 29, 2026Addedcf50e61

    permissions:gate contract terminal transitions (owner/subcontract .manage)

  • v0.2958May 29, 2026Added881d277

    permissions:gate budget settings (budget.settings)

  • v0.2957May 29, 2026Added86f771a

    permissions:gate budget lock/admin + edits (budget.admin/manage)

  • v0.2956May 29, 2026Added02b7582

    permissions:gate owner-contract execution/signature (ownerContract.sign)

  • v0.2955May 29, 2026Addedc32d806

    permissions:gate SSOV submit/approve (subcontract.subview/manage)

  • v0.2954May 29, 2026Addedd56e290

    permissions:gate subcontract SENT/EXECUTED (subcontract.sign)

  • v0.2953May 29, 2026Fixed12e2214

    perms:creator may delete own DRAFT (RFI + submittal)

  • v0.2952May 29, 2026Added2c4c0ee

    permissions:gate RFI + Submittal void/distribute

  • v0.2951May 29, 2026Added2f30f70

    auth:Pencor Dev capability + dev-mode toggle (replaces NODE_ENV gate)

  • v0.2950May 29, 2026Added77ffd36

    auth:membership-based requireProjectAccess + creator membership

  • v0.2949May 29, 2026Addedb5efd74

    permissions:companyRole + hasPermission (Option A, isPencor gate + carve-outs)

  • v0.2948May 29, 2026Added847eef5

    permissions:rebuild role matrix (16 roles · 143 keys · 30 modules)

  • v0.2947May 29, 2026Fixeda03d14c

    seed:correct name of internal user "Jared Phillips" to "Jared Penny" in seed data

  • v0.2946May 29, 2026Addedd215160

    directory:enhance user management with invite functionality and Pencor employee support

  • v0.2945May 27, 2026Added30cd82b

    Field POC column, project admin assignments, budget popup links, UI polish

  • v0.2944May 27, 2026Addeda03f957

    subcontracts:SCOPE_FINAL panel matches Owner Contract layout + expand edit permissions

  • v0.2943May 27, 2026Addedfe4005b

    subcontracts:scope-sheet drag-and-drop + Parties & Team relocation

  • v0.2942May 27, 2026Added078959a

    subcontracts:Scope Final manager review — send back, advance, edit

  • v0.2941May 27, 2026Added013f75d

    subcontracts:full Edit dialog on title card while in SCOPE_DRAFT (creator-gated)

  • v0.2940May 27, 2026Added8220d28

    subcontracts:Edit cost-code allocation from the Financials card

  • v0.2939May 26, 2026Fixed97b4504

    subcontracts:drop redundant Executed row + humanize Status in Workflow Summary

  • v0.2938May 26, 2026Addedf5b1556

    budget:click-through Committed Costs cell — per-subcontract breakdown dialog

  • v0.2937May 26, 2026Added7ed4d9a

    budget:committed costs now sourced from Subcontract.ContractLineItem + virtual rows

  • v0.2936May 26, 2026Addedbc75af5

    subcontracts:New dialog reworked — Contract Value + Cost Code Allocation + UnBudgeted picker

  • v0.2935May 26, 2026Added0e43afe

    subcontracts:split SSOV from cost allocation — new SSOVLineItem table

  • v0.2934May 26, 2026Added6865884

    subcontracts:server-rendered PDF export — matches RFI pattern

  • v0.2933May 26, 2026Fixed72c5dd8

    subcontracts:getProjectCostCodes — use isActive, not notDeleted()

  • v0.2932May 26, 2026Fixeda1994fa

    subcontracts:split numbering.ts so client components can import TYPE_ABBR

  • v0.2931May 26, 2026Fixed1adc0b2

    schemas:codebase-wide sweep of z.string().cuid() → z.string().min(1)

  • v0.2930May 26, 2026Fixed4b472bd

    subcontracts,companies:relax ID validators from .cuid() to .min(1)

  • v0.2929May 26, 2026Addede0a8836

    subcontracts:P8b SSOV tab UI — line editor + submit/approve flow

  • v0.2928May 26, 2026Addeda0fa02b

    subcontracts:P8a SSOV data layer — submit/approve/request-revisions

  • v0.2927May 26, 2026Added30fa155

    subcontracts:P7 detail page — colored title card, stepper, tabs, insurance buttons

  • v0.2926May 26, 2026Added21e9b26

    subcontracts:P6 list page — table + cards + customizer + print + create dialog

  • v0.2925May 26, 2026Addedfdfb764

    companies:P5 — Contract / Insurance Admin pickers on Company Details

  • v0.2924May 26, 2026Added4452fef

    subcontracts:P4 actions — CRUD, transitions, insurance gate, settings

  • v0.2923May 26, 2026Added02048c2

    subcontracts:P3 types + Zod schemas + queries + two-barrel exports

  • v0.2922May 26, 2026Addedbf5d5a8

    subcontracts:P2 pure logic — bic, transitions, numbering, readiness

  • v0.2921May 26, 2026Addeda123661

    subcontracts:P1 schema migration

  • v0.2920May 26, 2026Addeda475188

    budget:downloadable CSV template in import dialog

  • v0.2919May 26, 2026Addeda860184

    budget:print/pdf + rest api + docs

  • v0.2918May 26, 2026Addedb8982a0

    budget:settings page

  • v0.2917May 26, 2026Added5aaf764

    budget:lock/unlock + integration doc

  • v0.2916May 26, 2026Added952c98a

    budget:csv + template import dialogs

  • v0.2915May 26, 2026Fixed9728be5

    budget:forecast dialog shows $0 when item list is empty

  • v0.2914May 26, 2026Fixedf7303d9

    budget:AUTO forecast create no longer crashes the dialog

  • v0.2913May 26, 2026Addedc6764b9

    budget:cost forecast dialog + inline cell

  • v0.2912May 26, 2026Fixed1577458

    budget:pre-format Builder initialRows to plain DTO

  • v0.2911May 26, 2026Fixed62443fd

    budget:widen Builder Mode input columns

  • v0.2910May 26, 2026Addedb3b0fab

    budget:builder mode spreadsheet entry

  • v0.2909May 26, 2026Added6f6863d

    budget:read-only view + sticky grand total

  • v0.2908May 25, 2026Addedda2d9ac

    budget:forecast items + evaluator

  • v0.2907May 25, 2026Added1b4478c

    budget:module backend + column derivation

  • v0.2906May 25, 2026Added1224cfd

    cost-codes:import + preview the division column

  • v0.2905May 25, 2026Addeda8e8faa

    cost-codes:add downloadable CSV template + link in import dialog

  • v0.2904May 25, 2026Added52519c6

    cost-codes:drop seeded codes/templates + add CSV export button

  • v0.2903May 25, 2026Addede3ad035

    cost-codes:company settings pages

  • v0.2902May 25, 2026Added1768828

    cost-codes:module backend + CSV import

  • v0.2901May 25, 2026Added683afa3

    schema:budget module + company-scoped cost codes

  • v0.2900May 25, 2026Fixed3f75e20

    specifications:use unknown instead of any for pdfjs worker module (CI lint)

  • v0.2899May 25, 2026Fixedd709ef9

    deps:regenerate package-lock.json — resolve missing @testing-library/dom transitive deps

  • v0.2898May 25, 2026Fixeda6563d6

    specifications:set pdfjs worker via globalThis instead of pathToFileURL (Next server bundling)

  • v0.2897May 24, 2026Fixed6dcb3e1

    projects:make Project Details card read-only by default with Edit toggle

  • v0.2896May 24, 2026Fixed164c05d

    owner-contract:add primaryFile relation + FK constraint

  • v0.2895May 24, 2026Added9dd349f

    schema:rename PrimeContract to OwnerContract + parties + signatures + CO markup

  • v0.2894May 24, 2026Fixed7e1a537

    documents:natural-sort folder/file names (1,2,10 not 1,10,2)

  • v0.2893May 24, 2026Added0a00610

    documents:read-only Box folder browser with in-app downloads

  • v0.2892May 24, 2026Fixed76b647d

    box:accept full Box folder URL in folder-ID env vars

  • v0.2891May 24, 2026Fixedaecc140

    documents:import server actions directly from defining files

  • v0.2890May 24, 2026Fixed3e92dc4

    box:SECURITY — move internal helpers out of use-server file; cleanup on decrypt failure

  • v0.2889May 24, 2026Fixeda116f10

    documents:use Prisma's BoxConnection type directly (lint: no-empty-object-type)

  • v0.2888May 24, 2026Added9c9788c

    projects:fire-and-forget Box provisioning + rename sync hooks

  • v0.2887May 24, 2026Added652becc

    documents:global company library at /documents

  • v0.2886May 24, 2026Added314d2da

    documents:per-project Documents page orchestrator

  • v0.2885May 24, 2026Added7c4fff2

    documents:BoxFolderEmbed with lazy box-ui-elements load + token refresh

  • v0.2884May 24, 2026Added124cd64

    documents:ConnectBoxCard, ProvisionFolderCard, BoxOutOfSyncBanner

  • v0.2883May 24, 2026Addedbb246b8

    box:downscoped-token route with folder-membership authorization

  • v0.2882May 24, 2026Added53c19c5

    box:OAuth start + callback routes with CSRF state cookie

  • v0.2881May 24, 2026Added2e2487d

    documents:rewrite module around Box (queries, actions, provisioning, barrels)

  • v0.2880May 24, 2026Added734d191

    box:token lifecycle + module barrel

  • v0.2879May 24, 2026Added12d184e

    box:typed Box REST wrappers — getMe, copyFolder, renameFolder

  • v0.2878May 24, 2026Added9d8515c

    box:OAuth helpers — authorize URL, code exchange, refresh, downscope

  • v0.2877May 24, 2026Added9588eae

    box:AES-256-GCM token encryption with round-trip tests

  • v0.2876May 24, 2026Added9ae18ae

    box:config helper + error classes (hard-fail on missing env)

  • v0.2875May 24, 2026Addeda82ff4b

    schema:documents box integration — BoxConnection + Project Box columns, drop Folder/FileObject/FileLink

  • v0.2874May 24, 2026Fixedaefb10c

    projects:stack photo Replace/Remove buttons vertically

  • v0.2873May 24, 2026Fixedb8a653b

    projects:wire NewProjectForm, allow project-photo file downloads, clean up

  • v0.2872May 24, 2026Added5dc2803

    projects:seed 4 demo projects in YY.XXX format + Riverpark photo

  • v0.2871May 24, 2026Fixedfcf0d29

    projects:switch server-side consumers to index.server barrel

  • v0.2870May 24, 2026Added20a2003

    projects:detail page — photo slot, classification chips, permits card, edit panel

  • v0.2869May 24, 2026Addedc90aa98

    projects:list page — Show inactive toggle, filter dropdowns, neutral badges, photo thumbs

  • v0.2868May 24, 2026Added18ccf83

    projects:ProjectEditForm — full settings panel including actuals + warranty

  • v0.2867May 24, 2026Added3acf46e

    projects:NewProjectForm — single-screen sectioned dialog, Name+Number required

  • v0.2866May 24, 2026Fixed4a17f83

    projects:temporarily drop NewProjectForm re-export (added back in Task 10)

  • v0.2865May 24, 2026Added366b14d

    projects:ProjectPhotoUpload + ActiveToggle components

  • v0.2864May 24, 2026Added45c7bd0

    projects:photo upload API route (single-slot PROJECT_PHOTO)

  • v0.2863May 24, 2026Added613d486

    projects:actions — uniqueness check, setProjectActive, deleteProjectPhoto

  • v0.2862May 24, 2026Added7f4279d

    projects:queries.ts supports new filters + photo include

  • v0.2861May 24, 2026Added58f4daa

    projects:labels.ts — enum label + neutral badge style maps

  • v0.2860May 24, 2026Addedc8bb9ac

    projects:new Zod schema + types for redesigned model

  • v0.2859May 24, 2026Added8f3bead

    schema:project lifecycle redesign — 13-status enum, scope/sector/delivery, descriptor columns, photo FK