Skip to content

Version 2 has been released! #1111

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
nickbe opened this issue May 10, 2025 · 40 comments
Open

Version 2 has been released! #1111

nickbe opened this issue May 10, 2025 · 40 comments

Comments

@nickbe
Copy link
Member

nickbe commented May 10, 2025

The long-awaited new PLANKA version 2 has finally been released! We deeply appreciate everyone's patience, support, and contributions throughout this journey. Your dedication and enthusiasm is the heart and soul of this community.

Enjoy the latest updates, and let's continue building great things together! 🚀

— Your PLANKA Team

@meltyshev meltyshev pinned this issue May 10, 2025
@meltyshev meltyshev changed the title Version 2 has been released ! Version 2 has been released! May 10, 2025
@Lka1988
Copy link

Lka1988 commented May 10, 2025

Very cool, thank you!

I do want to note, for the less-experienced of us (cough me cough) - the Docker upgrade instructions are a bit confusing. I had to keep my containers running or the backup commands wouldn't work, and I had to manually stop the containers after the "db:upgrade" part. Not huge issues, something that someone more experienced would probably understand better, but still, just wanted to point it out.

Great release, otherwise. I dig it. The sorting options are really helpful haha.

@nicedevil007
Copy link

Hi all, I run through the processs for upgrading:

Should we post the issues facing the upgrade process here or in seperate issues?

I faced the issue with the db upgrade part, tested it with 2 instances, one was done as root and one with the planka user in our ubuntu servers (all manual installations).

I'm always facing this issue here:

root@planka:/var/www/planka# npm run db:upgrade

> db:upgrade
> node db/upgrade.js

Upgrading database...
error: insert into "user_account" ("avatar", "created_at", "default_editor_mode", "default_home_view", "default_projects_order", "email", "enable_favorites_by_default", "id", "is_deactivated", "is_sso_user", "language", "name", "organization", "password", "password_changed_at", "phone", "role", "subscribe_to_card_when_commenting", "subscribe_to_own_cards", "turn_off_recent_card_highlighting", "updated_at", "username") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22), ($23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44), ($45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, $64, $65, $66), ($67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88), ($89, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110) - relation "user_account" does not exist
    at Parser.parseErrorMessage (/var/www/planka/node_modules/pg-protocol/dist/parser.js:285:98)
    at Parser.handlePacket (/var/www/planka/node_modules/pg-protocol/dist/parser.js:122:29)
    at Parser.parse (/var/www/planka/node_modules/pg-protocol/dist/parser.js:35:38)
    at Socket.<anonymous> (/var/www/planka/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12)
    at readableAddChunk (node:internal/streams/readable:341:9)
    at Readable.push (node:internal/streams/readable:278:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  length: 111,
  severity: 'ERROR',
  code: '42P01',
  detail: undefined,
  hint: undefined,
  position: '13',
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'parse_relation.c',
  line: '1381',
  routine: 'parserOpenTable'
}

@meltyshev
Copy link
Member

Very cool, thank you!

I do want to note, for the less-experienced of us (cough me cough) - the Docker upgrade instructions are a bit confusing. I had to keep my containers running or the backup commands wouldn't work, and I had to manually stop the containers after the "db:upgrade" part. Not huge issues, something that someone more experienced would probably understand better, but still, just wanted to point it out.

Great release, otherwise. I dig it. The sorting options are really helpful haha.

Thanks for reporting this! We'll definitely look into it and re-test each step.

@meltyshev
Copy link
Member

meltyshev commented May 10, 2025

Hi all, I run through the processs for upgrading:

Should we post the issues facing the upgrade process here or in seperate issues?

I faced the issue with the db upgrade part, tested it with 2 instances, one was done as root and one with the planka user in our ubuntu servers (all manual installations).

I'm always facing this issue here:

root@planka:/var/www/planka# npm run db:upgrade

> db:upgrade
> node db/upgrade.js

Upgrading database...
error: insert into "user_account" ("avatar", "created_at", "default_editor_mode", "default_home_view", "default_projects_order", "email", "enable_favorites_by_default", "id", "is_deactivated", "is_sso_user", "language", "name", "organization", "password", "password_changed_at", "phone", "role", "subscribe_to_card_when_commenting", "subscribe_to_own_cards", "turn_off_recent_card_highlighting", "updated_at", "username") values ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22), ($23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44), ($45, $46, $47, $48, $49, $50, $51, $52, $53, $54, $55, $56, $57, $58, $59, $60, $61, $62, $63, $64, $65, $66), ($67, $68, $69, $70, $71, $72, $73, $74, $75, $76, $77, $78, $79, $80, $81, $82, $83, $84, $85, $86, $87, $88), ($89, $90, $91, $92, $93, $94, $95, $96, $97, $98, $99, $100, $101, $102, $103, $104, $105, $106, $107, $108, $109, $110) - relation "user_account" does not exist
    at Parser.parseErrorMessage (/var/www/planka/node_modules/pg-protocol/dist/parser.js:285:98)
    at Parser.handlePacket (/var/www/planka/node_modules/pg-protocol/dist/parser.js:122:29)
    at Parser.parse (/var/www/planka/node_modules/pg-protocol/dist/parser.js:35:38)
    at Socket.<anonymous> (/var/www/planka/node_modules/pg-protocol/dist/index.js:11:42)
    at Socket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12)
    at readableAddChunk (node:internal/streams/readable:341:9)
    at Readable.push (node:internal/streams/readable:278:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  length: 111,
  severity: 'ERROR',
  code: '42P01',
  detail: undefined,
  hint: undefined,
  position: '13',
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'parse_relation.c',
  line: '1381',
  routine: 'parserOpenTable'
}

