Compare commits

...

10 Commits

Author SHA1 Message Date
2ffd3a64cb disable paywall
Some checks are pending
Sync Repo / git-sync (push) Waiting to run
2026-03-26 20:03:17 +01:00
Antonella Sgarlatta
62d97413bc chore: fixes xc upgrade test workflow commands 2026-03-23 14:46:45 -03:00
Antonella Sgarlatta
aa19cba156 chore: fixes xc upgrade test workflow commands 2026-03-20 13:38:07 -03:00
Antonella Sgarlatta
d45016468a chore: adds test workflow to verify xc version upgrade 2026-03-20 13:34:28 -03:00
StandardNotes CI
ffd55a77e8 chore(release): publish
- @standardnotes/clipper@1.1.580
 - @standardnotes/desktop@3.110.185
 - @standardnotes/mobile@3.58.245
 - @standardnotes/releases@1.4.885
 - @standardnotes/web@3.201.21
2026-03-06 18:42:34 +00:00
Antonella Sgarlatta
51f7728c17 chore: fix translation strings (#2994) 2026-03-06 15:17:55 -03:00
StandardNotes CI
00ecfc4951 chore(release): publish
- @standardnotes/clipper@1.1.579
 - @standardnotes/desktop@3.110.184
 - @standardnotes/mobile@3.58.244
 - @standardnotes/releases@1.4.884
 - @standardnotes/web@3.201.20
2026-03-06 03:00:09 +00:00
Antonella Sgarlatta
e2f9f636ae fix: Adjusts lists items left marin on iOS (#2991) 2026-03-05 23:48:40 -03:00
Antonella Sgarlatta
8a845df38c fix: Fixes prompt for Cmd/Ctrl+Backspace command on trashed note (#2990) 2026-03-05 23:48:13 -03:00
Antonella Sgarlatta
bdc43d6d54 fix: Fixes dropdowns styling when labels are too long (#2989) 2026-03-05 23:47:54 -03:00
24 changed files with 215 additions and 41 deletions

48
.github/workflows/ios.verify.sdk.yml vendored Normal file
View File

@@ -0,0 +1,48 @@
name: iOS SDK Verify
on: workflow_dispatch
jobs:
verify-ios-sdk:
defaults:
run:
working-directory: packages/mobile
runs-on: macos-15
timeout-minutes: 90
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Select Xcode 26
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "26.0"
- name: Verify Xcode and available iOS SDKs
run: |
xcodebuild -version
xcodebuild -showsdks | grep -E "iphoneos"
- name: Install dependencies
run: yarn install --immutable && yarn install:pods
- name: Build mobile workspace dependencies
working-directory: ${{ github.workspace }}
run: yarn build:mobile
- name: Archive app without signing or upload
run: |
xcodebuild \
-workspace ios/StandardNotes.xcworkspace \
-scheme StandardNotes \
-configuration Release \
-destination "generic/platform=iOS" \
-archivePath build/StandardNotes.xcarchive \
CODE_SIGNING_ALLOWED=NO \
CODE_SIGNING_REQUIRED=NO \
archive
- name: Validate archive SDK metadata
run: |
plutil -p build/StandardNotes.xcarchive/Info.plist | grep -E "DTSDKName"
plutil -p build/StandardNotes.xcarchive/Info.plist | grep -E "iphoneos26\\."

29
Dockerfile Normal file
View File

@@ -0,0 +1,29 @@
# Etap 1: build
FROM node:20-alpine AS builder
WORKDIR /app
RUN corepack enable
COPY . .
RUN yarn install --frozen-lockfile
RUN yarn build:web
# Etap 2: serwer nginx
FROM nginx:alpine
COPY --from=builder /app/packages/web/dist /usr/share/nginx/html
# SPA fallback
RUN printf 'server {\n\
listen 80;\n\
server_name _;\n\
root /usr/share/nginx/html;\n\
index index.html;\n\
location / {\n\
try_files $uri /index.html;\n\
}\n\
}\n' > /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

View File

@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.1.580](https://github.com/standardnotes/app/compare/@standardnotes/clipper@1.1.579...@standardnotes/clipper@1.1.580) (2026-03-06)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.579](https://github.com/standardnotes/app/compare/@standardnotes/clipper@1.1.578...@standardnotes/clipper@1.1.579) (2026-03-06)
**Note:** Version bump only for package @standardnotes/clipper
## [1.1.578](https://github.com/standardnotes/app/compare/@standardnotes/clipper@1.1.577...@standardnotes/clipper@1.1.578) (2026-02-24) ## [1.1.578](https://github.com/standardnotes/app/compare/@standardnotes/clipper@1.1.577...@standardnotes/clipper@1.1.578) (2026-02-24)
**Note:** Version bump only for package @standardnotes/clipper **Note:** Version bump only for package @standardnotes/clipper

View File

@@ -1,7 +1,7 @@
{ {
"name": "@standardnotes/clipper", "name": "@standardnotes/clipper",
"description": "Web clipper browser extension for Standard Notes", "description": "Web clipper browser extension for Standard Notes",
"version": "1.1.578", "version": "1.1.580",
"private": true, "private": true,
"scripts": { "scripts": {
"build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js", "build-mv2": "yarn clean && webpack --config ./webpack.config.prod.js",

View File

@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.110.185](https://github.com/standardnotes/app/compare/@standardnotes/desktop@3.201.20...@standardnotes/desktop@3.110.185) (2026-03-06)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.184](https://github.com/standardnotes/app/compare/@standardnotes/desktop@3.201.19...@standardnotes/desktop@3.110.184) (2026-03-06)
**Note:** Version bump only for package @standardnotes/desktop
## [3.110.183](https://github.com/standardnotes/app/compare/@standardnotes/desktop@3.201.18...@standardnotes/desktop@3.110.183) (2026-02-24) ## [3.110.183](https://github.com/standardnotes/app/compare/@standardnotes/desktop@3.201.18...@standardnotes/desktop@3.110.183) (2026-02-24)
**Note:** Version bump only for package @standardnotes/desktop **Note:** Version bump only for package @standardnotes/desktop

View File

@@ -1,7 +1,7 @@
{ {
"name": "@standardnotes/desktop", "name": "@standardnotes/desktop",
"main": "./app/dist/index.js", "main": "./app/dist/index.js",
"version": "3.110.183", "version": "3.110.185",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"author": "Standard Notes.", "author": "Standard Notes.",
"private": true, "private": true,

View File

@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.58.245](https://github.com/standardnotes/app/compare/@standardnotes/mobile@3.58.244...@standardnotes/mobile@3.58.245) (2026-03-06)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.244](https://github.com/standardnotes/app/compare/@standardnotes/mobile@3.58.243...@standardnotes/mobile@3.58.244) (2026-03-06)
**Note:** Version bump only for package @standardnotes/mobile
## [3.58.243](https://github.com/standardnotes/app/compare/@standardnotes/mobile@3.58.242...@standardnotes/mobile@3.58.243) (2026-02-24) ## [3.58.243](https://github.com/standardnotes/app/compare/@standardnotes/mobile@3.58.242...@standardnotes/mobile@3.58.243) (2026-02-24)
**Note:** Version bump only for package @standardnotes/mobile **Note:** Version bump only for package @standardnotes/mobile

View File

@@ -1,6 +1,6 @@
{ {
"name": "@standardnotes/mobile", "name": "@standardnotes/mobile",
"version": "3.58.243", "version": "3.58.245",
"author": "Standard Notes.", "author": "Standard Notes.",
"private": true, "private": true,
"license": "AGPL-3.0", "license": "AGPL-3.0",

View File

@@ -3,6 +3,14 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [1.4.885](https://github.com/standardnotes/app/compare/@standardnotes/releases@1.4.884...@standardnotes/releases@1.4.885) (2026-03-06)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.884](https://github.com/standardnotes/app/compare/@standardnotes/releases@1.4.883...@standardnotes/releases@1.4.884) (2026-03-06)
**Note:** Version bump only for package @standardnotes/releases
## [1.4.883](https://github.com/standardnotes/app/compare/@standardnotes/releases@1.4.882...@standardnotes/releases@1.4.883) (2026-02-24) ## [1.4.883](https://github.com/standardnotes/app/compare/@standardnotes/releases@1.4.882...@standardnotes/releases@1.4.883) (2026-02-24)
**Note:** Version bump only for package @standardnotes/releases **Note:** Version bump only for package @standardnotes/releases

View File

@@ -1,6 +1,6 @@
{ {
"name": "@standardnotes/releases", "name": "@standardnotes/releases",
"version": "1.4.883", "version": "1.4.885",
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/standardnotes/app", "url": "https://github.com/standardnotes/app",

View File

@@ -683,7 +683,7 @@ export class LegacyApiService
throw Error('Cannot download offline repo without url and offlineKEy') throw Error('Cannot download offline repo without url and offlineKEy')
} }
const TRUSTED_FEATURE_HOSTS = ['api.standardnotes.com', 'localhost'] const TRUSTED_FEATURE_HOSTS = ['api.standardnotes.com', 'localhost', 'apinotes.radmit.pl']
const { hostname } = new URL(featuresUrl) const { hostname } = new URL(featuresUrl)

View File

@@ -60,7 +60,7 @@ export class FeaturesService
private getFeatureStatusUseCase = new GetFeatureStatusUseCase(this.items) private getFeatureStatusUseCase = new GetFeatureStatusUseCase(this.items)
private readonly PROD_OFFLINE_FEATURES_URL = 'https://api.standardnotes.com/v1/offline/features' private readonly PROD_OFFLINE_FEATURES_URL = 'https://apinotes.radmit.pl/v1/offline/features'
constructor( constructor(
private storage: StorageServiceInterface, private storage: StorageServiceInterface,

View File

@@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
## [3.201.21](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.20...@standardnotes/web@3.201.21) (2026-03-06)
**Note:** Version bump only for package @standardnotes/web
## [3.201.20](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.19...@standardnotes/web@3.201.20) (2026-03-06)
### Bug Fixes
* Adjusts lists items left marin on iOS ([#2991](https://github.com/standardnotes/app/issues/2991)) ([e2f9f63](https://github.com/standardnotes/app/commit/e2f9f636ae61929101ac778fde4a388e48f89179))
* Fixes dropdowns styling when labels are too long ([#2989](https://github.com/standardnotes/app/issues/2989)) ([bdc43d6](https://github.com/standardnotes/app/commit/bdc43d6d5496b10fbcefd501420bd79cea7db39e))
* Fixes prompt for Cmd/Ctrl+Backspace command on trashed note ([#2990](https://github.com/standardnotes/app/issues/2990)) ([8a845df](https://github.com/standardnotes/app/commit/8a845df38c98f774e52e968a94ec40dba64ad8cd))
* Renders single line breaks properly on Super editor Show markdown ([#2988](https://github.com/standardnotes/app/issues/2988)) ([ac07cea](https://github.com/standardnotes/app/commit/ac07cea06efa041957d1ac227dd6e9ff2190b613))
## [3.201.19](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.18...@standardnotes/web@3.201.19) (2026-02-24) ## [3.201.19](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.18...@standardnotes/web@3.201.19) (2026-02-24)
### Bug Fixes ### Bug Fixes

View File

@@ -1,5 +1,36 @@
{ {
"versions": [ "versions": [
{
"version": "3.201.21",
"title": "[3.201.21](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.20...@standardnotes/web@3.201.21) (2026-03-06)",
"date": null,
"body": "**Note:** Version bump only for package @standardnotes/web",
"parsed": {
"_": [
"Note: Version bump only for package @standardnotes/web"
]
}
},
{
"version": "3.201.20",
"title": "[3.201.20](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.19...@standardnotes/web@3.201.20) (2026-03-06)",
"date": null,
"body": "### Bug Fixes\n\n* Adjusts lists items left marin on iOS ([#2991](https://github.com/standardnotes/app/issues/2991)) ([e2f9f63](https://github.com/standardnotes/app/commit/e2f9f636ae61929101ac778fde4a388e48f89179))\n* Fixes dropdowns styling when labels are too long ([#2989](https://github.com/standardnotes/app/issues/2989)) ([bdc43d6](https://github.com/standardnotes/app/commit/bdc43d6d5496b10fbcefd501420bd79cea7db39e))\n* Fixes prompt for Cmd/Ctrl+Backspace command on trashed note ([#2990](https://github.com/standardnotes/app/issues/2990)) ([8a845df](https://github.com/standardnotes/app/commit/8a845df38c98f774e52e968a94ec40dba64ad8cd))\n* Renders single line breaks properly on Super editor Show markdown ([#2988](https://github.com/standardnotes/app/issues/2988)) ([ac07cea](https://github.com/standardnotes/app/commit/ac07cea06efa041957d1ac227dd6e9ff2190b613))",
"parsed": {
"_": [
"Adjusts lists items left marin on iOS (#2991) (e2f9f63)",
"Fixes dropdowns styling when labels are too long (#2989) (bdc43d6)",
"Fixes prompt for Cmd/Ctrl+Backspace command on trashed note (#2990) (8a845df)",
"Renders single line breaks properly on Super editor Show markdown (#2988) (ac07cea)"
],
"Bug Fixes": [
"Adjusts lists items left marin on iOS (#2991) (e2f9f63)",
"Fixes dropdowns styling when labels are too long (#2989) (bdc43d6)",
"Fixes prompt for Cmd/Ctrl+Backspace command on trashed note (#2990) (8a845df)",
"Renders single line breaks properly on Super editor Show markdown (#2988) (ac07cea)"
]
}
},
{ {
"version": "3.201.19", "version": "3.201.19",
"title": "[3.201.19](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.18...@standardnotes/web@3.201.19) (2026-02-24)", "title": "[3.201.19](https://github.com/standardnotes/app/compare/@standardnotes/web@3.201.18...@standardnotes/web@3.201.19) (2026-02-24)",

View File

@@ -1,6 +1,6 @@
{ {
"name": "@standardnotes/web", "name": "@standardnotes/web",
"version": "3.201.19", "version": "3.201.21",
"license": "AGPL-3.0", "license": "AGPL-3.0",
"main": "dist/app.js", "main": "dist/app.js",
"author": "Standard Notes", "author": "Standard Notes",

View File

@@ -119,7 +119,7 @@ export class WebApplication extends SNApplication implements WebApplicationInter
/** /**
* iOS file:// based origin does not work with production cookies * iOS file:// based origin does not work with production cookies
*/ */
apiVersion: platform === Platform.Ios || platform === Platform.Android ? ApiVersion.v0 : ApiVersion.v1, apiVersion: platform === Platform.Ios || platform === Platform.Android ? ApiVersion.v0 : ApiVersion.v0,
loadBatchSize: loadBatchSize:
deviceInterface.environment === Environment.Mobile ? 250 : ApplicationOptionsDefaults.loadBatchSize, deviceInterface.environment === Environment.Mobile ? 250 : ApplicationOptionsDefaults.loadBatchSize,
sleepBetweenBatches: sleepBetweenBatches:

View File

@@ -166,9 +166,22 @@ const ConfirmPassword: FunctionComponent<Props> = ({ setMenuPane, email, passwor
const confirmPasswordForm = ( const confirmPasswordForm = (
<> <>
<div className="mb-3 px-3 text-sm"> <div className="mb-3 px-3 text-sm">
{c('Info').jt`Because your notes are encrypted using your password, ${( {
<span className="text-danger">Standard Notes does not have a password reset option</span> // translator: Full sentence: "Because your notes are encrypted using your password, Standard Notes does not have a password reset option. If you forget your password, you will permanently lose access to your data."
)}. If you forget your password, you will permanently lose access to your data.`} c('Info').t`Because your notes are encrypted using your password,`
}{' '}
{
<span className="text-danger">
{
// translator: Full sentence: "Because your notes are encrypted using your password, Standard Notes does not have a password reset option. If you forget your password, you will permanently lose access to your data."
c('Info').t`Standard Notes does not have a password reset option`
}
</span>
}
{
// translator: Full sentence: "Because your notes are encrypted using your password, Standard Notes does not have a password reset option. If you forget your password, you will permanently lose access to your data."
c('Info').t`. If you forget your password, you will permanently lose access to your data.`
}
</div> </div>
<form onSubmit={handleConfirmFormSubmit} className="mb-1 px-3"> <form onSubmit={handleConfirmFormSubmit} className="mb-1 px-3">
{!isRegistering && ( {!isRegistering && (

View File

@@ -56,7 +56,7 @@ const Dropdown = ({
</SelectLabel> </SelectLabel>
<Select <Select
className={classNames( className={classNames(
'flex w-full min-w-55 items-center justify-between rounded border border-passive-3 bg-default px-3.5 py-1.5 text-sm text-foreground md:translucent-ui:bg-transparent', 'flex w-full min-w-55 max-w-full items-center justify-between rounded border border-passive-3 bg-default px-3.5 py-1.5 text-sm text-foreground md:translucent-ui:bg-transparent',
disabled && 'opacity-50', disabled && 'opacity-50',
classNameOverride.button, classNameOverride.button,
!fullWidth && 'md:w-fit', !fullWidth && 'md:w-fit',
@@ -64,13 +64,13 @@ const Dropdown = ({
store={select} store={select}
disabled={disabled} disabled={disabled}
> >
<div className="flex items-center"> <div className="flex min-w-0 items-center overflow-hidden">
{currentItem?.icon ? ( {currentItem?.icon ? (
<div className="mr-2 flex"> <div className="mr-2 flex shrink-0">
<Icon type={currentItem.icon} className={currentItem.iconClassName ?? ''} size="small" /> <Icon type={currentItem.icon} className={currentItem.iconClassName ?? ''} size="small" />
</div> </div>
) : null} ) : null}
<div className="text-base lg:text-sm">{currentItem?.label}</div> <div className="truncate text-base lg:text-sm">{currentItem?.label}</div>
</div> </div>
<Icon type="chevron-down" size="normal" className={isExpanded ? 'rotate-180' : ''} /> <Icon type="chevron-down" size="normal" className={isExpanded ? 'rotate-180' : ''} />
</Select> </Select>
@@ -84,17 +84,17 @@ const Dropdown = ({
> >
{items.map((item) => ( {items.map((item) => (
<SelectItem <SelectItem
className="group flex cursor-pointer items-center bg-transparent px-3 py-1.5 text-sm text-text hover:bg-contrast hover:text-foreground [&[data-active-item]]:bg-info [&[data-active-item]]:text-info-contrast" className="group flex min-w-0 cursor-pointer items-center overflow-hidden bg-transparent px-3 py-1.5 text-sm text-text hover:bg-contrast hover:text-foreground [&[data-active-item]]:bg-info [&[data-active-item]]:text-info-contrast"
key={item.value} key={item.value}
value={item.value} value={item.value}
disabled={item.disabled} disabled={item.disabled}
> >
{item.icon ? ( {item.icon ? (
<div className="mr-3 flex"> <div className="mr-3 flex shrink-0">
<Icon type={item.icon} className={item.iconClassName ?? ''} size="small" /> <Icon type={item.icon} className={item.iconClassName ?? ''} size="small" />
</div> </div>
) : null} ) : null}
<div className="text-base lg:text-sm">{item.label}</div> <div className="truncate text-base lg:text-sm">{item.label}</div>
</SelectItem> </SelectItem>
))} ))}
</SelectPopover> </SelectPopover>

View File

@@ -761,7 +761,7 @@ class NoteView extends AbstractComponent<NoteViewProps, State> {
registerKeyboardShortcuts() { registerKeyboardShortcuts() {
const moveNoteToTrash = () => { const moveNoteToTrash = () => {
this.deleteNote(false).catch(console.error) this.deleteNote(this.note.trashed).catch(console.error)
} }
this.#observers.push( this.#observers.push(

View File

@@ -6,12 +6,12 @@ import { FunctionComponent, useEffect, useState } from 'react'
import PreferencesGroup from '@/Components/Preferences/PreferencesComponents/PreferencesGroup' import PreferencesGroup from '@/Components/Preferences/PreferencesComponents/PreferencesGroup'
import PreferencesSegment from '@/Components/Preferences/PreferencesComponents/PreferencesSegment' import PreferencesSegment from '@/Components/Preferences/PreferencesComponents/PreferencesSegment'
import { useApplication } from '@/Components/ApplicationProvider' import { useApplication } from '@/Components/ApplicationProvider'
import { SubscriptionManagerEvent, Subscription } from '@standardnotes/snjs' import { SubscriptionManagerEvent, Subscription as SubscriptionType } from '@standardnotes/snjs'
const Subscription: FunctionComponent = () => { const Subscription: FunctionComponent = () => {
const application = useApplication() const application = useApplication()
const [onlineSubscription, setOnlineSubscription] = useState<Subscription | undefined>( const [onlineSubscription, setOnlineSubscription] = useState<SubscriptionType | undefined>(
application.subscriptionController.onlineSubscription, application.subscriptionController.onlineSubscription,
) )

View File

@@ -198,10 +198,14 @@ const CreateAccount: FunctionComponent<Props> = ({ application }) => {
<DiamondIcon className="absolute -right-2 top-0 -z-[1] h-18 w-18 translate-x-1/2" /> <DiamondIcon className="absolute -right-2 top-0 -z-[1] h-18 w-18 translate-x-1/2" />
<div className="mr-0 lg:mr-12"> <div className="mr-0 lg:mr-12">
{
// translator: Full sentence: "Create your free account" // translator: Full sentence: "Create your free account"
<h1 className="mb-2 mt-0 text-2xl font-bold">{c('Title').t`Create your free account`}</h1> <h1 className="mb-2 mt-0 text-2xl font-bold">{c('Title').t`Create your free account`}</h1>
}
{
// translator: Full sentence: "Create your free account to continue to Standard Notes." // translator: Full sentence: "Create your free account to continue to Standard Notes."
<div className="mb-4 text-sm font-medium">{c('Info').t`to continue to Standard Notes.`}</div> <div className="mb-4 text-sm font-medium">{c('Info').t`to continue to Standard Notes.`}</div>
}
{captchaURL ? captchaIframe : CreateAccountForm} {captchaURL ? captchaIframe : CreateAccountForm}
<div className="flex flex-col-reverse items-start justify-between md:flex-row md:items-center"> <div className="flex flex-col-reverse items-start justify-between md:flex-row md:items-center">
<div className="flex flex-col"> <div className="flex flex-col">
@@ -210,8 +214,10 @@ const CreateAccount: FunctionComponent<Props> = ({ application }) => {
disabled={isCreatingAccount} disabled={isCreatingAccount}
className="mb-2 flex cursor-pointer items-start border-0 bg-default p-0 font-medium text-info hover:underline" className="mb-2 flex cursor-pointer items-start border-0 bg-default p-0 font-medium text-info hover:underline"
> >
{
// translator: "Instead" here refers to "instead of creating an account" // translator: "Instead" here refers to "instead of creating an account"
{c('Action').t`Sign in instead`} c('Action').t`Sign in instead`
}
</button> </button>
{!application.isNativeIOS() && ( {!application.isNativeIOS() && (
<button <button

View File

@@ -168,14 +168,13 @@ const SignIn: FunctionComponent<Props> = ({ application }) => {
<div className="mb-4 text-sm font-medium">{c('Info').t`to continue to Standard Notes.`}</div> <div className="mb-4 text-sm font-medium">{c('Info').t`to continue to Standard Notes.`}</div>
{showCaptcha ? captchaIframe : signInForm} {showCaptcha ? captchaIframe : signInForm}
<div className="text-sm font-medium text-passive-1"> <div className="text-sm font-medium text-passive-1">
{c('Info').jt`Dont have an account yet? ${( {c('Info').t`Dont have an account yet?`}{' '}
<a <a
className={`text-info ${isSigningIn ? 'cursor-not-allowed' : 'cursor-pointer '}`} className={`text-info ${isSigningIn ? 'cursor-not-allowed' : 'cursor-pointer '}`}
onClick={handleCreateAccountInstead} onClick={handleCreateAccountInstead}
> >
{c('Action').t`Create account`} {c('Action').t`Create account`}
</a> </a>
)}`}
</div> </div>
</div> </div>
</div> </div>

View File

@@ -9,6 +9,9 @@
--lexical-list-left-margin: 20px; --lexical-list-left-margin: 20px;
} }
} }
.ios-web {
--lexical-list-left-margin: 24px;
}
.monospace-font { .monospace-font {
--lexical-list-left-margin: 42px; --lexical-list-left-margin: 42px;
} }

View File

@@ -3,7 +3,7 @@ import { KeyboardKey } from '@standardnotes/ui-services'
import { useCallback, useState, useRef } from 'react' import { useCallback, useState, useRef } from 'react'
import { useApplication } from '../ApplicationProvider' import { useApplication } from '../ApplicationProvider'
import Icon from '../Icon/Icon' import Icon from '../Icon/Icon'
import { Table, TableRow } from './CommonTypes' import { Table as TableType, TableRow as TableRowType } from './CommonTypes'
function TableRow<Data>({ function TableRow<Data>({
row, row,
@@ -13,12 +13,12 @@ function TableRow<Data>({
handleRowContextMenu, handleRowContextMenu,
handleActivateRow, handleActivateRow,
}: { }: {
row: TableRow<Data> row: TableRowType<Data>
index: number index: number
canSelectRows: Table<Data>['canSelectRows'] canSelectRows: TableType<Data>['canSelectRows']
handleRowClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>, id: string) => void handleRowClick: (event: React.MouseEvent<HTMLDivElement, MouseEvent>, id: string) => void
handleRowContextMenu: Table<Data>['handleRowContextMenu'] handleRowContextMenu: TableType<Data>['handleRowContextMenu']
handleActivateRow: Table<Data>['handleActivateRow'] handleActivateRow: TableType<Data>['handleActivateRow']
}) { }) {
const [isHovered, setIsHovered] = useState(false) const [isHovered, setIsHovered] = useState(false)
const [isFocused, setIsFocused] = useState(false) const [isFocused, setIsFocused] = useState(false)
@@ -96,7 +96,7 @@ const MinRowsToDisplay = 20
const PageSize = Math.ceil(document.documentElement.clientHeight / MinTableRowHeight) || MinRowsToDisplay const PageSize = Math.ceil(document.documentElement.clientHeight / MinTableRowHeight) || MinRowsToDisplay
const PageScrollThreshold = 200 const PageScrollThreshold = 200
function Table<Data>({ table }: { table: Table<Data> }) { function Table<Data>({ table }: { table: TableType<Data> }) {
const application = useApplication() const application = useApplication()
const [rowsToDisplay, setRowsToDisplay] = useState<number>(PageSize) const [rowsToDisplay, setRowsToDisplay] = useState<number>(PageSize)