Skip to content

foundry v0.4.0

Latest

Choose a tag to compare

@MarvinKweyu MarvinKweyu released this 29 Oct 09:24
· 1 commit to main since this release
a818227

Summary

  • Multi-currency: Support any currency, with dashboard totals and reports converted to your workspace currency.
  • Billable expenses: Add unbilled client expenses to invoices, emails, and PDFs.
  • Client communications: Business-branded emails and milestone-completion notifications.
  • Portal access control: Set workspace defaults, customize permissions per client, and restrict users to specific projects. Suspensions and revocations take effect immediately.
  • Security & isolation: Fixed cross-workspace data exposure, tightened client and project relationships, and secured uploaded files.
  • Platform upgrades: Updated Angular, NestJS, Prisma, Nx, and other dependencies; migrated API tests to Vitest.

Details

Multi-currency support (#31)

  • Replaced the fixed currency enum with ISO 4217 currency codes.
  • Added client-specific currencies for project budgets, hourly rates, and portal displays.
  • Dashboard totals, revenue charts, and reports convert amounts to the workspace currency; lists retain original amounts with converted estimates.
  • Added internal project notes, hidden from clients.
  • Added a CI workflow for tests.

Billable expenses & invoice emails (#29)

  • Added a billable-expenses picker when creating invoices. Expenses can only be billed once, in the same currency, with amounts preserved at invoicing.
  • Invoice emails, PDFs, and portal views now display billed expenses separately, with their own subtotal.
  • Client emails use the workspace's business name and configured sending domain.
  • Added milestone-completion emails and enhanced project-status notifications with progress, next milestones, and portal links.
  • Fixed cancelled invoices being sent.

Workspace & client isolation (#30)

  • Added explicit workspace ownership to expenses and documents, preventing cross-workspace exposure.
  • Moving projects between clients now transfers associated expenses and documents and updates portal sharing atomically.
  • Enforced matching client/project ownership for documents and client/invoice ownership for payments.
  • Removed public upload serving and storage URL exposure; file downloads now require authorization.
  • Blocked portal tokens from accessing the notification WebSocket gateway.

Client portal access control (#32)

  • Added workspace-wide default permissions for projects, documents, quotes, and payments, with per-client overrides.
  • Added per-user project restrictions, supporting access to all shared projects or selected projects only.
  • Rebuilt portal access management for enabling access, sharing projects, managing permissions, and inviting or revoking users.
  • User suspensions and revocations now take effect immediately.
  • Existing custom client permissions are preserved during migration.

Platform upgrade (#33)

  • Upgraded Angular 22, Nx 23.3, Prisma 7.10, TypeScript 6, Express 5, and related dependencies.
  • Migrated API tests from Jest to Vitest.
  • Removed the need for --legacy-peer-deps during installation and Docker builds.
  • Removed unused template libraries from the original workspace.
  • Added optional MAIL_TEMPLATES_DIR configuration for custom email templates (work in progress).

Full Changelog: v0.3.0...v0.4.0