Thanks for reporting this! You're right - I just tried it myself and encountered the same error. Already in the process of updating the docs...

Should we post the issues facing the upgrade process here or in seperate issues?

Here it's totally fine, will be easier to handle :)

@meltyshev
Copy link
Member

The docs have been updated. Tested everything again and didn’t encounter the same issues.

@FibreFoX
Copy link

First of all: thank you for (finally) sharing the new version. It really took a long time, but it finally is here, and I am thankful for that 😺

I have a question: is there a reason, that comments are now "right-aligned"?

Image

Coming from other ticket-systems it is a bit confusing so see it there, v1 had if oriented to the left, and it felt better that way, because reading from left-to-right with mixed length comments it gets confusing for the eye.

Image

On the topic of UX, maybe you want to add a tiny label for "board actions" too, because when "in trash view" the button changes the icon, and I got lost searching for the previous "board"-icon

Image

Image

One question regarding the new version: should we report that kind of stuff here in this issue ticket, or should we open a new one? (Do not want to pollute here)

@hazzuk
Copy link

hazzuk commented May 10, 2025

First off, thank you for your hard work and dedication to Planka. Out of all the Docker containers I've selfhosted over the years, I feel Planka is most likely my favourite. It's been a joy to use the last six months.

Migrating to v2 was also a breeze and all the new improvements are going to be very useful. Testing the new version and reviewing the changelog I thought I might note down some general feedback:

v2 Features Feedback

  • The term 'Project' for card types is confusing, as it's the same term used with creating 'Project' boards ('task' would be preferable)

  • The editor UI for 'project' and 'story' card types have no easily discernible differences (only the top left icon and a few less right hand options on stories)

  • The 'Board', 'Archive' and 'Trash' views have no easily discernible differences (only the top right icon)

  • The selected list colour doesn't display on it's cards (could either effect the card backgrounds, or maybe a dot/outline/card title highlight etc)

  • 'Archived' cards don't look "Archived" (aka old/aged)

  • Can't convert a 'Shared' (existing v1) project to a 'Private' project

  • Can't sort or manually reorder cards on the 'Grid' view (with grids and stories in v2, you're about 99% of the way to replacing Google Keep for me)

  • There is no large visual warning the user is in edit mode (something like a 2px coloured line spanning across the top of the app)

Additional Feedback

  • Ability to save global label/custom fields/task lists/board columns presets

  • Mention users with @{username}

  • GitHub integration (for now 'Link attachments (attach URLs)' is a great help in this regard)

  • Create documentation in Projects. This last one is maybe a large ask (and one that might dilute the singular 'kanban' focus of the app). But having used the amazing new markdown editor, and seeing how notes are kind of supported with the use of stories. I'd love a way to create 'pages' (think a far simpler version of something like BookStack).

Once again, thank you and awesome work <3

(this was written using the new markdown editor, worked great)

@nickbe
Copy link
Member Author

nickbe commented May 10, 2025

Thank you for the extensive feedback already on the first day. Indeed several things are on our own lists and not everything is already perfect. And I think that lots of suggestions are indeed helpful and we will discuss them. Again thanks 😊 for taking the time to review V2 so fast.
Cheers

@nickbe
Copy link
Member Author

nickbe commented May 10, 2025

Some short comments to this:

I have a question: is there a reason, that comments are now "right-aligned"?

Indeed they are. When working in a team and with comments on both sides we decided that a modern conversation style would be better. Like this:

Image

On the topic of UX, maybe you want to add a tiny label for "board actions" too, because when "in trash view" the button changes the icon, and I got lost searching for the previous "board"-icon

You are right. It simply seemed easiest this way. But the UI is not optimized in many places and we will think about how to enhance it.

One question regarding the new version: should we report that kind of stuff here in this issue ticket, or should we open a new one?

Later having a fresh issue ticket will be better because discussions will be easier.
But right now - seeing that you guys already dig into v2 like this is enjoyable enough for me and it's fine😄

@nickbe
Copy link
Member Author

nickbe commented May 10, 2025

First, thanks for the feedback. We are happy to have it.

v2 Features Feedback

  • The term 'Project' for card types is confusing, as it's the same term used with creating 'Project' boards ('task' would be preferable)

