profile
viewpoint
Filip Stanis fstanis London, UK https://twitter.com/FilipStanis DevRel Engineer @google

ampproject/worker-dom 2901

The same DOM API and Frameworks you know, but in a Web Worker.

ampproject/amp-by-example 758

DEPRECATED: AMP by Example has been merged into amp.dev

ampproject/amp.dev 501

The AMP Project Website.

ampproject/amp-toolbox 406

A collection of AMP tools making it easier to publish and host AMP pages.

fstanis/awesome-webdav 19

A curated list of awesome apps that support WebDAV and tools related to it.

fstanis/epaper 7

Go library for Waveshare 4.3inch e-Paper

fstanis/hivecli 3

CLI for Hive smart home devices.

alankent/amp-nuxt-trial 2

Experimenting using Nuxt with AMP

fstanis/easy-webdav 2

Easy to configure, docker-based WebDAV server.

startedmuan/emojilib

started time in a day

issue openedtinygo-org/tinygo

undefined symbol: fork

I'm using TinyGo to build for an ARM-based linux system and the only piece I'm struggling with is running an external command. As os/exec is not supported, I tried to use the fork and execve system call combination instead. However, it seems fork for some reason isn't found by the linker:

package main

// #include <unistd.h>
import "C"

func main() {
	C.fork()
}

This results in tinygo:ld.lld: error: undefined symbol: fork.

Is there any library / flag I could provide to let the linker know about fork? Is there any other way to run an external command from a TinyGo-compiled program?

created time in 3 days

pull request commentlaurent22/joplin

Android: adds "recent notes" widget

Picking it up later this this month, likely this week.

fstanis

comment created time in 17 days

Pull request review commentlaurent22/joplin

