mudkipme / moememosandroid Goto Github PK
View Code? Open in Web Editor NEWAn app to help you capture thoughts and ideas
Home Page: http://memos.moe
License: GNU General Public License v3.0
An app to help you capture thoughts and ideas
Home Page: http://memos.moe
License: GNU General Public License v3.0
双击文本加入复制功能,Two click To Copy text,
很需要,也很简单,希望能加入
Unable to upload picture
Phone system : Android 13
memos version : 0.12.2
Use ipv6 network
In menos 0.13, expired labels cannot be deleted.
The storage of memos is minio. When I upload an image in moe, the image is compression automatically, any setting can upload image without xompression?
I just opened the app and I was logged out.
The apk is not reproducible. Maybe we build it from different commits?
I prefer to use local services with backup capabilities. Hopefully developers will consider native features. Thanks for your hard work
Since upgrading to Memos 0.13.2, I cannot log into memos with the Moe Memos app. I always get an "Invalid access token" error. I am not sure if this is a Memos issue or a Moe Memos issue and so opened an issue in both places Note that I can access 0.13.2 via the web client with no issues and that things work normally when I roll back to 0.13.1.
I noticed that in the 0.13.2 changelog, they made some access token changes and am wondering if that is the issue.
Update: According to the memos team, the issue relates to API changes in memos that the Moe Memos team needs to implement. See this closed issue.
adb logcat
reports,
02-28 17:19:04.954 17947 17947 E AndroidRuntime: FATAL EXCEPTION: main
02-28 17:19:04.954 17947 17947 E AndroidRuntime: Process: me.mudkip.moememos, PID: 17947
02-28 17:19:04.954 17947 17947 E AndroidRuntime: android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.media.action.IMAGE_CAPTURE flg=0x3 clip={text/uri-list hasLabel(0) {U(content)}} (has extras) }
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:2117)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.app.Instrumentation.execStartActivity(Instrumentation.java:1762)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.app.Activity.startActivityForResult(Activity.java:5410)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.activity.ComponentActivity.startActivityForResult(Unknown Source:0)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d2.a$a.b(Unknown Source:0)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.activity.ComponentActivity$b.b(Unknown Source:261)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.activity.result.c.Q(Unknown Source:25)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at a.a.a(Unknown Source:4)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at a.l.Q(Unknown Source:2)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at v8.n.G(Unknown Source:73)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at k.x$b.h0(Unknown Source:16)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at l.e1$a$a.m(Unknown Source:123)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d5.a.w(Unknown Source:8)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at b0.h1.a0(Unknown Source:77)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at b8.j.o(Unknown Source:128)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at b8.j.C(Unknown Source:43)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at b8.j.w(Unknown Source:16)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.z.h(Unknown Source:55)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.z.G(Unknown Source:8)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at i1.c.i(Unknown Source:13)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.i.e(Unknown Source:89)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.i.e(Unknown Source:75)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.i.e(Unknown Source:75)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.i.e(Unknown Source:75)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at d1.j.e(Unknown Source:30)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at r.w.d(Unknown Source:208)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.M(Unknown Source:77)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.C(Unknown Source:226)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(Unknown Source:87)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3120)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2801)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:498)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1890)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:4202)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:456)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:14858)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6452)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6253)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5731)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5788)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5754)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5919)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5762)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5976)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5735)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5788)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5754)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5762)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5735)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8702)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8653)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8622)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8825)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:259)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.os.MessageQueue.nativePollOnce(Native Method)
02-28 17:19:04.954 17947 17947 E AndroidRuntime: at android.os.MessageQueue.next(MessageQueue.java:335)
02-28 17:19:04.958 1602 1661 W ActivityTaskManager: Force finishing activity me.mudkip.moememos/.MainActivity
02-28 17:19:04.989 1602 5684 I ActivityManager: Process me.mudkip.moememos (pid 17947) has died: fg TOP
02-28 17:19:04.990 1602 2531 I WindowManager: WIN DEATH: Window{5cd6d22 u0 me.mudkip.moememos/me.mudkip.moememos.MainActivity}
02-28 17:19:04.990 1602 2531 W InputManager-JNI: Input channel object '5cd6d22 me.mudkip.moememos/me.mudkip.moememos.MainActivity (client)' was disposed without first being removed with the input manager!
02-28 17:19:05.034 1602 1676 W WindowManager: Failed to deliver inset state change to w=Window{5cd6d22 u0 me.mudkip.moememos/me.mudkip.moememos.MainActivity EXITING}
02-28 17:19:05.034 1602 1676 W WindowManager: android.os.DeadObjectException
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.BinderProxy.transactNative(Native Method)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.BinderProxy.transact(BinderProxy.java:571)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.view.IWindow$Stub$Proxy.insetsControlChanged(IWindow.java:687)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowState.notifyInsetsControlChanged(WindowState.java:4037)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.InsetsStateController.lambda$notifyPendingInsetsControlChanged$6$InsetsStateController(InsetsStateController.java:552)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.InsetsStateController$$ExternalSyntheticLambda1.run(Unknown Source:2)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowAnimator.executeAfterPrepareSurfacesRunnables(WindowAnimator.java:345)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.RootWindowContainer.performSurfacePlacementNoTrace(RootWindowContainer.java:887)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.RootWindowContainer.performSurfacePlacement(RootWindowContainer.java:824)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacementLoop(WindowSurfacePlacer.java:177)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:126)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowSurfacePlacer.performSurfacePlacement(WindowSurfacePlacer.java:115)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.wm.WindowSurfacePlacer$Traverser.run(WindowSurfacePlacer.java:57)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.Handler.handleCallback(Handler.java:938)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.Handler.dispatchMessage(Handler.java:99)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.Looper.loopOnce(Looper.java:201)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.Looper.loop(Looper.java:288)
02-28 17:19:05.034 1602 1676 W WindowManager: at android.os.HandlerThread.run(HandlerThread.java:67)
02-28 17:19:05.034 1602 1676 W WindowManager: at com.android.server.ServiceThread.run(ServiceThread.java:44)
02-28 17:19:05.460 1602 1675 W ActivityTaskManager: Activity top resumed state loss timeout for ActivityRecord{9421ee6 u0 me.mudkip.moememos/.MainActivity t-1 f}}
My Android runs LineageOS 19L.
我用客户端 Moe Memos 用 Open API 的方式,提示 Use JsonReader.setLenient(true) to accept malformed JSON at path $错误,不知道哪里出问题,不知道楼主或者大家有没有
【网页端是可以登陆使用的】
Could it be possible to add an option to share the link to the note in the note context menu? The mobile UI's share sheet offers a link option.
使用时发现,长文帖子在手机上观看时,会直接占据整个屏幕,向下拖动很久才能划到其他帖子,很不方便。
因此想到,能否将长帖子进行折叠?比如指定一个长度,超过该长度的都进行折叠,用户需要点击展开查看全文;或者点入帖子查看详情,才能看到全文。后一种实现方式好像更好,可以完全规避长文划不到头的问题,按返回键即可回到帖子列表页面。
复现: 单击图片放大时,图片会闪一下然后消失
手机是realme neo2 android 13
MoeMemosAndroid and MoeMemos will not add new tag to Memos tag list when adding new Memos (which have tags). I try to capture the network package and found:
When using the web page to publish memo, its behavior is POST /api/memo
, and then POST /api/tag
for the tags you added. But the behavior of the MoeMemos client is only the previous one, that is, only POST /api/memo
. usememos/memos#1310 (comment)
How can I help to fix it? I found MemoInputPage.kt:MemoInputPage:submit
in MoeMemosAndroid:
fun submit() = coroutineScope.launch {
memo?.let {
viewModel.editMemo(memo.id, text.text).suspendOnSuccess {
navController.popBackStack()
}.suspendOnErrorMessage { message ->
snackbarState.showSnackbar(message)
}
return@launch
}
viewModel.createMemo(text.text).suspendOnSuccess {
text = TextFieldValue("")
viewModel.updateDraft("")
navController.popBackStack()
}.suspendOnErrorMessage { message ->
snackbarState.showSnackbar(message)
}
}
which will only call editMemo
or createMemo
method. But when I read memos web src, I found it upsert new tag after create or edit memos (in web/src/components/MemoEditor.tsx:handleSaveBtnClick
): https://github.com/usememos/memos/blob/ca6839f59399d02723b9dce43ab3d6ee8cc98490/web/src/components/MemoEditor.tsx#L276
Do we need to accomplish a similar behavior like memos web API? I'm not sure if I can update tags in submit method, and I'm glad to add this feature after discussing with you.
Thank you for this beautiful app! At present, markdown headings seem to be rendered the same as regular text. Could it be possible to render headings differently?
app中对一些markdown语法好像不支持,比如引用和列表
Can you add the function of remembering the user name and password? It is inconvenient to enter each time. Thanks
I'm highly expecting this!
Please !!!
黑色,白色 ,以及其他
The app could benefit from a multi-column view for notes on tablet devices.
Hello. Thanks for cool app.
I am expiriensing chalange to add images within notes. For example I need to put an image between text blocks:
Some text block
![](url)
Some text block
It better to add the item "Copu URL" to context menu under "Remove" attachment. It will help to add images inside notes, but not only in attachment.
Thanks
A home screen widget showing the latest memos and a button to add a new one would be great.
I can help with building that, if you want - I've been wanting to get into building Android widgets for some time now.
Hi!
Recently I discover both Memos and MoeMemos. Love they!
But I miss the "protected" notes to be shown to users others than propietary, or to be able to write they in the app.
Is there any plan to support this feature?
I believe is an important one.
Hello, developers.
Please, add the "shortcats" feature. Maybe just applying, but not creation.
i run memos on termux, but use http://127.0.0.1:8081
can't login, error message is null. and http://192.168.1.13:8081
successful login.
Hello, thank you for the work on this application.
While I do appreciate being able to cross items off of a todo list, I would also like to be able to add to them easily.
In the desktop memos standard web interface there is a button to create a new check box, where that seems to be missing here.
Preferably it would be nice to be able to press enter and another check box will be created, but one thing at a time.
I would like to help out, however I am not a dev, nor do I know anything in Kotlin or Jetpack Compose.
I hope this is not too much to ask, thank you for your time.
THANKS!
Please allow memos to be created via the Android share menu.
0.12.0
was released with OAuth2 support. To make it work, I think you'll need to persist the OAuth 2 code and POST it to /api/auth/signin/sso
. The JSON body needs 3 fields:
me.mudkip.moememos//sso-redirect
? Or maybe use the memos.moe domain? That way, the app can register and handle the URI rather than opening the web browser.Looking into how the JS interacts with the SSO, it calls an API method /api/idp
which is not authenticated to get the list of configured SSO providers. Included in the response is the ID which is needed before.
Thank you for fixing bugs! When I use MoeMemos 0.5.4 (installed by release apk) I may have found a timeline display bug. Timeline on webpages displays as follows:
A memo sets as top, memos below published on several seconds ago; six minutes ago and an hour ago. But tineline in MoeMemos displays abnormally:
Two memos not set as top but display on the top.
I don't know if it's a common problem, and I didn't find where to change ways of timeline display, how can I fix it? Thanks for.your reading!
Can you add the functionality, like the mobile browser version of memos, of the "expand" tab on the bottom of long notes? I have to scroll past the whole note.
Fantastic job on the Markdown headings :D They're a treat!
Would you consider adding an optional compact view? Presently, the list view shows the entirety of each note and this results in a lot of scrolling if even a single long note is involved. The compact view could just show the first line of a note along with date and/or tags.
Hello thanks to make memos much better with this app !
Am on android 11
Last version of MoeMemos installed (0.6.0)
My memos self hosted is on last too !
When am typing and hit Enter to break a line the last word is copied on the new line !
Very enoying
Very but works if I add a Space at the end of my line
Tanks again
This is a great app, I wish I could use it offline and automatically sync to memos when connected to the network.
For example, I'm writing some reading notes on the plane, but I don't have internet, so I can't use this app.
It appears I cannot click URLs with the app. Forcing me to click edit then 'copy/paste' by hand.
Please add this enhancement. TIA.
Hello,
I tried using Moe Memos, but my memos server uses an TLS certificate from my internal CA. My phone (Pixel 6) trusts this CA (ca cert imported to cert store), which works fine, I can access memos in the browser without certificate warnings. But Moe Memos won't connect and just says:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
This should be fixable by adding a network service config which allows the app to trust user installed CA certificates, as it was by default before API level 24, as documented here: https://developer.android.com/training/articles/security-config#base-config .
It would be really nice if Moe Memos could support user installed CA certs :)
Not able to upload images, API returns error
POST "/api/resource"
Malformatted post resource request
Switching to /api/resource/blob
seems to fix the issue
EDIT log from my memos server:
method=POST uri=/api/resource status=400 error=code=400, message=Malformatted post resource request, internal=invalid character '-' in numeric literal
试了几次,好像是根据手机壁纸来适应配色的
Sir, I love memos, and I found this app, its good to use, can you add new locale like Chinese( zh-cn and zh-tw) for this app? I can offer translated texts. Thanks.
Do you have intrest on making the app function with the device's storage?
MIUI 14 Android 13
No response after selecting the image
If I'm writing a memo with a tag at the end, the tag isn't activated unless there's a following character (like a trailing space).
For example, "This is my memo #tagone #tagtwo" will activate #tagone but not #tagtwo.
If you add a trailing space, e.g. "This is my memo #tagone #tagtwo " now both tags will be active.
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.