We didn't like "Task" and project seemed obvious enough. But I'm happy to try and find something else entirely. If successful we rename it.

  • The editor UI for 'project' and 'story' card types have no easily discernible differences (only the top left icon and a few less right hand options on stories)

This is still work in progress. The difference will be much more obvious in due time.

  • The 'Board', 'Archive' and 'Trash' views have no easily discernible differences (only the top right icon)

You're right and I feel the same way. We will optimize the UI further and surely find a better way to indicate the current location.

  • The selected list colour doesn't display on it's cards (could either effect the card backgrounds, or maybe a dot/outline/card title highlight etc)

This on is tricky. For me "colored" cards are a visual nightmare, so the little colored indicator was chosen because we didn't want too much color at all. Let us think about this. Maybe some additional option per user could solve the problem.

  • 'Archived' cards don't look "Archived" (aka old/aged)

Good point. It also falls under the category "work in progress". We simply didn't find the time to really design something better.

  • There is no large visual warning the user is in edit mode (something like a 2px coloured line spanning across the top of the app)

It's on our list for later. But I feel the same.

  • Create documentation in Projects. This last one is maybe a large ask (and one that might dilute the singular 'kanban' focus of the app). But having used the amazing new markdown editor, and seeing how notes are kind of supported with the use of stories. I'd love a way to create 'pages' (think a far simpler version of something like BookStack).

Yeah we like the new editor too. It solved so many issues at once 😁
We plan something like that already

@meltyshev
Copy link
Member

  • Can't convert a 'Shared' (existing v1) project to a 'Private' project

This can be done by clicking on a manager and then selecting "Assign as owner" (the manager must be the last one remaining). To make this clearer, it might be better to display the button under the "Danger Zone" section (same as "Make Project Shared"). We can even always show the button and simply disable it when there are multiple managers, with a message explaining that you need to be the last manager in order to convert to private.

Image

Btw, big thanks for all the feedback!

@nicedevil007
Copy link

The docs have been updated. Tested everything again and didn’t encounter the same issues.

tried it again and made sure it is on 1.26.2 version prior to update.

Image

on little thing missing in the docs now:

after switching to the planka user with sudo -i -u planka we should change the directory to /var/www/planka again otherwise npm will fail ofc ;)

@meltyshev
Copy link
Member

after switching to the planka user with sudo -i -u planka we should change the directory to /var/www/planka again otherwise npm will fail ofc ;)

Oops 🙈 Thanks for mentioning that!

@JamesMowery
Copy link

JamesMowery commented May 10, 2025

Is there a way/option to have a Task List always added to new cards that I'm not seeing? I use the feature so often that having to click to add a task list every time is an annoyance and regression from the prior version. Beyond that, enjoying it so far!

@akinin
Copy link

akinin commented May 12, 2025

A magnificent and long-awaited update! Sincere thanks to the developers!

I'd like to share important information for those upgrading Planka when installed through Portainer.
When executing the migration commands described in the official instructions, you must use the following format:
docker compose -p planka run --rm planka cp -av /app/public/project-background-images/. /app/public/background-images
docker compose -p planka run --rm planka npm run db:upgrade
Where the -p planka flag specifies the project name. This is critically important because without this parameter, commands executed in the directory /var/lib/docker/volumes/portainer_data/_data/compose/4 (your number may differ) will create volumes with a numeric prefix (e.g., 4_db-data instead of planka_db-data), resulting in a mismatch with your existing data volumes.

@toras9000
Copy link

Thanks to Planka for the update.

I have been using v1.25.0 and have updated to v2.0.0-rc.2 to try it out.
OIDC is used for user management.

I followed the upgrade guide and was able to upgrade successfully.
One point, it would be helpful if an alternative to ALLOW_ALL_TO_CREATE_PROJECTS being discontinued is mentioned in the guide.
I got a little lost trying to find OIDC_IGNORE_ROLES.

The one thing I felt was missing when I touched v2.0.0 was the specification of the default role of the user.
Users who have been using ALLOW_ALL_TO_CREATE_PROJECTS will probably want to make Project Owner the default.
In my case, it was.

... I rely on translation tools. I'm sorry if there is a strange sentence.

@meltyshev
Copy link
Member

A magnificent and long-awaited update! Sincere thanks to the developers!

I'd like to share important information for those upgrading Planka when installed through Portainer. When executing the migration commands described in the official instructions, you must use the following format: docker compose -p planka run --rm planka cp -av /app/public/project-background-images/. /app/public/background-images docker compose -p planka run --rm planka npm run db:upgrade Where the -p planka flag specifies the project name. This is critically important because without this parameter, commands executed in the directory /var/lib/docker/volumes/portainer_data/_data/compose/4 (your number may differ) will create volumes with a numeric prefix (e.g., 4_db-data instead of planka_db-data), resulting in a mismatch with your existing data volumes.

Thank you 🎉 and thanks for this information! Definitely should be added to the docs :)

@meltyshev
Copy link
Member

Thanks to Planka for the update.

