monicahq / chandler Goto Github PK
View Code? Open in Web Editor NEWThe upcoming brand new version of Monica. Not suitable for production use at the moment.
License: GNU Affero General Public License v3.0
The upcoming brand new version of Monica. Not suitable for production use at the moment.
License: GNU Affero General Public License v3.0
I'm a new user and only briefly played around with Monica
in part because of its lack of prefix/suffix support. I'm a Jr and so it was a blocker not to have my own name be correct. I set up Chandler
via Docker
and poked around all the options but this still seems to be missing. Is this a planned feature?
P.S. The new version is looking fantastic!
I often find myself wanting to know what the old username of an online friend was using monica, but I usually overwrite them as they change, I think that a "username history" view would be a nice addition !
Sentry Issue: STAGING-APP-8
Error: Attempt to assign property "content" on null
File "/app/Domains/Settings/ManageNotificationChannels/Web/Controllers/TelegramWebhookController.php", line 47, in App\Domains\Settings\ManageNotificationChannels\Web\Controllers\TelegramWebhookController::store
$channel->content = $chatId;
File "/app/Http/Middleware/CheckLocale.php", line 39, in App\Http\Middleware\CheckLocale::handle
return $next($request);
File "/public/index.php", line 52
$request = Request::capture()
...
(55 additional frame(s) were not displayed)
While entering pet information I thought it would be nice if my wife and I could have the same pet entity rather than typing it in free-text twice. Then I thought it would be cool if we could store their birthdays, notes about pet toys, etc. as if they were their own contacts.
Same for addresses and the like - then they could be exposed, clicked on, and you could see everyone living at that address, etc. and also save time entering it multiple times.
If you read this, chances are that you are testing Chandler either locally or online.
Please keep in mind that we are in the development phase. Things are still unstable.
While we are not at the production level ready, we are continuously changing the database schema, as it's way easier to change the schema than to modify it once it's live.
For instance, in the next weeks, I'll completely refactor how we handle the concept of adresses. We could migrate the current structure but honestly it'll take much more time than rewriting it from scratch. The drawback: you'll need to flush your data in your DB for Chandler to work again.
Is there any Figma or similar design file where we can collaborate on design choices?
Is a docker-image available for this version or could someone provide it on hub.docker.com ?
Forgive me, this sort of thing is very loosely defined. The Activity feature in Monica was excellent for remembering past events. Sometimes though, I want to track something a bit less concrete.
For instance: John tells me he loves playing hockey. How do I record that so next time I meet up with him I say something about it? I feel like notes are too freeform and activities too constrained.
That begs the question of "How deep should it go". Lets say I specifically know John loves the Montreal Canadiens. Is that a better fit for notes or "Interests"?
Could tie nicely with #341. Who do I know who likes "Hockey"?
I signed up with GitHub, but did not receive an email. I then tried google, which worked fine.
This PR #422 introduces Wikipedia but right now it's hardcoded in English.
We should add an option in user settings to change that.
In the previous version, a major issue was cross platform compatibility and the extra work around efforts such as maintaining a mobile app - a crucial part of the experience.
PWAs have grown a lot as a concept, and there are loads of packages enabling easy conversion for Laravel based apps.
Are there any plans to go in that direction?
We used to have a toaster that displayed success messages. It broke somehow and now it doesn't work anymore.
It's located in Toaster.vue
.
There are two ways of calling it:
localStorage.success = 'The contact has been edited';
and then it appears on next page loadthis.flash('The call reason type has been created', 'success');
.I have no idea why it doesn't work anymore. We either need to replace it, or make the current one work.
The Family Summary
shows an inconsistent view.
Phillip is listed as Jim's Son under the Social
tab, but not in the Family Summary
Pam has Jim listed as Husband, and Phillip & Cecelia as children under Social
but only Jim under Family Summary
Phillip has Pam & Jim listed as Parents under Social
and no one under Family Summary
Cecelia has Jim & Pam listed as Parents, and Phillip listed as Brother under Social
and only Jim listed under Family Summary
Main docker image revision:a71b14ce977754d6df80d46a98ea5b36b6d46d1d
Currently, monica only supports prefix text.
as such, if the data is world
and the protocol is hello:
, then the final URI will be hello:world
.
what I'd like is a templating engine, where you could do https://somesite.com/%id%/profile
in the example of Discord, it would be something like : https://discord.com/users/%id%/profile
.
i have already needed that for another website, but I don't remember what it was.
I was looking at this and it seems awesome! Will we be able to easily import from the original monica? And, is this ready for use? I'd love to get an instance up and running.
Loving the new Monica so far!
I'm building a test vault with the goal of contributing to the documentation.
If this is already known or not required, please discard.
Using the latest docker image, tagged as revision 99eac7722038a845234e7f933fc6f3078020801b
When adding relationships to contacts, if you define a 'love' relationship with another contact, the second contact does not inherit the same relationship link in the 'Family summary' area.
Add a relationship
for a contactChoose an existing contact
Expected: Select the name in the dropdown.
Actual: Navigates to that contact's page.
It seems the expectation is that users click the Add
button next to the name but that wasn't immediately obvious. Navigating away from the page after clicking made me think that the operation was successful when it wasn't. I acknowledge this might be preference but wanted to call it out as unexpected.
Browser: Safari
On iOS you can add sites to the desktop in Safari. With proper support it will show up with the website's icon and open in its own window as if it were an app.
In Monica 1, you could:
I would like this feature to also be included in Chandler, I assume it might already be on the roadmap but I haven't seen it.
It would also be nice to add WebDAV support for browsing files 👀
PS : Thanks for all the work, Monica has helped me greatly and Chandler is really great !
Contact Information
404
page within Chandler
Back
in the browserBug: The new contact information is missing until refreshing the page.
Expected: It should still be showing.
Browser: Chrome
then you can't access it
Right now we can't use the @ mention in a textarea.
The textarea component should have the ability to let us @ mention someone, through the component API.
We should be able to indicate a new props accept-mention
or something. Once it's set to true, we should be able to call the backend when we @
and load the list of proper contacts.
Then once we select the contact, we should emit something to let the UI know that we've selected someone.
Hard things remaining to do:
Feature parity / services
New features
out of scope for now
Twitter
contact infoBug: The contact information shows as Twitter
rather than the user handle.
Expected: See the user's handle.
Browser: Chrome
When trying to save, e.g. an e-mail address, clicking save does nothing. There doesn't seem to be any JS error nor request made to the server.
I tried adding a new contact and am getting this error. I tried running php artisan migrate
in the container and there was nothing to do.
Image: ghcr.io/monicahq/monica-next:main@sha256:aa4872bfe2d58a26c056be9554b3924f9d01fa3bb8ced526e5a4714f0face474
after pulling the latest.
[previous exception] [object] (PDOException(code: 42S22): SQLSTATE[42S22]: Column not found: 1054 Unknown column 'suffix' in 'field list' at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:539)
�
[stacktrace]
#0 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(539): PDO->prepare('insert into `co...')
#1 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(753): Illuminate\\Database\\Connection->Illuminate\\Database\\{closure}('insert into `co...', Array)
#2 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(720): Illuminate\\Database\\Connection->runQueryCallback('insert into `co...', Array, Object(Closure))
#3 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(546): Illuminate\\Database\\Connection->run('insert into `co...', Array, Object(Closure))
#4 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Connection.php(498): Illuminate\\Database\\Connection->statement('insert into `co...', Array)
#5 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Processors/Processor.php(32): Illuminate\\Database\\Connection->insert('insert into `co...', Array)
#6 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php(3266): Illuminate\\Database\\Query\\Processors\\Processor->processInsertGetId(Object(Illuminate\\Database\\Query\\Builder), 'insert into `co...', Array, 'id')
#7 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1861): Illuminate\\Database\\Query\\Builder->insertGetId(Array, 'id')
#8 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1322): Illuminate\\Database\\Eloquent\\Builder->__call('insertGetId', Array)
#9 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1287): Illuminate\\Database\\Eloquent\\Model->insertAndSetId(Object(Illuminate\\Database\\Eloquent\\Builder), Array)
#10 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1128): Illuminate\\Database\\Eloquent\\Model->performInsert(Object(Illuminate\\Database\\Eloquent\\Builder))
#11 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(978): Illuminate\\Database\\Eloquent\\Model->save()
#12 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/helpers.php(306): Illuminate\\Database\\Eloquent\\Builder->Illuminate\\Database\\Eloquent\\{closure}(Object(App\\Models\\Contact))
#13 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(979): tap(Object(App\\Models\\Contact), Object(Closure))
#14 /var/www/html/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php(23): Illuminate\\Database\\Eloquent\\Builder->create(Array)
#15 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2321): Illuminate\\Database\\Eloquent\\Model->forwardCallTo(Object(Illuminate\\Database\\Eloquent\\Builder), 'create', Array)
#16 /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(2333): Illuminate\\Database\\Eloquent\\Model->__call('create', Array)
#17 /var/www/html/app/Domains/Contact/ManageContact/Services/CreateContact.php(115): Illuminate\\Database\\Eloquent\\Model::__callStatic('create', Array)
#18 /var/www/html/app/Domains/Contact/ManageContact/Services/CreateContact.php(66): App\\Domains\\Contact\\ManageContact\\Services\\CreateContact->createContact()
#19 /var/www/html/app/Domains/Contact/ManageContact/Web/Controllers/ContactController.php(69): App\\Domains\\Contact\\ManageContact\\Services\\CreateContact->execute(Array)
#20 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Domains\\Contact\\ManageContact\\Web\\Controllers\\ContactController->store(Object(Illuminate\\Http\\Request), 1)
#21 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(43): Illuminate\\Routing\\Controller->callAction('store', Array)
#22 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(260): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(App\\Domains\\Contact\\ManageContact\\Web\\Controllers\\ContactController), 'store')
#23 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#24 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(725): Illuminate\\Routing\\Route->run()
#25 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#26 /var/www/html/app/Http/Middleware/CheckVaultPermissionAtLeastEditor.php(31): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#27 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\CheckVaultPermissionAtLeastEditor->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#28 /var/www/html/app/Http/Middleware/CheckVaultAccess.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#29 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\CheckVaultAccess->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#30 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#31 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Auth\\Middleware\\EnsureEmailIsVerified->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#32 /var/www/html/app/Http/Middleware/CheckLocale.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#33 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): App\\Http\\Middleware\\CheckLocale->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#34 /var/www/html/vendor/inertiajs/inertia-laravel/src/Middleware.php(92): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#35 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /var/www/html/vendor/laravel/jetstream/src/Http/Middleware/ShareInertiaData.php(66): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Laravel\\Jetstream\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(59): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#42 /var/www/html/vendor/laravel/framework/src/Illuminate/Auth/Middleware/Authenticate.php(44): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#43 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Auth\\Middleware\\Authenticate->handle(Object(Illuminate\\Http\\Request), Object(Closure), 'sanctum')
#44 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#45 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#46 /var/www/html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#47 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#48 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#49 /var/www/html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#50 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#51 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#52 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#53 /var/www/html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#54 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#55 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#56 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(726): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#57 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(703): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#58 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(667): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#59 /var/www/html/vendor/laravel/framework/src/Illuminate/Routing/Router.php(656): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#60 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(190): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#61 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#62 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#63 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#64 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#65 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#66 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#67 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#68 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#69 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#70 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#71 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#72 /var/www/html/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#73 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#74 /var/www/html/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#75 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(180): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#76 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#77 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(165): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#78 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(134): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#79 /var/www/html/public/index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#80 {main}
"}
172.19.0.12 - - [22/Dec/2022:10:40:38 -0800] "POST /vaults/1/contacts HTTP/1.1" 500 1205 "https://paul.contacts.berruti.family/vaults/1/contacts/create" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1"
172.19.0.12 - - [22/Dec/2022:10:40:40 -0800] "GET /vaults/1/contacts/create HTTP/1.1" 200 12963 "-" "Mozilla/5.0 (iPhone; CPU iPhone OS 16_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Mobile/15E148 Safari/604.1"
Follow up of #410
First of all, thank you for your tireless efforts on the current and upcoming versions of Monica! ❤️
I found out about this development repo for the upcoming major version and wanted to try it out immediately. I spun up a similar setup to my existing self-hosted Monica instance and ran into the following issue:
The generated URLs in the Vue app, for example to JS assets, but also to links, use the http scheme instead of https. I use a reverse proxy in front of the docker container to terminates SSL and therefore, the browsers blocks loading of these generated non-https URLs. The APP_URL
is set to https://mydomain.tld
and I could resolve the asset case by setting ASSET_URL
to the same value. However, links were still not working.
Finally, I tracked down what I believe to be the underlying issue: According to the documentation of Ziggy, it takes Laravel's TrustProxies configuration into account and generates non-http URLs if no reverse proxy is detected.
I found that the current version of Monica has a configuration option for this feature but this version does not.
I'm happy to open a PR if you have the capacity for that right now. Else, feel free to close the issue if you think this should wait until later.
Version: b27d282
I tried adding an address without having Location IQ set up and received an error:
172.19.0.12 - - [11/Dec/2022:14:03:34 -0800] "POST /vaults/1/contacts/1/addresses HTTP/1.1" 500 1205 "https://paul.contacts.berruti.family/vaults/1/contacts/1/tabs/ways-to-connect" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.1 Safari/605.1.15" [2022-12-11 22:04:19] production.ERROR: Env variables are not set for Location IQ {"userId":1,"exception":"[object] (App\\Exceptions\\EnvVariablesNotSetException(code: 0): Env variables are not set for Location IQ at /var/www/html/app/Domains/Contact/ManageContactAddresses/Services/GetGPSCoordinate.php:89)
I can provide a whole call stack but I imagine this is by design during development. If you don't want these kinds of bug reports just yet I'm happy to hold off but wanted to help if it's useful!
Hey guys!
Setting up Docker locally had some unexpected gotchas, so I'd like to just leave a few tips for those new to the flow. This guide continues from the "docker installed, image builds and runs okay point" - meaning you've successfully ran the following commands:
docker build -t monica-next -f scripts/docker/Dockerfile .
docker run --name monica-p 8080:80 -e MAIL_MAILER=log monica-next
After this point you'll be faced with the login screen, where you have to register.
Great, you filled out the registration info and got to the verification mail stage. So where do you find the verification mail?
In my case it is delivered to the Docker Desktop log handler - so open up Docker desktop, pick Containers from the nav bar on the left and click on your monica
container.
Here you can see part of the raw mail HTML being sent to the log mailer. The part containing the verification URL is obfuscated - however, we have =
at the end of each line and a few other bits we need to remove before this works fine.
http://localh= ost:8080/email/verify/2/4b8e02cde907e88a3f481928de3e3cc6ca61686c?expires=3D= 1667212743&signature=3Dd545eebd0f5fdff467acb06d2ed4e29f6dd0e255e66c9ffb= 1274fb01a2dcda1a
To clean this up we need to remove the =
that were added as line ends, remove the newlines that are unnecessary, replace &
with &
and (this is a tricky one) remove the 3D
after signature=
and expires=
.
Then we can copy the raw verification url and paste it into the browser to actually get into the app.
http://localhost:8080/email/verify/2/4b8e02cde907e88a3f481928de3e3cc6ca61686c?expires=1667212743&signature=d545eebd0f5fdff467acb06d2ed4e29f6dd0e255e66c9ffb1274fb01a2dcda1a
Congrats, now you have a basic development/usage loop using a locally built docker container.
NOTE: I'll hopefully write a docker-sync setup for development without rebuilding the container soon, making contributing without setting up your local system possible
Sentry Issue: STAGING-APP-7
Symfony\Component\Mailer\Exception\TransportException: Expected response code "250" but got empty code.
File "/app/Domains/Contact/ManageReminders/Jobs/ProcessScheduledContactReminders.php", line 50, in App\Domains\Contact\ManageReminders\Jobs\ProcessScheduledContactReminders::handle
->notify(new ReminderTriggered($channel, $contactReminder->label, $contactName));
File "/artisan", line 37
new Symfony\Component\Console\Output\ConsoleOutput
...
(47 additional frame(s) were not displayed)
fresh pull with docker image ghcr.io/monicahq/monica-next:main
Steps:
created contact for my wife.
add relationship
selected spouse
selected Choose existing contact, filled in my name no results.
Went to my contact
add relationship
selected spouse
selected Choose existing contact, filled in her name no result
From logs:
[01/Mar/2023:16:27:41 +0000] "GET /vaults/1/contacts/1/tabs/social HTTP/1.1" 200 20741 "http://192.168.1.121:4545/vaults/1/contacts/1/tabs/life-goals" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"
[01/Mar/2023:16:27:48 +0000] "GET /vaults/1/contacts/1/relationships/create HTTP/1.1" 200 10300 "http://192.168.1.121:4545/vaults/1/contacts/1/tabs/social" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"
[2023-03-01 16:28:02] production.ERROR: This database engine does not support fulltext search operations. {"userId":1,"exception":"[object] (RuntimeException(code: 0): This database engine does not support fulltext search operations. at /var/www/html/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php:706)
[01/Mar/2023:16:28:02 +0000] "POST /vaults/1/search/user/contacts HTTP/1.1" 500 1575 "http://192.168.1.121:4545/vaults/1/contacts/1/relationships/create" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/110.0"
Contacts table from database.sqlite
1|9895a95d-3116-48e4-a5ef-9c38ac15c550|1|||1||John||Smith||||||0|1|||||2023-03-01 15:46:30|2023-03-01 15:46:30||
2|9895b67a-6684-4100-ae96-d31723a48dc7|1|||1||Jane||Smith||Doe||||1|1|||2023-03-01 16:23:10||2023-03-01 16:23:10|2023-03-01 16:23:10||
You can already customise display names using a string of text, but I think you should be able to change the display name format based on a condition.
Now, I'm thinking you could link a display name to a user template.
For example, for close friends & family, I usually want their format to be %first_name% %last_name%
, whereas for online friends, I'd usually go with %nickname% (%first_name% %last_name%)
Sentry Issue: STAGING-APP-6
GuzzleHttp\Exception\ClientException: Client error: `POST https://api.telegram.org/bot393828013:AAEae8whNPAHi2EIyRmssVY51XQqsV7o_3M/sendMessage` resulted in a `400 Bad Request` response:
{"ok":false,"error_code":400,"description":"Bad Request: chat not found"}
File "/app/Domains/Contact/ManageReminders/Jobs/ProcessScheduledContactReminders.php", line 50, in App\Domains\Contact\ManageReminders\Jobs\ProcessScheduledContactReminders::handle
->notify(new ReminderTriggered($channel, $contactReminder->label, $contactName));
File "/artisan", line 37
new Symfony\Component\Console\Output\ConsoleOutput
...
(53 additional frame(s) were not displayed)
NotificationChannels\Telegram\Exceptions\CouldNotSendNotification: Telegram responded with an error `400 - Bad Request: chat not found`
File "/app/Domains/Contact/ManageReminders/Jobs/ProcessScheduledContactReminders.php", line 50, in App\Domains\Contact\ManageReminders\Jobs\ProcessScheduledContactReminders::handle
->notify(new ReminderTriggered($channel, $contactReminder->label, $contactName));
File "/artisan", line 37
new Symfony\Component\Console\Output\ConsoleOutput
...
(42 additional frame(s) were not displayed)
I'd like to upload files to my own server rather than using a third party like Uploadcare
.
It's common for things like apartment numbers, PO Boxes, etc. to be on a second address line.
It would be great to have a way of having a summary of a contact before calling this contact.
The idea is to feed yourself with topics of discussion that always occur when calling someone.
This summary would list, in a very digestable way, :
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.