Android: adds "recent notes" widget

 class AppComponent extends React.Component {  		await setupNotifications(this.props.dispatch); +		await updateRecentsWidget();

Added this in the latest commit.

One bug I noticed: if the user modifies a note and then immediately goes to the home screen, the update won't fire (because the app is no longer in the foreground when the timeout expires), at least not until the app is brought back to the foreground. The only solution that comes to mind is to use something like headless JS, but this honestly sounds like an overkill.

fstanis

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentlaurent22/joplin

Android: adds "recent notes" widget

 class AppComponent extends React.Component { 			</View> 		); 	}++	private async navigate(url: string) {+		if (!url) return;+		let parsedUrl;+		try {+			parsedUrl = new URL(url);+		} catch (_) {+			// invalid URL+			return;+		}+		reg.logger().info(`navigate to ${url}`);++		await this.props.dispatch({ type: 'NAV_BACK' });+		await this.props.dispatch({ type: 'SIDE_MENU_CLOSE' });+		const { pathname } = parsedUrl;+		if (pathname.startsWith('//notes/')) {

Removed this logic all together - link logic is now in #5764.

fstanis

comment created time in 2 months

PullRequestReviewEvent

push eventfstanis/joplin

Laurent Cozic

commit sha 73545484c9bc2b82f4b4b1b56b86b2f947138ba8

Desktop: Allows a shared notebook recipient to leave the notebook

view details

Laurent Cozic

commit sha 9bff2d1ef4474d0dbc944c2dd03cdd82d19e2750

Desktop: Improved share error handling

view details

Laurent Cozic

commit sha 47fc51ea8ae7ecc06d5377182144b34cea307478

Server: Fixed issue when a notebook is shared, then unshared, then shared again

view details

Laurent Cozic

commit sha 0ccd8dee417fefec3b19f10e85d0b8109fb519a0

Tools: Fixed TSC compile error

view details

Laurent Cozic

commit sha fb935dde1836773f9043347152e465cccad6d20c

Tools: Added syncDebugLog to help debugging sync operations

view details

Laurent Cozic

commit sha eba1d6df56c3160844aef451fcc127c42375b2c9

Tools: Added command to rebuild server files

view details

Laurent Cozic

commit sha ccf9882452d4f7e1311cac1601e741247436307c

All: Ensure that shared notebook children are not deleted when shared, unshared and shared again, and a conflict happens

view details

Laurent Cozic

commit sha a5f2fd8982e45f9a127b0e9a826f07d26e3e89cf

Chore: Linter

view details

Laurent Cozic

commit sha 8a7fa78c543022f0bd4c66b2bb8208f3c3e690a0

Chore: Moved share invitation response logic to separate file (Desktop)

view details

Laurent Cozic

commit sha 0bae4690c9a81a07ec30330b4ba0074c9bd3ec51

Removed debug code

view details

Laurent Cozic

commit sha 852c6f2f8d43d37d865c536a578b7be423980c82

Desktop: Mentioned on share dialog that it may take a few minutes for all notes to appear on the recipient device

view details

Laurent Cozic

commit sha 1fee83d408a6c0588059f07cc376587e9c11d9dc

Desktop: Fixed share dialog button sizes

view details

Caleb John

commit sha 2acd55eb810d9d6f6e4b2e1c6adff9ce72dde956

Desktop, Cli: Resolves #5224: Add Markdown + Front Matter exporter/importer (#5465)

view details

Filip Stanis

commit sha 4322acc5b71f8988a634438aa5fbf525c17576cb

Doc: Update link to React Native docs (#5570)

view details

Roman Musin

commit sha 6879481fd58874278018df1eacd04cef27e62119

Desktop: Resolves #5168: Add support for callback URLs (#5416)

view details

Kenichi Kobayashi

commit sha 1d46d9f657a07240e27a3b05053cf9ac12e7d096

Desktop: Resolves #4827: Laggy scrolling in Markdown viewer (#5496)

view details

Kingsley Yung

commit sha 5e6e1bf9133fa3ec142015c902fd59dae1443d4b

Cli: Fixes #5341: Ignore newline between quotes while spliting batch (#5540)

view details

Laurent Cozic

commit sha 6bcd80102817885984b0146284bc46db3b0ae573

Fixed interface

view details

Laurent Cozic

commit sha 176d3286cd61df58196dacab70a0df918ef96a4c

ignore files

view details

Laurent Cozic

commit sha 21a7149493d7891179553cbc2ceb38470ed376dc

Fixed mobile build

view details

push time in 2 months

pull request commentlaurent22/joplin

Android: adds "recent notes" widget

I split the relevant URL handling logic into #5764 - I'll wait until that's merged and then continue this PR (remote that logic from it, then change the URL format as used by the widget).

fstanis

comment created time in 2 months

PR opened laurent22/joplin

Android: Handle URL links

Relevant proposal: #5168

This reuses the parsing logic from #5302 and adds support for Android. The easiest way to test is via adb:

$ adb shell am start -a android.intent.action.VIEW -d 'joplin://x-callback-url/openNote?id=<note id>'
+64 -0

0 comment

2 changed files

pr created time in 2 months

push eventfstanis/joplin

Filip Stanis

commit sha 8b68da404022441fc91c171f622e95d588e40133

Android: Makes it impossible to have multiple instances of the app open (#5587)

view details

Filip Stanis

commit sha 780f03930b21aa32c911c53ce999e9d48586762a

Adds Android support for URL links

view details

push time in 2 months

push eventfstanis/joplin

Filip Stanis

commit sha 6a8f7579feaf04896ca060395259b1af71c5fa81

Adds Android support for URL links

view details

push time in 2 months

create barnchfstanis/joplin

branch : deeplinks

created branch time in 2 months

pull request commentlaurent22/joplin

Mobile (Android): Makes it impossible to have multiple instances of the app open

Makes sense - I added a short explanation and linked to React's docs.

fstanis

comment created time in 2 months

push eventfstanis/joplin

Filip Stanis

commit sha 38a15ed34a4425e4387764333cf49b6bd560af00

Added changelog for the change

view details

push time in 2 months

Pull request review commentlaurent22/joplin

Android: adds "recent notes" widget

 class AppComponent extends React.Component {  		await setupNotifications(this.props.dispatch); +		await updateRecentsWidget();

OK, this sounds like a good approach. I also like the debounce mechanism you mentioned, I'll implement that too.

fstanis

comment created time in 2 months

PullRequestReviewEvent

Pull request review commentlaurent22/joplin

Android: adds "recent notes" widget

 <resources>     <string name="app_name">Joplin</string>     <string name="default_notification_channel_id">net.cozic.joplin.notification</string>+    <string name="no_recent_notes_found">No recent notes found</string>

I looked into this and unfortunately it's incredibly tricky. The widget lives in a service which is (in many ways) a separate entity from the main app. This introduces a lot of corner cases, such as the widget being added before the main is initialized, at which point it needs some fallback here. Another is the user changing the system language while Joplin isn't running, but having the widget added, in which case the widget has no way to "ask" the main app what the new translation should be (Android handles this automatically via its resource mechanism).

That said, I see the issue with having this translatable bit outside the main app logic. I have a few possible ideas here:

  1. Remove the "no recent notes" case all together. The user would see an empty list if there aren't any notes to show.
  2. Use an emoji or image instead of text, to indicate the list is empty (any suggestions for what to use?).
  3. Get it from the main app on a "best effort" basis. This may mean getting an empty string or having it in the wrong language for some periods of time (per the corner cases above). This is also the hardest to implement IMO.
  4. Keep it as-is and translate this string separately using Android's resources (in XML files).
  5. Since translations are static, we can have some kind of script that generates Android XML files on build based on the main app's translations. I'm not sure how to bake this into the build process in a good way though.
fstanis

comment created time in 2 months

PullRequestReviewEvent

issue openedJorenSix/TarsosDSP

bufferOverlap is unused in PercussionOnsetDetector constructor

It seems one of the constructors for PercussionOnsetDetector has a bufferOverlap parameter, but it's not actually used anywhere:

https://github.com/JorenSix/TarsosDSP/blob/d9583528b9573a97c220d19e6d9ab2929e9bd1c5/src/core/be/tarsos/dsp/onsets/PercussionOnsetDetector.java#L123-L127

created time in 3 months

more