I have been using v1.25.0 and have updated to v2.0.0-rc.2 to try it out. OIDC is used for user management.

I followed the upgrade guide and was able to upgrade successfully. One point, it would be helpful if an alternative to ALLOW_ALL_TO_CREATE_PROJECTS being discontinued is mentioned in the guide. I got a little lost trying to find OIDC_IGNORE_ROLES.

The one thing I felt was missing when I touched v2.0.0 was the specification of the default role of the user. Users who have been using ALLOW_ALL_TO_CREATE_PROJECTS will probably want to make Project Owner the default. In my case, it was.

... I rely on translation tools. I'm sorry if there is a strange sentence.

HI! That's a good point, it seems we should add default parameters to be used when creating a user.

@filcuk
Copy link

filcuk commented May 13, 2025

No issues upgrading on docker.

I have a bit of an odd setup with various sets of compose files, so it was easier to just add the upgrade command to compose directly, just as a tip for others in a similar situation:

  planka:
    image: ghcr.io/plankanban/planka:2.0.0-rc.2
    restart: no
    command: npm run db:upgrade

Is it not inadvisable to use POSTGRES_HOST_AUTH_METHOD=trust? The docker compose template provided in docs uses this, which I suspect leads to many people not knowing or bothering to change it.

Custom fields, archival, card types, views, project screen - fantastic improvements, worth the wait. Thanks for the amazing work.

@stufently
Copy link

where apprise in helm chart ?

@pixolin
Copy link

pixolin commented May 18, 2025

Hi everyone.

I've been using Plankanban since the end of December to plan a trip that my wife and I start in a week. The software has already been very helpful in collecting a lot of information, planning flights, train journeys and hotels and storing tickets and reservations etc.
The only thing I personally missed so far was a calendar, but as a workaround I simply created a workspace “Calendar” with cards for each day of the trip, which does the job.

A week ago I installed the new Docker image for release 2.0-rc2. Update went without any issues and everything continues to run smoothly and without errors. Cool. Many thanks to everyone involved for this great software.

But one question remains: a week before we set off on our trip, I wanted to check whether there are any further updates. This issue here now claims that version 2.0 already had been released. However, the list of releases only shows a release candidate 2 as a Docker image.

As I understand it, a release candidate is a preliminary version for testing before the actual release? Is there still another image coming, which contains the final release? Or have I overseen a Docker image?

@keksie
Copy link

keksie commented May 18, 2025

When a user does not have the global manager role, they cant be added as a manager to a project. This is a nuissance, as they can be granted the role, then added as project manager and revoked the role. However, to remove them as manager again they need the global role.
Also, I do not want them to be able to create new projects, so leaving them the role assigned is not viable.
Bug/Feature?

@Brainopps
Copy link

Just installed V2 and it updated beautifully. The update added everything that I had hoped for. I appreciate everyone that has worked on this project! Thank you!

@jaimedmp
Copy link

jaimedmp commented May 18, 2025

Hi,

I am facing an issue upgrading the planka. Below is the details

planka-1 | Error: The migration directory is corrupt, the following files are missing: 20180721020022_create_next_id_function.js, 20180721021044_create_archive_table.js, 20180721220409_create_user_account_table.js, 20180721233450_create_project_table.js, 20180721234154_create_project_manager_table.js, 20180722000627_create_board_table.js, 20180722001747_create_board_membership_table.js, 20180722003437_create_label_table.js, 20180722003502_create_list_table.js, 20180722003614_create_card_table.js, 20180722005122_create_card_subscription_table.js, 20180722005359_create_card_membership_table.js, 20180722005928_create_card_label_table.js, 20180722006570_create_task_table.js, 20180722006688_create_attachment_table.js, 20181024220134_create_action_table.js, 20181112104653_create_notification_table.js, 20220523131229_add_image_to_attachment_table.js, 20220713145452_add_position_to_task_table.js, 20220725150723_add_language_to_user_account_table.js, 20220729142434_add_index_on_type_to_action_table.js, 20220803221221_add_password_changed_at_to_user_account_table.js, 20220815155645_add_permissions_to_board_membership_table.js, 20220906094517_create_session_table.js, [email protected], 20221223131625_preserve_original_format_of_images.js, 20221225224651_remove_board_types.js.js, 20221226210239_improve_quality_of_resized_images.js, 20230108213138_labels_reordering.js, 20230227170557_rename_timer_to_stopwatch.js, 20230809022050_oidc_with_pkce_flow.js, 20240721171239_languages_with_country_codes.js, 20240812065305_make_due_date_toggleable.js, 20240831195806_additional_http_only_token_for_enhanced_security_in_browsers.js, 20250131202710_add_list_color.js
planka-1 | at validateMigrationList (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:567:11)
planka-1 | at Migrator.latest (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:69:7)
planka-1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
planka-1 | at async /app/db/init.js:14:5
planka-1 |
planka-1 | Node.js v18.20.8
planka-1 exited with code 1

