Commit Graph

143 Commits

Author SHA1 Message Date
Tim Bendt
521bd5f05c needed the config in the repo
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Run Tests / test (push) Has been cancelled
2025-12-01 08:58:32 -05:00
Tim Bendt
747874c925 mostly unneeded
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Run Tests / test (push) Has been cancelled
2025-12-01 08:42:13 -05:00
Tim Bendt
8889eb10ce ready for prod?
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Run Tests / test (push) Has been cancelled
2025-11-30 20:23:40 -05:00
Bruno Bernardino
3fdda5b34e Update Deno version
Some checks failed
Build Docker Image / build-and-push (push) Has been cancelled
Deploy / deploy (push) Has been cancelled
Run Tests / test (push) Has been cancelled
2025-11-08 10:59:55 +00:00
Bruno Bernardino
6f7c534e59 Update deno.lock file 2025-11-08 10:52:02 +00:00
Bruno Bernardino
8e1b9d1d70 Merge pull request #113 from themadbit/generate-lockfile
generate lock file
2025-11-04 14:32:44 +00:00
themadbit
86721d8877 generate lock file 2025-11-04 12:03:50 +03:00
Bruno Bernardino
b2dda31c51 Revert xml lib, to avoid unexpected issues 2025-10-17 20:52:07 +01:00
Bruno Bernardino
6280228759 Fix XML parsing for WebDav
This was a regression caused by the `@libs/xml` upgrade in v2.6.0
2025-10-17 20:41:01 +01:00
Bruno Bernardino
8d78e1f25c Upgrade dependencies, fix directory download errors
Related to #106
2025-10-08 14:38:31 +01:00
Tilman
c4a5166e3b Support downloading directories as a zip archive (#106)
* Add directory download as zip feature

Implements the ability for users to download directories as zip files if enabled in config. Adds a new API route for directory zipping, updates UI components to show a download button for directories, and introduces related config and type changes. Also includes a new download icon.

* Windows path bugfix

* Include empty directories in zip archive

* Address feedback

- `isDirectoryDownloadsAllowed` -> `areDirectoryDownloadsAllowed`
- send `parentPath` & `name` to API instead of resolving `fullPath` on client
- call `ensureUserPathIsValidAndSecurelyAccessible` before zipping
- set config `allowDirectoryDownloads` default to `false`
- add `zip` to Dockerfile and replace in-house zip algorithm
- replace `download.svg` with heroicon's `arrow-down-tray`
- `replace` with glob -> `replaceAll` with string

* Cleanup apt-get command

* Remove unused zip archive and directory functions
2025-10-08 14:32:45 +01:00
Bruno Bernardino
c81ef77370 Fix linting 2025-10-01 14:20:51 +01:00
Bruno Bernardino
1dcbf529a3 Make initial News loading faster 2025-10-01 14:17:39 +01:00
Tilman
adde693585 Merge pull request #103 from medallyon/bugfix/101-ignore-case-for-sorting
Make file and directory sorting case-insensitive
2025-10-01 14:16:58 +01:00
Bruno Bernardino
577fe087f2 Merge pull request #100 from bewcloud/feature/upgrade-dependencies
Update all dependencies
2025-09-27 19:57:52 +01:00
Bruno Bernardino
6734e9557b Update all dependencies
This takes part of the work being done in #96 that was reverted but still useful.

Note Tailwind and Fresh weren't upgraded because there's no security vulnerability in either, and I have found the new versions to be worse in performance. Thos will likely stay at those fixed versions going forward.
2025-09-27 19:39:09 +01:00
Bruno Bernardino
ba2103afa9 Fix non-absolute URLs in feed articles 2025-09-06 20:40:11 +01:00
Bruno Bernardino
7f81d2a0b5 Fix calendar color when creating a calendar 2025-09-06 19:46:47 +01:00
Bruno Bernardino
49dbc724c8 Fix creating and deleting calendars
This fixes the creation and deletion of calendars to include a color and the proper chosen name.
2025-09-06 19:17:48 +01:00
Bruno Bernardino
24944de0f6 Merge pull request #91 from bewcloud/feature/calendar-ui
Basic CalDav UI (Calendar)
2025-09-06 12:53:04 +01:00
Bruno Bernardino
15dcc8803d Basic CalDav UI (Calendar)
This implements a basic CalDav UI, titled "Calendar". It allows creating new calendars and events with a start and end date, URL, location, and description.

You can also import and export ICS (VCALENDAR + VEVENT) files.

It allows editing the ICS directly, for power users.

Additionally, you can hide/display events from certain calendars, change their names and their colors. If there's no calendar created yet in your CalDav server (first-time setup), it'll automatically create one, titled "Calendar".

You can also change the display timezone for the calendar from the settings.

Finally, there's some minor documentation fixes and some other minor tweaks.

Closes #56
Closes #89
2025-09-06 12:46:13 +01:00
Bruno Bernardino
f14c40d05d Properly fix empty body on GET/HEAD for CardDav/CalDav
Related to 47f443c300
2025-08-28 17:48:10 +01:00
Bruno Bernardino
47f443c300 Fix for Evolution CardDav/CalDav
They seem to make `GET` requests with `body`, which isn't allowed by the spec and causes Deno to fail. This prevents/ignores that.

It also makes the default `docker-compose.yml` "safer" by not exposing the database and container.

Finally, it removes a couple of unmaintained "one-click-deploy" buttons and simplifies documentation.
2025-08-28 14:57:51 +01:00
Bruno Bernardino
02d1d3e6fa Properly fix initial contacts setup
Partially reverts 263cdf544a because it wasn't necessary.
2025-08-27 16:44:01 +01:00
Bruno Bernardino
263cdf544a Fix for initial/clean Radicale setup
This fixes a problem with the contacts app displaying an error on a clean install, due to the fact that `tsdav`'s address book listing didn't ask for a main address first, so Radicale wouldn't create the user directory.

It also upgrades `deno`'s version.
2025-08-27 14:57:19 +01:00
Bruno Bernardino
c950e34c36 Revert expense listing date format to en-US 2025-08-23 08:10:59 +01:00
Bruno Bernardino
eabd888df2 Fix timezone issues with expenses.
I was able to reproduce the problem by setting my system to a timezone, and my `TZ` to a different one. Since it'll default to `UTC`, and to avoid having to pass it around from the system to the client (since we don't really care about the timezone), we simply force the timezone to UTC in the formatting as well, because, again, we don't store timezones or care about them for expenses.

