Fixes a panic at start-up for plugin + postgres/mysql. When selecting on a timestamp database type, the type of the var to scan into is different based on database type. The fix is to convert the timestamp to string within the query and scan into a string.
Backend support for subscribing/unsubscribing to blocks, typically cards and boards. Notifies subscribers when changes are made to cards they are subscribed to.
* Adds data migrations and the unique IDs migration
* Adds GetSystemSetting tests
* Add log statements to data migrations
* Move migrations to the store and ensure they follow an order mixing database and data migrations
* Fix system settings
* Add tests for unique id migration
* Small comment change
* Make a couple of methods private and wrap the migration in a transaction
* Update public methods
* Add database mutex to data migrations
* Create server params and pass a mutex factory to the store
* Fix plugin linter
* Make isPlugin private
* Fix comment typo
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
* Adds server ID generation on the insert blocks endpoint
* Fix linter
* Fix server linter
* Fix integration tests
* Update endpoint docs
* Update code to use the BlockType2IDType function when generating new IDs
* Handle new block ids on boards, templates and views creation
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Adds a generator that wraps store methods with transactions and migrates implementations to use transactions
* Remove OpenTracing parameters from the generator
* Remove unused template methods
* Generate transactional methods only for those labelled as so
* Fix linter
* add telemetry for shared boards
* move where setting view out of Routes
* add for configuration setting
* fix spacing
Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
* Stores a cache of inactive connections so their subscriptions are recovered on reconnections
* Adds test for getUserIDsForWorkspace and simplify messages through helpers
* Make the plugin websocket client more resilient
* Remove missed event callback and limit ws state polling to one at a time
* Add read lock for the plugin adapter and guarantee atomic ops on inactiveAt
* Add mutex to the plugin adapter client and tests to cover for races
* Split plugin adapter mutex in two and use them to lock only on data access
* Group plugin adapter fields by the mutex that's guarding them
* initial commit for setting shared board configuration
* add unit test
* working again
* update default config
* initial commit for setting shared board configuration
* add unit test
* working again
* update default config
* add unit tests, some clean up
* more cleanup
* more clean up
* remove header text for GH-1105
* remove unnecessary logs
* update text
* fix lint errors
* more lint fixes
* webapp lint fixes
* Update mattermost-plugin/plugin.json
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* Update mattermost-plugin/plugin.json
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* update for review, sync with main
Co-authored-by: Justine Geffen <justinegeffen@users.noreply.github.com>
* API WIP
* WIP
* Finished changes
* Fixed colors:
* Don't enforce charset adn collation in migration, pick from database DSN
* Added MySQL query
* Updated mocks
* Added tests
* Lint fixes
* Fixed typo and removed unsed style
* Checked in a snapshot
* Updated snapshot
* Updated Cypress test
* Updated Cypress test
* Updated Cypress test
* Fixed review comments
* Fixed tests
* Added default collation for MySQL
* Added documentation for ensuring correct database collation
* Updated migrations
* Fixed a bug with collation
* Fixed lint errors
* Used correct collation
* debugging
* Updating css
* Minor UI changes
* USe inbuilt default collation
* Used only charset for mysql
* Fixed linter issue:
* Added migration for matching collation
* Reverted local config changes
* Reverted local config changes
* Handled the case of personal server running on MySQL
* WIP
* Now running collation matching migration onlyt for plugins
* Minor optimization
* Multiple review fixes
* Added group by clause to primary query
* Supported for subpacth
* Displayed all channels in workspace switcher
* Included channels without a Focalbaord workspaces in worksapce switcher as well
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* API WIP
* WIP
* Finished changes
* Fixed colors:
* Don't enforce charset adn collation in migration, pick from database DSN
* Added MySQL query
* Updated mocks
* Added tests
* Lint fixes
* Fixed typo and removed unsed style
* Checked in a snapshot
* Updated snapshot
* Updated Cypress test
* Updated Cypress test
* Updated Cypress test
* Fixed review comments
* Fixed tests
* Added default collation for MySQL
* Added documentation for ensuring correct database collation
* Updated migrations
* Fixed a bug with collation
* Fixed lint errors
* Used correct collation
* debugging
* Updating css
* Minor UI changes
* USe inbuilt default collation
* Used only charset for mysql
* Fixed linter issue:
* Added migration for matching collation
* Reverted local config changes
* Reverted local config changes
* Handled the case of personal server running on MySQL
* WIP
* Now running collation matching migration onlyt for plugins
* Minor optimization
* Multiple review fixes
* Added group by clause to primary query
* Supported for subpacth
Co-authored-by: Asaad Mahmood <asaadmahmood@users.noreply.github.com>
* Add a plugin adapter to reuse MM websocket in plugin mode
* Remove development replace
* Switch all go.mod files to use 1.16
* Fix linter issues
* Fix linter
* Update server version to contain the new hooks
* Update focalboard to be compatible with mattermost v6
* Point to the new plugin API version
* Fix collectors linter issues
* Move all CI jobs to 1.16
* server/client: support register and login
* server/client: support user related apis
* integrationtests: Add SetupTestHelperWithoutToken
* Add api integration tests for (User APIs)
* rename GetUserMe method to GetMe
* check GetMe data is match the registered data after login
* Add integration test for workspace upload file api
* make ci happy
* Adding support for patch blocks
* Adding some improvements
* Adding api integration test for patch
* Adding SQL store tests
* Regenerating autogenerated code
* Fix linter errors
* Remove wrong update of the swagger file
* Update server/model/block.go
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* Fix gofmt
Co-authored-by: Miguel de la Cruz <mgdelacroix@gmail.com>
* Migrating workspace tree to redux
* More changes for use the redux store for boads and views
* Taking into account the templates on websocket event updates
* Fixing bug on boardTree maintenance
* Websocket client now connects once and subscribe/desubscribe on the fly
* Including usage of the new websocket client
* More work around migrating to redux
* WIP
* WIP
* WIP
* WIP
* WIP
* WIP
* Fixing some things
* WIP
* WIP
* Another small fix
* Restoring filtering, sorting and grouping
* Fixing some other bugs
* Add search text reducer
* Fixing another drag and drop problem
* Improve store names and api
* Fixing small bgus
* Some small fixes
* fixing login
* Fixing register page
* Some other improvements
* Removing unneeded old files
* Removing the need of userCache
* Fixing comments and fixing content ordering
* Fixing sort
* Fixing some TODOs
* Fixing tests
* Fixing snapshot
* Fixing cypress tests
* Fix eslint
* Fixing server tests
* Updating the add cards actions
* Fixing some tiny navigation problems
* Mocking the api calls to pass the tests
* Migrating a new test to redux
* Adding the card right after the insert of the block (not wait for ws event)
* Showing the ws disconnect banner only after 5 seconds of disconnection
* Fixing share view
* Fix eslint
* Fixing problem with sort/groupby modifications
* Fixing some details on redirections and templates creation
* Fixing small bugs around undo
* Fix update properties on click outside the dialog
* Improving the column resize look and feel
* Removing the class based objects from the store (now they are all plain objects
* Fix eslint
* Fixing tests
* Removing unneeded code
* Add unit tests for ./services/webhook/webhook.go
* fix logger in TestClientUpdateNotify
* make ci happy
Co-authored-by: Doug Lauder <wiggin77@warpmail.net>
Co-authored-by: Scott Bishel <scott.bishel@mattermost.com>
* Websocket client now connects once and subscribe/desubscribe on the fly
* Fixing eslint error
Co-authored-by: Harshil Sharma <harshilsharma63@gmail.com>
* fix nil stringer error
* include API path with all API ERROR logs
* enable "caller" field
* disable colour output and min msg length for plugin
* bump Logr version to v2.0.4
* Refactor the websockets connection messages and lifecycle
* Modify frontend to subscribe to a workspace instead of a set of blocks
* Fixing linter errors
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* Added create_at column for blocks
* Populating created by
* Added logic for storing created by
* Added GetBlock by ID to store interface
* Added creayed by and modified by properties
* Added created by and modified by properties
* Added lastmodifiedat property
* Fixed existing webapp test
* Added webapp unit tests
* Added webapp unit tests
* Added webapp unit tests
* Adding server test
* Added server tests
* Fixed a bug causing created by to be set empty
* Avodining timezone specific test behavior
* Made cypress viewport bigger to avoid out-of-viewoport issues in multiple tests
* Removed a leftover comment
* Added updated at/by in table view
* Added updated at in card view
* Fixing sort
* Fixed sorting of updated by
* Fixed existing tests
* Added table tests
* Added cardTree fix
* Fixed tests
* Removed unused import
* Update snapshots
* Added a tamper attempt test
* Removed some leftover debug code
* Removed sending creator from client
* Fixed lint error
* Fixed a build issue
* Avoided setting insert query params multiple times
* Multiple minor review fixes
* Fixed test
* Added getWorkspaceUsers API
* Integrated workspace user API in UI
* Integrated workspace user API in UI
* Added toto for implementation slot
* Implemenmted getWorkspaceUSers to get data from Focalboard DB
* Updated store mocks
* Made select styles a shared constant
* Removed unwanted diffs
* Removed unwanted diffs
* Updated snapshots for new property type
* Added user store test
* Added missing copyright notice
* Returning error if no users found to retain original behavior
* Minor fixes and added tests
* Minor fixes
* Used React context for workspace users
* Used useContext hook, and added additional user ID -> user context to avoid that computation by all componnets
* Mergerd both workspace user contextx
* Minor review fix
- structured, asynchronous logging
- supports discreet log levels, including custom levels
- supports output to console, files, and all common log aggregators.
- supports JSON, plain text and GELF formats
- lazy formatting and writing
* Adds plugin actions to the project's CI
* Remove the version number from the generated artifact
* Change job name to something more descriptive
* Switch back to workflow_dispatch
* Improving mattermost auth implementation
* Making mattermost-auth based on shared database access
* Reverting unneeded changes in the config.json file
* Fixing tiny problems
* Removing the need of using the mattermost session token
* Fixing some bugs and allowing to not-bind the server to any port
* Small fix to correctly get the templates
* Adding the mattermost-plugin code inside focalboard repo
* Adding a not working code part of the cluster websocket communication
* Updating the mattermost version
* Adding the cluster messages for the websockets
* Updating to the new node version
* Making it compatible with S3
* Addressing some tiny problems
* Fixing server tests
* Adds support for MySQL migrations and initialization
Co-authored-by: Miguel de la Cruz <miguel@mcrx.me>
As an SRE team we would like to expose standard metrics and grouped by version
of the application. Right now will expose only metrics related to Go but instrumentor
should be used in other parts of the codebase so we can track other metrics, eg.
number of tasks, boards, users etc. Similar as we do in MM.
It will run in port `localhost:9092` and it is a new config `prometheus_address`.
Also in the commit we introduced, `group.Add` which helps us to handle gracefully
errors for goroutines. It's a good practice and there are couple of articles by
Golang for this.
* Moved golangci-lint config to config file
* Fixed all golangci lint errors
* Not allowing telemetry shutdown error to prevent store from closing
* Remved golangci-lint presets
* Adding mysql support
* Fixing other test cases
* Tests passing on mysql
* Fix the row number generation
* Adding blocks_history table
* merging the migrations in one single set of files
* Passing mysql tests
* Fixing default encoding on mysql
* Simplifying things
* Removing from the blocks table all deleted blocks
* Better indentation
* Moving db types to constants to make it less error prone
* reducing duplicated code
* Removing log line
* Now sql tests are running properly in mysql, sqlite and postgres
* Fixed#269
* Fixing checkbox widht
* Fix#274. Add re-login button to error page.
* Fix#276. Login page title
* Rev Mac build version
* Update changelog for v0.6.5
* Rev Mac build number
* GitHub Actions: Build with Xcode 12.4
* Fix#297: Mac keybpard handling
* Rev Mac built to 12
* Update to v0.6.6
* Fix#312. Windows app images
* Move db and files to Documents\Focalboard on standalone Win app
* Make Win app fixupp code more robust
Co-authored-by: Jesús Espino <jespinog@gmail.com>
* Addining subpath support
* Fixing a subpath problem in suburls
* Using the server root for allow subpaths
* Fixing baseURL variable name
* Some improvements
* Making it work in mattermost plugin
* Fixing eslint warnings
* Fixing cypress tests