@meltyshev
Copy link
Member

But one question remains: a week before we set off on our trip, I wanted to check whether there are any further updates. This issue here now claims that version 2.0 already had been released. However, the list of releases only shows a release candidate 2 as a Docker image.

As I understand it, a release candidate is a preliminary version for testing before the actual release? Is there still another image coming, which contains the final release? Or have I overseen a Docker image?

Hi! Yes, this is still a pre-release version, but it's ready to use and shouldn't contain any major bugs. We're addressing a few remaining issues and will release the final version soon.

When a user does not have the global manager role, they cant be added as a manager to a project. This is a nuissance, as they can be granted the role, then added as project manager and revoked the role. However, to remove them as manager again they need the global role.
Also, I do not want them to be able to create new projects, so leaving them the role assigned is not viable.
Bug/Feature?

Hi! This is intentional. The Project Manager role has access to all users in the system, as it allows inviting other managers and users to boards. However, we can add more separation if really needed - for example, by adding a switch when selecting the Project Manager role to disable project creation.

@meltyshev
Copy link
Member

Hi,

I am facing an issue upgrading the planka. Below is the details

planka-1 | Error: The migration directory is corrupt, the following files are missing: 20180721020022_create_next_id_function.js, 20180721021044_create_archive_table.js, 20180721220409_create_user_account_table.js, 20180721233450_create_project_table.js, 20180721234154_create_project_manager_table.js, 20180722000627_create_board_table.js, 20180722001747_create_board_membership_table.js, 20180722003437_create_label_table.js, 20180722003502_create_list_table.js, 20180722003614_create_card_table.js, 20180722005122_create_card_subscription_table.js, 20180722005359_create_card_membership_table.js, 20180722005928_create_card_label_table.js, 20180722006570_create_task_table.js, 20180722006688_create_attachment_table.js, 20181024220134_create_action_table.js, 20181112104653_create_notification_table.js, 20220523131229_add_image_to_attachment_table.js, 20220713145452_add_position_to_task_table.js, 20220725150723_add_language_to_user_account_table.js, 20220729142434_add_index_on_type_to_action_table.js, 20220803221221_add_password_changed_at_to_user_account_table.js, 20220815155645_add_permissions_to_board_membership_table.js, 20220906094517_create_session_table.js, [email protected], 20221223131625_preserve_original_format_of_images.js, 20221225224651_remove_board_types.js.js, 20221226210239_improve_quality_of_resized_images.js, 20230108213138_labels_reordering.js, 20230227170557_rename_timer_to_stopwatch.js, 20230809022050_oidc_with_pkce_flow.js, 20240721171239_languages_with_country_codes.js, 20240812065305_make_due_date_toggleable.js, 20240831195806_additional_http_only_token_for_enhanced_security_in_browsers.js, 20250131202710_add_list_color.js planka-1 | at validateMigrationList (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:567:11) planka-1 | at Migrator.latest (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:69:7) planka-1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) planka-1 | at async /app/db/init.js:14:5 planka-1 | planka-1 | Node.js v18.20.8 planka-1 exited with code 1

Hi! This could happen if you're running db:migrate instead of db:upgrade, or if you forgot to run the upgrade script - the upgrade doesn't happen automatically.

This answer might help:

Hi! Upgrading to v2 requires a bit more actions than a typical update:

  • First, please check upgrade to v2 section in the docs.
  • Make sure you have a proper backup of all your data.
  • Instead of running npm run server:db:migrate, please run npm run server:db:upgrade - this will migrate the database and adapt all necessary files.
  • Finally, try starting PLANKA again and verify that everything was migrated successfully.

@keksie
Copy link

keksie commented May 19, 2025

But one question remains: a week before we set off on our trip, I wanted to check whether there are any further updates. This issue here now claims that version 2.0 already had been released. However, the list of releases only shows a release candidate 2 as a Docker image.

As I understand it, a release candidate is a preliminary version for testing before the actual release? Is there still another image coming, which contains the final release? Or have I overseen a Docker image?

Hi! Yes, this is still a pre-release version, but it's ready to use and shouldn't contain any major bugs. We're addressing a few remaining issues and will release the final version soon.

When a user does not have the global manager role, they cant be added as a manager to a project. This is a nuissance, as they can be granted the role, then added as project manager and revoked the role. However, to remove them as manager again they need the global role.
Also, I do not want them to be able to create new projects, so leaving them the role assigned is not viable.
Bug/Feature?

Hi! This is intentional. The Project Manager role has access to all users in the system, as it allows inviting other managers and users to boards. However, we can add more separation if really needed - for example, by adding a switch when selecting the Project Manager role to disable project creation.

That'd be great if such a switch existed!

@jaimedmp
Copy link