Fixes #88
2025-08-22 12:55:10 +01:00
Bruno Bernardino
4864c283b7 Fix timezone display issues with formatted dates
Fixes #88

Also update Deno, hoping it might help with #87, but it's unlikely
2025-08-21 17:09:32 +01:00
Bruno Bernardino
8ff0a434fd Merge pull request #86 from bewcloud/feature/carddav-basic-ui
Basic CardDav UI (Contacts)
2025-08-10 07:52:00 +01:00
Bruno Bernardino
289f34fe8e Basic CardDav UI (Contacts)
This implements a basic CardDav UI, titled "Contacts". It allows creating new contacts with a first name + last name, and editing their first and last names, main email, main phone, and notes.

You can also import and export VCF (VCARD) files.

It also allows editing the VCARD directly, for power users.

Additionally, you can choose, create, or delete address books, and if there's no address book created yet in your CardDav server (first-time setup), it'll automatically create one, titled "Contacts".

Finally, there are some dependency updates and a fix for the config not allowing disabling the `cardDav` or the `calDav` server.

Related to #56
2025-08-10 07:48:16 +01:00
Bruno Bernardino
820d1622f6 Update OIDC and CalDav/CardDav instructions.
Upgrade Deno, formatting tweaked the SVG files, now.
2025-07-26 09:13:59 +01:00
Bruno Bernardino
781df673dc Add CardDav and CalDav servers (#80)
* Add CardDav and CalDav servers

This implements the servers, but not the clients (yet). The implementation is essentially a proxy to Radicale (as a container in `docker-compose.yml`), with certain security assurances.

If you're upgrading, basically you'll need to create a new `data-radicale` directory, and everything else should just work.

This will also release v2.3.0 with those enabled by default. Tested with Thunderbird and Apple Calendar + Contacts.

To disable these, simply add the new config details and comment out or don't add the new `radicale` service from `docker-compose.yml`.

Related to #56
2025-07-20 10:35:32 +01:00
Bruno Bernardino
5d324aac9e Fail loudly on connection error while running migrations
Closes #77
2025-07-11 09:14:17 +01:00
Bruno Bernardino
e0ad428a9f Improve error messages
This improves error messages throughout. It might sometimes be too verbose, but that's better than being opaque (#74).

Also upgrades Deno's patch version.

Fixes #74
2025-06-23 08:57:02 +01:00
Bruno Bernardino
cb95085ea3 Fix Windows clients sending the wrong path for public sharing
Fixes #73
2025-06-22 11:19:02 +01:00
Bruno Bernardino
7fac7febcf Public File Sharing (#72)
* Public File Sharing

This implements public file sharing (read-only) with and without passwords (#57).

It also fixes a problem with filenames including special characters like `#` not working properly (#71).

You can share a directory or a single file, by using the new share icon on the right of the directories/files, and click on it to manage an existing file share (setting a new password, or deleting the file share).

There is some other minor cleanup and other copy updates in the README.

Closes #57
Fixes #71

* Hide UI elements when sharing isn't allowed
2025-06-20 12:04:16 +01:00
Bruno Bernardino
c7d6b8077b Enable Email as a MFA method/option (#68)
This adds Email as a multi-factor authentication method/option. It reuses the `VerificationCode` for the code generation and validation.

It also refactors the email templating for easier repurposing.

Finally, it has a small Deno version bump.

Closes #25
2025-06-11 15:53:39 +01:00
Bruno Bernardino
111321e9c6 Migrate email provider (from Brevo to generic SMTP) (#67)
This means we now need to have the text and HTML content set in the code, which is arguably better.

In order to avoid allowing legacy Brevo API Key support, this will also introduce breaking changes and will be released as v2.0.0.

I took the opportunity to remove a few deprecated things (like legacy ENV-based config), upgrade PostgreSQL, and pin a specific version in `docker-compose.yml`, since I don't plan to do breaking releases anytime soon, and upgrading PostgreSQL should be fine from now on if the version is pinned.

If you were using Brevo with an API Key, they support SMTP as well, just update your config.

If you were using ENV-based config, check `bewcloud.config.sample.ts`to create your `bewcloud.config.ts`.

If you need help upgrading you PostgreSQL container, I've written a simple guide [step-by-step guide](https://news.onbrn.com/step-by-step-guide-upgrading-postgresql-docker-containers/).
2025-06-10 10:28:13 +01:00
Bruno Bernardino
3038461fb7 Fix WebDAV discovery
Also fix stricter SSO providers which require the paths to match in `redirect_uri`.

Probably fixes #66
2025-06-06 11:30:04 +01:00
Bruno Bernardino
717f55f0af Align sponsors to the center 2025-06-06 06:20:30 +01:00
Bruno Bernardino
ef75eb520c Try to make sponsors image smaller 2025-06-06 06:15:22 +01:00
Bruno Bernardino
a675f76178 Add Sponsors 2025-06-06 06:13:16 +01:00
Bruno Bernardino
aa244c4ea9 Hotfix for SSO behind a reverse proxy
Fixes #65
2025-06-06 05:47:06 +01:00
Bruno Bernardino
aa18dcdb4e Implement (optional) SSO via OIDC (OpenID Connect) (#64)
This implements optional SSO via OIDC for logging in and signing up (for the first admin sign up or if sign up is allowed). The most requested feature!

Tested with Authentik and Google!

It includes a new `SimpleCache` interface (in-memory, using [`caches`](https://developer.mozilla.org/en-US/docs/Web/API/Window/caches)) for storing the state and code challenges.

Closes #13
2025-06-05 18:10:40 +01:00
Bruno Bernardino
cabc18f15d Include example of using the new config file in docker-compose.yml 2025-06-04 14:28:39 +01:00
0xGingi
455a7201e9 Add Optional 2FA Support (#61)
* Add TOTP MFA Support

* Add Passkey MFA Support

It's not impossible I missed some minor cleanup, but most things make sense and there isn't a lot of obvious duplication anymore.

---------

Co-authored-by: Bruno Bernardino <me@brunobernardino.com>
2025-05-29 17:30:28 +01:00
Bruno Bernardino
2a77915630 Fix file upload via Web in Chrome and Firefox
Mentioned in #13 but unrelated to it.
2025-05-26 13:31:35 +01:00
Bruno Bernardino
e337859a22 Implement a more robust Config (#60)
* Implement a more robust Config

This moves the configuration variables from the `.env` file to a new `bewcloud.config.ts` file. Note that DB connection and secrets are still in the `.env` file.

This will allow for more reliable and easier personalized configurations, and was a requirement to start working on adding SSO (#13).

For now, `.env`-based config will still be allowed and respected (overriden by `bewcloud.config.ts`), but in the future I'll probably remove it (some major upgrade).

* Update deploy script to also copy the new config file
2025-05-25 15:48:53 +01:00
Bruno Bernardino
69142973d8 Merge pull request #59 from bewcloud/feature/refactor-misc-fixes
Refactor data handlers + misc fixes
2025-05-24 08:26:45 +01:00
Bruno Bernardino
6cfb62d1a2 Refactor data handlers + misc fixes
This refactors the data handlers into a more standard/understood model-like architecture, to prepare for a new, more robust config system.

It also fixes a problem with creating new Notes and uploading new Photos via the web interface (related to #58).

Finally, it speeds up docker builds by sending in less files, which aren't necessary or will be built anyway.

This is all in preparation to allow building #13 more robustly.
2025-05-24 08:24:10 +01:00