Hi,
I am facing an issue upgrading the planka. Below is the details
planka-1 | Error: The migration directory is corrupt, the following files are missing: 20180721020022_create_next_id_function.js, 20180721021044_create_archive_table.js, 20180721220409_create_user_account_table.js, 20180721233450_create_project_table.js, 20180721234154_create_project_manager_table.js, 20180722000627_create_board_table.js, 20180722001747_create_board_membership_table.js, 20180722003437_create_label_table.js, 20180722003502_create_list_table.js, 20180722003614_create_card_table.js, 20180722005122_create_card_subscription_table.js, 20180722005359_create_card_membership_table.js, 20180722005928_create_card_label_table.js, 20180722006570_create_task_table.js, 20180722006688_create_attachment_table.js, 20181024220134_create_action_table.js, 20181112104653_create_notification_table.js, 20220523131229_add_image_to_attachment_table.js, 20220713145452_add_position_to_task_table.js, 20220725150723_add_language_to_user_account_table.js, 20220729142434_add_index_on_type_to_action_table.js, 20220803221221_add_password_changed_at_to_user_account_table.js, 20220815155645_add_permissions_to_board_membership_table.js, 20220906094517_create_session_table.js, [email protected], 20221223131625_preserve_original_format_of_images.js, 20221225224651_remove_board_types.js.js, 20221226210239_improve_quality_of_resized_images.js, 20230108213138_labels_reordering.js, 20230227170557_rename_timer_to_stopwatch.js, 20230809022050_oidc_with_pkce_flow.js, 20240721171239_languages_with_country_codes.js, 20240812065305_make_due_date_toggleable.js, 20240831195806_additional_http_only_token_for_enhanced_security_in_browsers.js, 20250131202710_add_list_color.js planka-1 | at validateMigrationList (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:567:11) planka-1 | at Migrator.latest (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:69:7) planka-1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) planka-1 | at async /app/db/init.js:14:5 planka-1 | planka-1 | Node.js v18.20.8 planka-1 exited with code 1

Hi! This could happen if you're running db:migrate instead of db:upgrade, or if you forgot to run the upgrade script - the upgrade doesn't happen automatically.

This answer might help:

Hi! Upgrading to v2 requires a bit more actions than a typical update:

  • First, please check upgrade to v2 section in the docs.
  • Make sure you have a proper backup of all your data.
  • Instead of running npm run server:db:migrate, please run npm run server:db:upgrade - this will migrate the database and adapt all necessary files.
  • Finally, try starting PLANKA again and verify that everything was migrated successfully.

I have re-run the migration/upgrade. Below are the details:
https://github.com/jaimedmp/planka-upgrade-to-v2-error/blob/main/log

@jaimedmp
Copy link

jaimedmp commented May 19, 2025

Hi,
I am facing an issue upgrading the planka. Below is the details
planka-1 | Error: The migration directory is corrupt, the following files are missing: 20180721020022_create_next_id_function.js, 20180721021044_create_archive_table.js, 20180721220409_create_user_account_table.js, 20180721233450_create_project_table.js, 20180721234154_create_project_manager_table.js, 20180722000627_create_board_table.js, 20180722001747_create_board_membership_table.js, 20180722003437_create_label_table.js, 20180722003502_create_list_table.js, 20180722003614_create_card_table.js, 20180722005122_create_card_subscription_table.js, 20180722005359_create_card_membership_table.js, 20180722005928_create_card_label_table.js, 20180722006570_create_task_table.js, 20180722006688_create_attachment_table.js, 20181024220134_create_action_table.js, 20181112104653_create_notification_table.js, 20220523131229_add_image_to_attachment_table.js, 20220713145452_add_position_to_task_table.js, 20220725150723_add_language_to_user_account_table.js, 20220729142434_add_index_on_type_to_action_table.js, 20220803221221_add_password_changed_at_to_user_account_table.js, 20220815155645_add_permissions_to_board_membership_table.js, 20220906094517_create_session_table.js, [email protected], 20221223131625_preserve_original_format_of_images.js, 20221225224651_remove_board_types.js.js, 20221226210239_improve_quality_of_resized_images.js, 20230108213138_labels_reordering.js, 20230227170557_rename_timer_to_stopwatch.js, 20230809022050_oidc_with_pkce_flow.js, 20240721171239_languages_with_country_codes.js, 20240812065305_make_due_date_toggleable.js, 20240831195806_additional_http_only_token_for_enhanced_security_in_browsers.js, 20250131202710_add_list_color.js planka-1 | at validateMigrationList (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:567:11) planka-1 | at Migrator.latest (/app/node_modules/knex/lib/migrations/migrate/Migrator.js:69:7) planka-1 | at process.processTicksAndRejections (node:internal/process/task_queues:95:5) planka-1 | at async /app/db/init.js:14:5 planka-1 | planka-1 | Node.js v18.20.8 planka-1 exited with code 1

Hi! This could happen if you're running db:migrate instead of db:upgrade, or if you forgot to run the upgrade script - the upgrade doesn't happen automatically.
This answer might help:

Hi! Upgrading to v2 requires a bit more actions than a typical update:

  • First, please check upgrade to v2 section in the docs.
  • Make sure you have a proper backup of all your data.
  • Instead of running npm run server:db:migrate, please run npm run server:db:upgrade - this will migrate the database and adapt all necessary files.
  • Finally, try starting PLANKA again and verify that everything was migrated successfully.

I have re-run the migration/upgrade. Below are the details: https://github.com/jaimedmp/planka-upgrade-to-v2-error/blob/main/log

This is my V1 docker compose file content

services:
  planka:
    image: ghcr.io/plankanban/planka:1.26.2
    restart: always
    volumes:
      - user-avatars:/app/public/user-avatars
      - project-background-images:/app/public/project-background-images
      - attachments:/app/private/attachments
    ports:
      - 9999:1337
    environment:
      - BASE_URL=http://127.0.0.1:3000
      - DATABASE_URL=postgresql://postgres@postgres/planka
      # - SECRET_KEY=c440eac0cd3c83ffbba1e14172e2405af1599d47b6c5036734be070b82c4dd0a083aca3564ef364c6230e141238f29d13cf410a612bf40d3378086cc8ed551ae
      - SECRET_KEY=3fda19c467c6c5216c63cf1562cf07eb82d0b27c59c2fa7e8467fca679eaf4da76ba4d236037da97647494a5191f4784016624a2ba53d0480580561ab5d07825

      # - TRUST_PROXY=0
      - TOKEN_EXPIRES_IN=7 # In days

      # related: https://github.com/knex/knex/issues/2354
      # As knex does not pass query parameters from the connection string we
      # have to use environment variables in order to pass the desired values, e.g.
      # - PGSSLMODE=<value>

      # Configure knex to accept SSL certificates
      # - KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATE=false

      - [email protected] # Do not remove if you want to prevent this user from being edited/deleted
      - DEFAULT_ADMIN_PASSWORD=password
      - DEFAULT_ADMIN_NAME=IT Dept
      - DEFAULT_ADMIN_USERNAME=no

      # Email Notifications (https://nodemailer.com/smtp/)

      # - OIDC_ISSUER=
      # - OIDC_CLIENT_ID=
      # - OIDC_CLIENT_SECRET=
      # - OIDC_SCOPES=openid email profile
      # - OIDC_ADMIN_ROLES=admin
      # - OIDC_EMAIL_ATTRIBUTE=email
      # - OIDC_NAME_ATTRIBUTE=name
      # - OIDC_USERNAME_ATTRIBUTE=preferred_username
      # - OIDC_ROLES_ATTRIBUTE=groups
      # - OIDC_IGNORE_USERNAME=true
      # - OIDC_IGNORE_ROLES=true
      # - OIDC_ENFORCED=true

    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=planka
      - POSTGRES_HOST_AUTH_METHOD=trust
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
      interval: 10s
      timeout: 5s
      retries: 5
    # network_mode: none

volumes:
  user-avatars:
  project-background-images:
  attachments:
  db-data:

This is my V2 docker compose file content

services:
  planka:
    image: ghcr.io/plankanban/planka:2.0.0-rc.2
    restart: always
    volumes:
      - favicons:/app/public/favicons
      - user-avatars:/app/public/user-avatars
      - background-images:/app/public/background-images
      - attachments:/app/private/attachments
    ports:
      - 9999:1337
    environment:
      - BASE_URL=http://127.0.0.1:3000
      - DATABASE_URL=postgresql://postgres@postgres/planka
      # - SECRET_KEY=c440eac0cd3c83ffbba1e14172e2405af1599d47b6c5036734be070b82c4dd0a083aca3564ef364c6230e141238f29d13cf410a612bf40d3378086cc8ed551ae
      - SECRET_KEY=3fda19c467c6c5216c63cf1562cf07eb82d0b27c59c2fa7e8467fca679eaf4da76ba4d236037da97647494a5191f4784016624a2ba53d0480580561ab5d07825

      - TRUST_PROXY=false
      - TOKEN_EXPIRES_IN=7 # In days
      - DEFAULT_LANGUAGE=en-US
      # related: https://github.com/knex/knex/issues/2354
      # As knex does not pass query parameters from the connection string we
      # have to use environment variables in order to pass the desired values, e.g.
      # - PGSSLMODE=<value>

      # Configure knex to accept SSL certificates
      # - KNEX_REJECT_UNAUTHORIZED_SSL_CERTIFICATE=false

      - [email protected] # Do not remove if you want to prevent this user from being edited/deleted
      - DEFAULT_ADMIN_PASSWORD=password
      - DEFAULT_ADMIN_NAME=IT Dept
      - DEFAULT_ADMIN_USERNAME=no

      # Email Notifications (https://nodemailer.com/smtp/)

      # - OIDC_ISSUER=
      # - OIDC_CLIENT_ID=
      # - OIDC_CLIENT_SECRET=
      # - OIDC_SCOPES=openid email profile
      # - OIDC_ADMIN_ROLES=admin
      # - OIDC_EMAIL_ATTRIBUTE=email
      # - OIDC_NAME_ATTRIBUTE=name
      # - OIDC_USERNAME_ATTRIBUTE=preferred_username
      # - OIDC_ROLES_ATTRIBUTE=groups
      # - OIDC_IGNORE_USERNAME=true
      # - OIDC_IGNORE_ROLES=true
      # - OIDC_ENFORCED=true

    depends_on:
      postgres:
        condition: service_healthy

  postgres:
    image: postgres:16-alpine
    restart: always
    volumes:
      - db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=planka
      - POSTGRES_HOST_AUTH_METHOD=trust
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres -d planka"]
      interval: 10s
      timeout: 5s
      retries: 5
    # network_mode: none

volumes:
  favicons:
  user-avatars:
  background-images:
  attachments:
  db-data:

@meltyshev
Copy link
Member

Thanks for posting the logs. It looks like you've hit the limit for how much data can be inserted in a single query. I'm currently investigating how to resolve it.

@meltyshev
Copy link
Member

meltyshev commented May 19, 2025

@jaimedmp I've pushed the fix, but it hasn't been released as a new version yet. However, you can try it out using the nightly version and then switch back to the 2.0.0-rc.2 image tag. To do so, please follow these steps:

  • Revert everything to v1 by restoring your backup.
  • Follow the upgrade guide, but instead of using the 2.0.0-rc.2 tag, use nightly.
  • After the upgrade, change the image tag back to 2.0.0-rc.2 and run docker compose pull.
  • Start the containers with docker compose up -d.

UPD: Also, please don't forget to change the SECRET_KEY since it has been exposed here.

@jaimedmp
Copy link

@jaimedmp I've pushed the fix, but it hasn't been released as a new version yet. However, you can try it out using the nightly version and then switch back to the 2.0.0-rc.2 image tag. To do so, please follow these steps:

  • Revert everything to v1 by restoring your backup.
  • Follow the upgrade guide, but instead of using the 2.0.0-rc.2 tag, use nightly.
  • After the upgrade, change the image tag back to 2.0.0-rc.2 and run docker compose pull.
  • Start the containers with docker compose up -d.

UPD: Also, please don't forget to change the SECRET_KEY since it has been exposed here.

I really appreciate this project. Thank you for the fix. It successfully upgraded to V2.
noted on the SECRET_KEY change.

@HannesOberreiter
Copy link
Contributor

Thanks for the release and thanks for keeping it open source.

@Haegar333
Copy link

Haegar333 commented May 28, 2025

Hello!

Thank you for v2!

But i am a little troubled with notifications. Is apprise already activated in planka now? I can´t get it to work.

@meltyshev
Copy link
Member

Hello!

Thank you for v2!

But i am a little troubled with notifications. Is apprise already activated in planka now? I can´t get it to work.

Hi! It's already installed - no further setup is needed besides configuration. You need to open User Settings → Notifications to configure notifications per user, or Board Settings → Notifications to configure them per board. Here's a link to the Apprise docs: https://github.com/caronc/apprise/wiki (it should also be clickable in the Notifications tab).

@Haegar333
Copy link

Haegar333 commented May 28, 2025

Thank you, got it to work in the meantime. 1&1 is sometimes picky with the ports to use...

Is there an option to set the same Apprise service for every user, as a standard?

Edit:

Further question:

Is there a variable that i can use to automate the "to" address? User accounts have the email address, there the emails should go.

And when is an email send?

@talondnb
Copy link

talondnb commented Jun 1, 2025

Hello!
Thank you for v2!
But i am a little troubled with notifications. Is apprise already activated in planka now? I can´t get it to work.

Hi! It's already installed - no further setup is needed besides configuration. You need to open User Settings → Notifications to configure notifications per user, or Board Settings → Notifications to configure them per board. Here's a link to the Apprise docs: https://github.com/caronc/apprise/wiki (it should also be clickable in the Notifications tab).

I'm a little confused by this; I typically setup email notifications and have done so in the docker-compose.yml file using the email parameters. Will this not work on its own or do I still have to setup using apprise (which seems redundant)?

@Haegar333
Copy link

I got it working for me now.

The config lines in the docker-compose are obsolet now.

You have to compile a shoutrrr link fitting your system and insert it in the gui config page.

@talondnb
Copy link

talondnb commented Jun 2, 2025

I got it working for me now.

The config lines in the docker-compose are obsolet now.

You have to compile a shoutrrr link fitting your system and insert it in the gui config page.

@meltyshev, can you confirm this? Is that compose file supposed to be obselete?

@meltyshev
Copy link
Member

I got it working for me now.
The config lines in the docker-compose are obsolet now.
You have to compile a shoutrrr link fitting your system and insert it in the gui config page.

@meltyshev, can you confirm this? Is that compose file supposed to be obselete?

Yes, except for the SMTP_* variables - they can still be configured. But in my opinion, receiving an email for every action isn't a nice way to get notified. It would be better to group them and send a daily summary (for example) and use Apprise (in the GUI) for instant notifications.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests