switch to egirlskey branding

This commit is contained in:
jaina heartles 2024-09-22 18:51:30 -04:00
parent 91ec6c3a14
commit eb05c2e619
53 changed files with 300 additions and 968 deletions

View file

@ -1,29 +0,0 @@
<!-- 💖 Thanks for taking the time to fill out this bug report!
💁 Having trouble with deployment? [Ask the support chat.](https://discord.gg/4qUhaeeHmm)
🔒 Found a security vulnerability? [Please disclose it responsibly.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/SECURITY.md)
🤝 By submitting this feature request, you agree to follow our [Contribution Guidelines.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md) -->
**What happened?** _(Please give us a brief description of what happened.)_
**What did you expect to happen?** _(Please give us a brief description of what you expected to happen.)_
**Version** _(What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information.)_
**Instance** _(What instance of Sharkey are you using?)_
**What type of issue is this?** _(If this happens on your device and has to do with the user interface, it's client-side. If this happens on either with the API or the backend, or you got a server-side error in the client, it's server-side.)_
**What browser are you using? (Client-side issues only)**
**What operating system are you using? (Client-side issues only)**
**How do you deploy Sharkey on your server? (Server-side issues only)**
**What operating system are you using? (Server-side issues only)**
**Relevant log output** _(Please copy and paste any relevant log output. You can find your log by inspecting the page, and going to the "console" tab. This will be automatically formatted into code, so no need for backticks.)_
**Contribution Guidelines**
By submitting this issue, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have searched the issue tracker for similar issues, and this is not a duplicate.

View file

@ -1,17 +0,0 @@
<!-- 💖 Thanks for taking the time to fill out this bug report!
💁 Having trouble with deployment? [Ask the support chat.](https://discord.gg/4qUhaeeHmm)
🔒 Found a security vulnerability? [Please disclose it responsibly.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/SECURITY.md)
🤝 By submitting this feature request, you agree to follow our [Contribution Guidelines.](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md) -->
**What feature would you like implemented?** _(Please give us a brief description of what you'd like.)_
**Why should we add this feature?** _(Please give us a brief description of why your feature is important.)_
**Version** _(What version of Sharkey is your instance running? You can find this by clicking your instance's logo at the top left and then clicking instance information.)_
**Instance** _(What instance of Sharkey are you using?)_
**Contribution Guidelines**
By submitting this issue, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have searched the issue tracker for similar requests, and this is not a duplicate.

View file

@ -1,11 +0,0 @@
<!-- Thanks for taking the time to make Sharkey better! -->
**What does this PR do?** _(Please give us a brief description of what this PR does.)_
**Contribution Guidelines**
By submitting this merge request, you agree to follow our [Contribution Guidelines](https://activitypub.software/TransFem-org/Sharkey/-/blob/develop/CONTRIBUTING.md)
- [ ] I agree to follow this project's Contribution Guidelines
- [ ] I have made sure to test this pull request
<!-- Uncomment if your merge request has multiple authors -->
<!-- Co-authored-by: Name <email@email.com> -->

View file

@ -1,3 +1,7 @@
## 2024.9.0
- First official eGirlskey release not a part of Sharkey
- Based on Sharkey 2024.8.1, which is based on Misskey 2024.8.0.
## 2024.8.0
### General

View file

@ -1,639 +1,4 @@
# Contribution guide
We're glad you're interested in contributing to Sharkey! In this document you will find the information you need to contribute to the project.
i haven't set this up yet.
## Roadmap
See [ROADMAP.md](./ROADMAP.md) for the upstream Misskey roadmap.
## Issues
Before creating an issue, please check the following:
- To avoid duplication, please search for similar issues before creating a new issue.
- Do not use Issues to ask questions or troubleshooting.
- Issues should only be used to feature requests, suggestions, and bug tracking.
- Please ask questions or troubleshooting in [Discord](https://discord.gg/6VgKmEqHNk).
> [!WARNING]
> Do not close issues that are about to be resolved. It should remain open until a commit that actually resolves it is merged.
### Recommended discussing before implementation
We welcome your proposal.
When you want to add a feature or fix a bug, *please open an issue*,
don't just start writing code. We may suggest different approaches, or
show that the "bug" is actually intended behaviour (and offer
work-arounds), or maybe we won't be able to merge your new feature
because it would make it too hard to incorporate future changes from
Misskey. Each of these examples have actually happened!
On the other hand, it's very likely that we'll tell you "go
ahead!". We try our best to incorporate improvements from our users!
Also, when you start implementation, assign yourself to the Issue (if you cannot do it yourself, ask Committer to assign you).
By expressing your intention to work on the Issue, you can prevent conflicts in the work.
To the Committers: you should not assign someone on it before the Final Decision.
### How issues are triaged
The Committers may:
* close an issue that is not reproducible on latest stable release,
* merge an issue into another issue,
* split an issue into multiple issues,
* or re-open that has been closed for some reason which is not applicable anymore.
@syuilo reserves the Final Decision rights including whether the project will implement feature and how to implement, these rights are not always exercised.
## Well-known branches
- **`stable`** branch is tracking the latest release and used for production purposes.
- **`develop`** branch is where we work for the next release.
- When you create a PR, basically target it to this branch.
## Creating a PR
Thank you for your PR! Before creating a PR, please check the following:
- If possible, prefix the title with a keyword that identifies the type of this PR, as shown below.
- `fix` / `refactor` / `feat` / `enhance` / `perf` / `chore` etc
- Also, make sure that the granularity of this PR is appropriate. Please do not include more than one type of change or interest in a single PR.
- If there is an Issue which will be resolved by this PR, please include a reference to the Issue in the text.
- Please add the summary of the changes to [`CHANGELOG.md`](CHANGELOG.md). However, this is not necessary for changes that do not affect the users, such as refactoring.
- Check if there are any documents that need to be created or updated due to this change.
- If you have added a feature or fixed a bug, please add a test case if possible.
- Please make sure that tests and Lint are passed in advance.
- You can run it with `pnpm test` and `pnpm lint`. [See more info](#testing)
- If this PR includes UI changes, please attach a screenshot in the text.
Thanks for your cooperation 🤗
## Reviewers guide
Be willing to comment on the good points and not just the things you want fixed 💯
### Review perspective
- Scope
- Are the goals of the PR clear?
- Is the granularity of the PR appropriate?
- Security
- Does merging this PR create a vulnerability?
- Performance
- Will merging this PR cause unexpected performance degradation?
- Is there a more efficient way?
- Testing
- Does the test ensure the expected behavior?
- Are there any omissions or gaps?
- Does it check for anomalies?
## Merge
## Release
### Release Instructions
1. Commit version changes in the `develop` branch ([package.json](package.json))
2. Create a release PR.
- Into `stable` from `develop` branch.
- The title must be in the format `Release: x.y.z`.
- `x.y.z` is the new version you are trying to release.
3. Deploy and perform a simple QA check. Also verify that the tests passed.
4. Merge it. (Do not squash commit)
5. Create a [release](https://activitypub.software/TransFem-org/Sharkey/-/releases)
- The target branch must be `stable`
- The tag name must be the version
> [!NOTE]
> Why this instruction is necessary:
> - To perform final QA checks
> - To distribute responsibility
> - To check direct commits to develop
> - To celebrate the release together 🎉
## Localization (l10n)
Misskey uses [Crowdin](https://crowdin.com/project/misskey) for localization management.
You can improve our translations with your Crowdin account.
Your changes in Crowdin are automatically submitted as a PR (with the title "New Crowdin translations") to the repository.
The owner [@syuilo](https://github.com/syuilo) merges the PR into the develop branch before the next release.
If your language is not listed in Crowdin, please open an issue.
![Crowdin](https://d322cqt584bo4o.cloudfront.net/misskey/localized.svg)
## Icon Font (Shark Font)
Sharkey has its own Icon Font called Shark Font which can be found at https://activitypub.software/TransFem-org/shark-font
Build Instructions can all be found over there in the `README`.
If you have an Icon Suggestion or want to add an Icon please open an issue/merge request over at that repo.
When Updating the Font make sure to copy **all generated files** from the `dest` folder into `packages/backend/assets/fonts/sharkey-icons`
For the CSS simply copy the file content and replace the old content in `style.css` and for the WOFF, TTF and SVG simply replace them.
## Development
### Setup
Before developing, you have to set up environment. Misskey requires Redis, PostgreSQL, and FFmpeg.
You would want to install Meilisearch to experiment related features. Technically, meilisearch is not strict requirement, but some features and tests require it.
There are a few ways to proceed.
#### Use system-wide software
You could install them in system-wide (such as from package manager).
#### Use `docker compose`
You could obtain middleware container by typing `docker compose -f $PROJECT_ROOT/compose.local-db.yml up -d`.
#### Use Devcontainer
Devcontainer also has necessary setting. This method can be done by connecting from VSCode.
Instead of running `pnpm` locally, you can use Dev Container to set up your development environment.
To use Dev Container, open the project directory on VSCode with Dev Containers installed.
**Note:** If you are using Windows, please clone the repository with WSL. Using Git for Windows will result in broken files due to the difference in how newlines are handled.
It will run the following command automatically inside the container.
``` bash
git submodule update --init
pnpm install --frozen-lockfile
cp .devcontainer/devcontainer.yml .config/default.yml
pnpm build
pnpm migrate
```
After finishing the migration, you can proceed.
### Start developing
During development, it is useful to use the
```
pnpm dev
```
command.
- Server-side source files and automatically builds them if they are modified. Automatically start the server process(es).
- Vite HMR (just the `vite` command) is available. The behavior may be different from production.
- Service Worker is watched by esbuild.
- The front end can be viewed by accessing `http://localhost:5173`.
- The backend listens on the port configured with `port` in .config/default.yml.
If you have not changed it from the default, it will be "http://localhost:3000".
If "port" in .config/default.yml is set to something other than 3000, you need to change the proxy settings in packages/frontend/vite.config.local-dev.ts.
### `MK_DEV_PREFER=backend pnpm dev`
pnpm dev has another mode with `MK_DEV_PREFER=backend`.
```
MK_DEV_PREFER=backend pnpm dev
```
- This mode is closer to the production environment than the default mode.
- Vite runs behind the backend (the backend will proxy Vite at /vite).
- You can see Misskey by accessing `http://localhost:3000` (Replace `3000` with the port configured with `port` in .config/default.yml).
- To change the port of Vite, specify with `VITE_PORT` environment variable.
- HMR may not work in some environments such as Windows.
## Testing
- Test codes are located in [`/packages/backend/test`](packages/backend/test).
### Run test
Create a config file.
```
cp .github/misskey/test.yml .config/
```
Prepare DB/Redis for testing.
```
docker compose -f packages/backend/test/compose.yml up
```
Alternatively, prepare an empty (data can be erased) DB and edit `.config/test.yml`.
Run all test.
```
pnpm test
```
#### Run specify test
```
pnpm jest -- foo.ts
```
### e2e tests
TODO
## Environment Variable
- `MISSKEY_CONFIG_YML`: Specify the file path of config.yml instead of default.yml (e.g. `2nd.yml`).
- `MISSKEY_WEBFINGER_USE_HTTP`: If it's set true, WebFinger requests will be http instead of https, useful for testing federation between servers in localhost. NEVER USE IN PRODUCTION.
## Continuous integration
Sharkey uses GitLab CI for executing automated tests.
Configuration files are located in [`/.gitlab-ci.yml`](.gitlab-ci.yml).
## Vue
Misskey uses Vue(v3) as its front-end framework.
- Use TypeScript.
- **When creating a new component, please use the Composition API (with [setup sugar](https://v3.vuejs.org/api/sfc-script-setup.html) and [ref sugar](https://github.com/vuejs/rfcs/discussions/369)) instead of the Options API.**
- Some of the existing components are implemented in the Options API, but it is an old implementation. Refactors that migrate those components to the Composition API are also welcome.
## nirax
niraxは、Misskeyで使用しているオリジナルのフロントエンドルーティングシステムです。
**vue-routerから影響を多大に受けているので、まずはvue-routerについて学ぶことをお勧めします。**
### ルート定義
ルート定義は、以下の形式のオブジェクトの配列です。
```ts
{
name?: string;
path: string;
component: Component;
query?: Record<string, string>;
loginRequired?: boolean;
hash?: string;
globalCacheKey?: string;
children?: RouteDef[];
}
```
> [!WARNING]
> 現状、ルートは定義された順に評価されます。
> たとえば、`/foo/:id`ルート定義の次に`/foo/bar`ルート定義がされていた場合、後者がマッチすることはありません。
### 複数のルーター
vue-routerとの最大の違いは、niraxは複数のルーターが存在することを許可している点です。
これにより、アプリ内ウィンドウでブラウザとは個別にルーティングすることなどが可能になります。
## Storybook
Misskey uses [Storybook](https://storybook.js.org/) for UI development.
### Setup & Run
#### Setup
```bash
pnpm --filter misskey-js build
```
#### Run
```bash
pnpm --filter frontend storybook-dev
```
### Usage
When you create a new component (in this example, `MyComponent.vue`), the story file (`MyComponent.stories.ts`) will be automatically generated by the `.storybook/generate.js` script.
You can override the default story by creating a impl story file (`MyComponent.stories.impl.ts`).
```ts
/* eslint-disable @typescript-eslint/explicit-function-return-type */
import { StoryObj } from '@storybook/vue3';
import MyComponent from './MyComponent.vue';
export const Default = {
render(args) {
return {
components: {
MyComponent,
},
setup() {
return {
args,
};
},
computed: {
props() {
return {
...this.args,
};
},
},
template: '<MyComponent v-bind="props" />',
};
},
args: {
foo: 'bar',
},
parameters: {
layout: 'centered',
},
} satisfies StoryObj<typeof MyComponent>;
```
If you want to opt-out from the automatic generation, create a `MyComponent.stories.impl.ts` file and add the following line to the file.
```ts
import MyComponent from './MyComponent.vue';
void MyComponent;
```
You can override the component meta by creating a meta story file (`MyComponent.stories.meta.ts`).
```ts
export const argTypes = {
scale: {
control: {
type: 'range',
min: 1,
max: 4,
},
},
};
```
Also, you can use msw to mock API requests in the storybook. Creating a `MyComponent.stories.msw.ts` file to define the mock handlers.
```ts
import { HttpResponse, http } from 'msw';
export const handlers = [
http.post('/api/notes/timeline', ({ request }) => {
return HttpResponse.json([]);
}),
];
```
Don't forget to re-run the `.storybook/generate.js` script after adding, editing, or removing the above files.
## Nest
### Nest Service Circular dependency / Nestでサービスの循環参照でエラーが起きた場合
#### forwardRef
まずは簡単に`forwardRef`を試してみる
```typescript
export class FooService {
constructor(
@Inject(forwardRef(() => BarService))
private barService: BarService
) {
}
}
```
#### OnModuleInit
できなければ`OnModuleInit`を使う
```typescript
import { Injectable, OnModuleInit } from '@nestjs/common';
import { ModuleRef } from '@nestjs/core';
import { BarService } from '@/core/BarService';
@Injectable()
export class FooService implements OnModuleInit {
private barService: BarService // constructorから移動してくる
constructor(
private moduleRef: ModuleRef,
) {
}
async onModuleInit() {
this.barService = this.moduleRef.get(BarService.name);
}
public async niceMethod() {
return await this.barService.incredibleMethod({ hoge: 'fuga' });
}
}
```
##### Service Unit Test
テストで`onModuleInit`を呼び出す必要がある
```typescript
// import ...
describe('test', () => {
let app: TestingModule;
let fooService: FooService; // for test case
let barService: BarService; // for test case
beforeEach(async () => {
app = await Test.createTestingModule({
imports: ...,
providers: [
FooService,
{ // mockする (mockは必須ではないかもしれない)
provide: BarService,
useFactory: () => ({
incredibleMethod: jest.fn(),
}),
},
{ // Provideにする
provide: BarService.name,
useExisting: BarService,
},
],
})
.useMocker(...
.compile();
fooService = app.get<FooService>(FooService);
barService = app.get<BarService>(BarService) as jest.Mocked<BarService>;
// onModuleInitを実行する
await fooService.onModuleInit();
});
test('nice', () => {
await fooService.niceMethod();
expect(barService.incredibleMethod).toHaveBeenCalled();
expect(barService.incredibleMethod.mock.lastCall![0])
.toEqual({ hoge: 'fuga' });
});
})
```
## Notes
### Misskeyのドメイン固有の概念は`Mi`をprefixする
例えばGoogleが自社サービスをMap、Earth、DriveではなくGoogle Map、Google Earth、Google Driveのように命名するのと同じ
コード上でMisskeyのドメイン固有の概念には`Mi`をprefixすることで、他のドメインの同様の概念と区別できるほか、名前の衝突を防ぐ。
ただし、文脈上Misskeyのものを指すことが明らかであり、名前の衝突の恐れがない場合は、一時的なローカル変数に限って`Mi`を省略してもよい。
### How to resolve conflictions occurred at pnpm-lock.yaml?
Just execute `pnpm` to fix it.
### INSERTするときにはsaveではなくinsertを使用する
#6441
### placeholder
SQLをクエリビルダで組み立てる際、使用するプレースホルダは重複してはならない
例えば
``` ts
query.andWhere(new Brackets(qb => {
for (const type of ps.fileType) {
qb.orWhere(`:type = ANY(note.attachedFileTypes)`, { type: type });
}
}));
```
と書くと、ループ中で`type`というプレースホルダが複数回使われてしまいおかしくなる
だから次のようにする必要がある
```ts
query.andWhere(new Brackets(qb => {
for (const type of ps.fileType) {
const i = ps.fileType.indexOf(type);
qb.orWhere(`:type${i} = ANY(note.attachedFileTypes)`, { [`type${i}`]: type });
}
}));
```
### Not `null` in TypeORM
```ts
const foo = await Foos.findOne({
bar: Not(null)
});
```
のようなクエリ(`bar`が`null`ではない)は期待通りに動作しない。
次のようにします:
```ts
const foo = await Foos.findOne({
bar: Not(IsNull())
});
```
### `null` in SQL
SQLを発行する際、パラメータが`null`になる可能性のある場合はSQL文を出し分けなければならない
例えば
``` ts
query.where('file.folderId = :folderId', { folderId: ps.folderId });
```
という処理で、`ps.folderId`が`null`だと結果的に`file.folderId = null`のようなクエリが発行されてしまい、これは正しいSQLではないので期待した結果が得られない
だから次のようにする必要がある
``` ts
if (ps.folderId) {
query.where('file.folderId = :folderId', { folderId: ps.folderId });
} else {
query.where('file.folderId IS NULL');
}
```
### `[]` in SQL
SQLを発行する際、`IN`のパラメータが`[]`(空の配列)になる可能性のある場合はSQL文を出し分けなければならない
例えば
``` ts
const users = await Users.find({
id: In(userIds)
});
```
という処理で、`userIds`が`[]`だと結果的に`user.id IN ()`のようなクエリが発行されてしまい、これは正しいSQLではないので期待した結果が得られない
だから次のようにする必要がある
``` ts
const users = userIds.length > 0 ? await Users.find({
id: In(userIds)
}) : [];
```
### 配列のインデックス in SQL
SQLでは配列のインデックスは**1始まり**。
`[a, b, c]``a`にアクセスしたいなら`[0]`ではなく`[1]`と書く
### null IN
nullが含まれる可能性のあるカラムにINするときは、そのままだとおかしくなるのでORなどでnullのハンドリングをしよう。
### enumの削除は気をつける
enumの列挙の内容の削除は、その値をもつレコードを全て削除しないといけない
削除が重たかったり不可能だったりする場合は、削除しないでおく
### Migration作成方法
packages/backendで:
```sh
pnpm dlx typeorm migration:generate -d ormconfig.js -o <migration name>
```
- 生成後、ファイルをmigration下に移してください
- 作成されたスクリプトは不必要な変更を含むため除去してください
### JSON SchemaのobjectでanyOfを使うとき
JSON Schemaで、objectに対してanyOfを使う場合、anyOfの中でpropertiesを定義しないこと。
バリデーションが効かないため。SchemaTypeもそのように作られており、objectのanyOf内のpropertiesは捨てられます
https://github.com/misskey-dev/misskey/pull/10082
テキストhogeおよびfugaについて、片方を必須としつつ両方の指定もありうる場合:
```ts
export const paramDef = {
type: 'object',
properties: {
hoge: { type: 'string', minLength: 1 },
fuga: { type: 'string', minLength: 1 },
},
anyOf: [
{ required: ['hoge'] },
{ required: ['fuga'] },
],
} as const;
```
### コネクションには`markRaw`せよ
**Vueのコンポーネントのdataオプションとして**misskey.jsのコネクションを設定するとき、必ず`markRaw`でラップしてください。インスタンスが不必要にリアクティブ化されることで、misskey.js内の処理で不具合が発生するとともに、パフォーマンス上の問題にも繋がる。なお、Composition APIを使う場合はこの限りではない(リアクティブ化はマニュアルなため)。
### JSONのimportに気を付けよう
TypeScriptでjsonをimportすると、tscでコンパイルするときにそのjsonファイルも一緒にdistディレクトリに吐き出されてしまう。この挙動により、意図せずファイルの書き換えが発生することがあるので、jsonをimportするときは書き換えられても良いものかどうか確認すること。書き換えされて欲しくない場合は、importで読み込むのではなく、`fs.readFileSync`などの関数を使って読み込むようにすればよい。
### コンポーネントのスタイル定義でmarginを持たせない
コンポーネント自身がmarginを設定するのは問題の元となることはよく知られている
marginはそのコンポーネントを使う側が設定する
## その他
### HTMLのクラス名で follow という単語は使わない
広告ブロッカーで誤ってブロックされる
### indexというファイル名を使うな
ESMではディレクトリインポートは廃止されているのと、ディレクトリインポートせずともファイル名が index だと何故か一部のライブラリ?でディレクトリインポートだと見做されてエラーになる
## Merging from Misskey into Sharkey
Make sure you have both remotes in the same clone (`git remote add misskey
https://github.com/misskey-dev/misskey.git`), then:
git remote update
git checkout develop # this is Sharkey's develop
git checkout -m merge/$(date +%Y-%m-%d) # or whatever
git merge --no-ff misskey/develop
fix conflicts and *commit*! (conflicts in `pnpm-lock.yaml` can usually
be fixed by running `pnpm install`, it detects conflict markers and
seems to do a decent job)
*after that commit*, do all the extra work, on the same branch:
* copy all changes (commit after each step):
* in `packages/backend/src/core/NoteCreateService.ts`, from `create` to
`import` (and vice versa if `git` got confused!)
* in
`packages/backend/src/core/activitypub/models/ApNoteService.ts`,
from `createNote` to `updateNote`
* from `packages/backend/src/core/NoteCreateService.ts` to
`packages/backend/src/core/NoteEditService.vue`
* in `packages/backend/src/core/activitypub/models/ApNoteService.ts`,
from `createNote` to `updateNote`
* from `packages/backend/src/server/api/endpoints/notes/create.ts`
to `packages/backend/src/server/api/endpoints/notes/edit.ts`
* from `packages/frontend/src/components/MkNote*.vue` to
`packages/frontend/src/components/SkNote*.vue` (if sensible)
* from the global timeline to the bubble timeline
(`packages/backend/src/server/api/stream/channels/global-timeline.ts`,
`packages/backend/src/server/api/stream/channels/bubble-timeline.ts`,
`packages/frontend/src/timelines.ts`,
`packages/frontend/src/components/MkTimeline.vue`,
`packages/frontend/src/pages/timeline.vue`,
`packages/frontend/src/ui/deck/tl-column.vue`,
`packages/frontend/src/widgets/WidgetTimeline.vue`)
* check the changes against our `develop` (`git diff develop`) and
against Misskey (`git diff misskey/develop`)
* re-generate `misskey-js` (`pnpm build-misskey-js-with-types`) and commit
* build the frontend: `rm -rf built/; NODE_ENV=development pnpm --filter=frontend
build` (the `development` tells it to keep some of the original
filenames in the built files)
* make sure there aren't any new `ti-*` classes (Tabler Icons), and
replace them with appropriate `ph-*` ones (Phosphor Icons):
`grep -rP '["'\'']ti[ -](?!fw)' -- built/` should show you what to change.
NOTE: `ti-fw` is a special class that's defined by Misskey, leave it
alone
after every change, re-build the frontend and check again, until
there are no more `ti-*` classes in the built files
commit!
* double-check the new migration, that they won't conflict with our db
changes: `git diff develop -- packages/backend/migration/`
* `pnpm clean; pnpm build`
* run tests `pnpm --filter='!megalodon' test` (requires a test
database, [see above](#testing)) and fix as much as you can
* right now `megalodon` doesn't pass its tests, so we skip them
* run lint `pnpm --filter=backend lint` + `pnpm --filter=frontend
eslint` and fix as much as you can
Then push and open a Merge Request.
`main` is the branch that is currently running on egirls.gay

View file

@ -1,6 +1,6 @@
# Basic Precautions
When using a service with Sharkey, there are several important points to keep in mind.
When using a service with eGirlskey, there are several important points to keep in mind.
1. Because it is decentralized, there is no guarantee that data you upload will be deleted from all other servers even if you delete it once. (However, this applies to the internet in general.)
@ -11,6 +11,6 @@ Any data uploaded, whether shared via post or not, will be publicly accessible.
4. Account deletion can be a resource-intensive process and may take a long time. In cases with a lot of uploaded data, it may even be impossible to delete an account.
5. Please disable ad blockers. Some servers may rely on advertising revenue to cover operating costs. Additionally, ad blockers can mistakenly block content and features unrelated to ads, potentially causing issues with the client's functionality and preventing normal use of Sharkey. Therefore, we recommend turning off ad blockers and similar features when using Sharkey.
5. Please disable ad blockers. Some servers may rely on advertising revenue to cover operating costs. Additionally, ad blockers can mistakenly block content and features unrelated to ads, potentially causing issues with the client's functionality and preventing normal use of eGirlskey. Therefore, we recommend turning off ad blockers and similar features when using eGirlskey.
Please understand these points and enjoy using the service.

View file

@ -1,45 +1,23 @@
<div align="center">
<a href="https://joinsharkey.org/">
<img src="https://activitypub.software/TransFem-org/Sharkey/-/raw/develop/packages/frontend/assets/sharkey.svg" alt="Sharkey logo" style="border-radius:50%" width="300"/>
</a>
**🌎 **[Sharkey](https://joinsharkey.org/)** is an open source, decentralized social media platform that's free forever! 🚀**
# eGirlskey
---
<a href="https://docs.joinsharkey.org/docs/install/fresh/">
<img src="https://custom-icon-badges.herokuapp.com/badge/create_an-instance-FBD53C?logoColor=FBD53C&style=for-the-badge&logo=server&labelColor=363B40" alt="create an instance"/></a>
<a href="./CONTRIBUTING.md">
<img src="https://custom-icon-badges.herokuapp.com/badge/become_a-contributor-A371F7?logoColor=A371F7&style=for-the-badge&logo=git-merge&labelColor=363B40" alt="become a contributor"/></a>
<a href="https://discord.gg/6VgKmEqHNk">
<img src="https://custom-icon-badges.herokuapp.com/badge/join_the-community-5865F2?logoColor=5865F2&style=for-the-badge&logo=discord&labelColor=363B40" alt="join the community"/></a>
<a href="https://opencollective.com/sharkey">
<img src="https://custom-icon-badges.herokuapp.com/badge/donate-81ACF4?logoColor=81ACF4&style=for-the-badge&logo=opencollective&labelColor=363B40" alt="donate"/></a>
---
</div>
<div>
<a href="https://joinsharkey.org/"><img src="https://cdn.shonk.social/files/b671c81c-58cf-4f13-bc96-af0b0c96c667.webp" align="right" height="520px"/></a>
An allowlist-federating shitposting engine.
## ✨ Features
- **Allowlist federation**\
Control server access! Reduce reply guys! Become the online hermit you always wanted to be!
- **Private API support**\
Lock down public pages and API access to signed-in users
- **ActivityPub support**\
Not on Sharkey? No problem! Not only can Sharkey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed!
Not on eGirlskey? No problem! Not only can eGirlskey instances talk to each other, but you can make friends with people on other networks like Mastodon and Pixelfed!
- **Federated Backgrounds and Music status**\
You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening to
You can add a background to your profile as well as a music status via ListenBrainz, show everyone what music you are currently listening too
- **Mastodon API**\
Sharkey implements the Mastodon API unlike normal Misskey
- **UI/UX Improvements**\
Sharkey makes some UI/UX improvements to make it easier to navigate
eGirlskey implements the Mastodon API unlike normal Misskey
- **Sign-Up Approval**\
With Sharkey, you can enable sign-ups, subject to manual moderator approval and mandatory user-provided reasons for joining.
With eGirlskey, you can enable sign-ups, subject to manual moderator approval and mandatory user-provided reasons for joining.
- **Rich Web UI**\
Sharkey has a rich and easy to use Web UI!
eGirlskey has a rich and easy to use Web UI!
It is highly customizable, from changing the layout and adding widgets to making custom themes.
Furthermore, plugins can be created using AiScript, an original programming language.
- And much more...
@ -50,4 +28,4 @@ With Sharkey, you can enable sign-ups, subject to manual moderator approval and
## Documentation
Sharkey Documentation can be found at [Sharkey Documentation](https://docs.joinsharkey.org/docs/install/fresh/)
lol oops tba. ping @heartles@egirls.gay for questions or look at upstream Sharkey or Misskey documentation

View file

@ -1,9 +1,9 @@
# Reporting Security Issues
If you discover a security issue in Sharkey, please report it by sending an
email to [admin@transfem.org](mailto:admin@transfem.org).
If you discover a security issue in eGirlskey, please report it by sending an
email to [admin@heartles.xyz](mailto:admin@heartles.xyz).
This will allow us to assess the risk, and make a fix available before we add a
bug report to the GitLab repository.
bug report to the GitDab repository.
Thanks for helping make Sharkey safe for everyone.
Thanks for helping make eGirlskey safe for everyone.

View file

@ -1,8 +1,8 @@
---
_lang_: "Deutsch"
headlineMisskey: "Ein durch Notizen verbundenes Netzwerk"
introMisskey: "Willkommen! Sharkey ist eine dezentralisierte Open-Source Microblogging-Platform.\nVerfasse „Notizen“ um mitzuteilen, was gerade passiert oder um Ereignisse mit anderen zu teilen. 📡\nMit „Reaktionen“ kannst du außerdem schnell deine Gefühle über Notizen anderer Benutzer zum Ausdruck bringen. 👍\nEine neue Welt wartet auf dich! 🚀"
poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform <b>Sharkey</b> betriebenen Dienste die auf Misskey basiert ist (meist als \"Misskey-Instanz\" bezeichnet)."
introMisskey: "Willkommen! eGirlskey ist eine dezentralisierte Open-Source Microblogging-Platform.\nVerfasse „Notizen“ um mitzuteilen, was gerade passiert oder um Ereignisse mit anderen zu teilen. 📡\nMit „Reaktionen“ kannst du außerdem schnell deine Gefühle über Notizen anderer Benutzer zum Ausdruck bringen. 👍\nEine neue Welt wartet auf dich! 🚀"
poweredByMisskeyDescription: "{name} ist einer der durch die Open-Source-Plattform <b>eGirlskey</b> betriebenen Dienste die auf Misskey basiert ist (meist als \"Misskey-Instanz\" bezeichnet)."
monthAndDay: "{day}.{month}."
search: "Suchen"
notifications: "Benachrichtigungen"
@ -166,7 +166,7 @@ youCanCleanRemoteFilesCache: "Klicke auf den 🗑️-Knopf der Dateiverwaltungsa
cacheRemoteSensitiveFiles: "Sensitive Dateien von fremden Instanzen im Cache speichern"
cacheRemoteSensitiveFilesDescription: "Ist diese Einstellung deaktiviert, so werden sensitive Dateien fremder Instanzen direkt von dort ohne Zwischenspeicherung geladen."
flagAsBot: "Als Bot markieren"
flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt Sharkeys interne Systeme dieses Benutzerkonto als Bot behandeln."
flagAsBotDescription: "Aktiviere diese Option, falls dieses Benutzerkonto durch ein Programm gesteuert wird. Falls aktiviert, agiert es als Flag für andere Entwickler zur Verhinderung von endlosen Kettenreaktionen mit anderen Bots und lässt eGirlskeys interne Systeme dieses Benutzerkonto als Bot behandeln."
flagAsCat: "Als Katze markieren"
flagAsCatDescription: "Aktiviere diese Option, um dieses Benutzerkonto als Katze zu markieren."
flagShowTimelineReplies: "Antworten in der Chronik anzeigen"
@ -229,7 +229,7 @@ noUsers: "Keine Benutzer gefunden"
editProfile: "Profil bearbeiten"
noteDeleteConfirm: "Möchtest du diese Notiz wirklich löschen?"
pinLimitExceeded: "Du kannst nicht noch mehr Notizen anheften."
intro: "Sharkey ist installiert! Lass uns nun ein Administratorkonto einrichten."
intro: "eGirlskey ist installiert! Lass uns nun ein Administratorkonto einrichten."
done: "Fertig"
processing: "In Bearbeitung …"
preview: "Vorschau"
@ -422,7 +422,7 @@ exploreFediverse: "Das Fediverse erkunden"
popularTags: "Beliebte Schlagwörter"
userList: "Liste"
about: "Über"
aboutMisskey: "Über Sharkey"
aboutMisskey: "Über eGirlskey"
administrator: "Administrator"
token: "Token"
2fa: "Zwei-Faktor-Authentifizierung"
@ -572,7 +572,7 @@ sort: "Sortieren"
ascendingOrder: "Aufsteigende Reihenfolge"
descendingOrder: "Absteigende Reihenfolge"
scratchpad: "Testumgebung"
scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf Sharkey überprüfen."
scratchpadDescription: "Die Testumgebung bietet einen Bereich für AiScript-Experimente. Dort kannst du AiScript schreiben, ausführen sowie dessen Auswirkungen auf eGirlskey überprüfen."
output: "Ausgabe"
script: "Skript"
disablePagesScript: "AiScript auf Seiten deaktivieren"
@ -709,7 +709,7 @@ unclip: "Aus Clip entfernen"
confirmToUnclipAlreadyClippedNote: "Diese Notiz ist bereits im \"{name}\" Clip enthalten. Möchtest du sie aus diesem Clip entfernen?"
public: "Öffentlich"
private: "Privat"
i18nInfo: "Sharkey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen."
i18nInfo: "eGirlskey wird durch freiwillige Helfer in viele verschiedene Sprachen übersetzt. Auf {link} kannst du mithelfen."
manageAccessTokens: "Zugriffstokens verwalten"
accountInfo: "Benutzerkonto-Informationen"
notesCount: "Anzahl der Notizen"
@ -763,7 +763,7 @@ onlineUsersCount: "{n} Benutzer sind online"
nUsers: "{n} Benutzer"
nNotes: "{n} Notizen"
sendErrorReports: "Fehlerberichte senden"
sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten von Fehlern detaillierte Fehlerinformationen an Sharkey weitergegeben, was zur Verbesserung der Qualität von Sharkey beiträgt.\nEnthalten in diesen Informationen sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf deiner Aktivitäten innerhalb Sharkey."
sendErrorReportsDescription: "Ist diese Option aktiviert, so werden beim Auftreten von Fehlern detaillierte Fehlerinformationen an eGirlskey weitergegeben, was zur Verbesserung der Qualität von eGirlskey beiträgt.\nEnthalten in diesen Informationen sind u.a. die Version deines Betriebssystems, welchen Browser du verwendest und ein Verlauf deiner Aktivitäten innerhalb eGirlskey."
myTheme: "Mein Farbschema"
backgroundColor: "Hintergrundfarbe"
accentColor: "Akzentfarbe"
@ -857,7 +857,7 @@ hashtags: "Hashtags"
troubleshooting: "Problembehandlung"
useBlurEffect: "Weichzeichnungseffekt in der Benutzeroberfläche verwenden"
learnMore: "Mehr erfahren"
misskeyUpdated: "Sharkey wurde aktualisiert!"
misskeyUpdated: "eGirlskey wurde aktualisiert!"
whatIsNew: "Änderungen anzeigen"
translate: "Übersetzen"
translatedFrom: "Aus {x} übersetzt"
@ -984,8 +984,8 @@ numberOfLikes: "\"Gefällt mir\"-Anzahl"
show: "Anzeigen"
neverShow: "Nicht wieder anzeigen"
remindMeLater: "Vielleicht später"
didYouLikeMisskey: "Gefällt dir Sharkey?"
pleaseDonate: "Sharkey ist die kostenlose Software, die von {host} verwendet wird. Wir würden uns über Spenden freuen, damit dessen Entwicklung weitergeführt werden kann!"
didYouLikeMisskey: "Gefällt dir eGirlskey?"
pleaseDonate: "eGirlskey ist die kostenlose Software, die von {host} verwendet wird. Wir würden uns über Spenden freuen, damit dessen Entwicklung weitergeführt werden kann!"
pleaseDonateInstance: "Du kannst {host} auch direkt unterstützen, indem du an deine Instanz Administration spendest."
roles: "Rollen"
role: "Rolle"
@ -1101,7 +1101,7 @@ rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "Diese Rollen müssen öffe
cancelReactionConfirm: "Möchtest du deine Reaktion wirklich löschen?"
changeReactionConfirm: "Möchtest du deine Reaktion wirklich ändern?"
later: "Später"
goToMisskey: "Zu Sharkey"
goToMisskey: "Zu eGirlskey"
additionalEmojiDictionary: "Zusätzliche Emoji-Wörterbücher"
installed: "Installiert"
branding: "Branding"
@ -1271,7 +1271,7 @@ _accountMigration:
moveTo: "Dieses Konto zu einem neuen migrieren"
moveToLabel: "Umzugsziel:"
moveCannotBeUndone: "Die Migration eines Benutzerkontos ist unwiderruflich."
moveAccountDescription: "Hierdurch wird dein Konto zu einem anderen migriert.\n ・Follower von diesem Konto werden automatisch auf das neue Konto migriert\n ・Dieses Konto wird allen Nutzern, denen es derzeit folgt, nicht mehr folgen\n ・Mit diesem Konto können keine neuen Notizen usw. erstellt werden\n\nWährend die Migration der Follower automatisch erfolgt, muss die Migration der Konten, denen du folgst, manuell vorbereitet werden. Exportiere hierzu die Liste der gefolgten Nutzer über das Einstellungsmenu, und importiere diese Liste im neuen Konto. Das gleiche Verfahren gilt für erstellte Listen und stummgeschaltete oder blockierte Nutzer.\n\n(Diese Erklärung gilt für Sharkey v13.12.0 oder später. Die Funktionsweise andere ActivityPub-Software, beispielsweise Mastodon, kann hiervon abweichen.)"
moveAccountDescription: "Hierdurch wird dein Konto zu einem anderen migriert.\n ・Follower von diesem Konto werden automatisch auf das neue Konto migriert\n ・Dieses Konto wird allen Nutzern, denen es derzeit folgt, nicht mehr folgen\n ・Mit diesem Konto können keine neuen Notizen usw. erstellt werden\n\nWährend die Migration der Follower automatisch erfolgt, muss die Migration der Konten, denen du folgst, manuell vorbereitet werden. Exportiere hierzu die Liste der gefolgten Nutzer über das Einstellungsmenu, und importiere diese Liste im neuen Konto. Das gleiche Verfahren gilt für erstellte Listen und stummgeschaltete oder blockierte Nutzer.\n\n(Diese Erklärung gilt für eGirlskey v13.12.0 oder später. Die Funktionsweise andere ActivityPub-Software, beispielsweise Mastodon, kann hiervon abweichen.)"
moveAccountHowTo: "Um ein Konto zu migrieren, erstelle zuerst auf dem Umzugsziel einen Alias für dieses Konto.\nGib dann das Umzugsziel in folgendem Format ein: @username@server.example.com"
startMigration: "Migrieren"
migrationConfirm: "Dieses Konto wirklich zu {account} umziehen? Sobald der Umzug beginnt, kann er nicht rückgängig gemacht werden, und dieses Konto nicht wieder im ursprünglichen Zustand verwendet werden."
@ -1282,9 +1282,9 @@ _achievements:
earnedAt: "Freigeschaltet am"
_types:
_notes1:
title: "Hallo Sharkey!"
title: "Hallo eGirlskey!"
description: "Sende deine erste Notiz"
flavor: "Hab eine schöne Zeit mit Sharkey!"
flavor: "Hab eine schöne Zeit mit eGirlskey!"
_notes10:
title: "Notizblog"
description: "10 Notizen gesendet"
@ -1380,7 +1380,7 @@ _achievements:
_login1000:
title: "Wie die Zeit vergeht"
description: "An 1000 Tagen eingeloggt"
flavor: "Danke, dass du Sharkey nutzt!"
flavor: "Danke, dass du eGirlskey nutzt!"
_noteClipped1:
title: "Das merk ich mir"
description: "Die erste Notiz geclippt"
@ -1440,18 +1440,18 @@ _achievements:
title: "Ausstellung"
description: "Schau dir die Liste deiner Errungenschaften für mindestens 3 Minuten an"
_iLoveMisskey:
title: "I Love Sharkey"
description: "Sende \"I ❤ #Sharkey\""
flavor: "Danke, dass du Sharkey verwendest! - vom Entwicklerteam"
title: "I Love eGirlskey"
description: "Sende \"I ❤ #eGirlskey\""
flavor: "Danke, dass du eGirlskey verwendest! - vom Entwicklerteam"
_foundTreasure:
title: "Schatzsuche"
description: "Du hast einen verborgenen Schatz gefunden"
_client30min:
title: "Kurze Pause"
description: "Habe Sharkey für mindestens 30 Minuten geöffnet"
description: "Habe eGirlskey für mindestens 30 Minuten geöffnet"
_client60min:
title: "Munter mit Sharkey"
description: "Habe Sharkey für mindestens 60 Minuten geöffnet"
title: "Munter mit eGirlskey"
description: "Habe eGirlskey für mindestens 60 Minuten geöffnet"
_noteDeletedWithin1min:
title: "Katze auf der Tastatur"
description: "Lösche eine Notiz innerhalb von 1 Minute nachdem sie gesendet wurde"
@ -1516,7 +1516,7 @@ _achievements:
_brainDiver:
title: "Brain Diver"
description: "Sende den Link zu Brain Diver"
flavor: "Sharkey-Sharkey La-Tu-Ma"
flavor: "eGirlskey-eGirlskey La-Tu-Ma"
_smashTestNotificationButton:
title: "Testüberfluss"
description: "Betätige den Benachrichtigungstest mehrfach innerhalb einer extrem kurzen Zeitspanne"
@ -1681,12 +1681,12 @@ _registry:
domain: "Domain"
createKey: "Schlüssel erstellen"
_aboutMisskey:
about: "Sharkey ist Open-Source-Software basiert auf Misskey welche von syuilo seit 2014 entwickelt wird."
about: "eGirlskey ist Open-Source-Software basiert auf Misskey welche von syuilo seit 2014 entwickelt wird."
contributors: "Hauptmitwirkende"
allContributors: "Alle Mitwirkenden"
source: "Quellcode"
translation: "Sharkey übersetzen"
donate: "An Sharkey spenden"
translation: "eGirlskey übersetzen"
donate: "An eGirlskey spenden"
morePatrons: "Wir schätzen ebenso die Unterstützung vieler anderer hier nicht gelisteter Personen sehr. Danke! 🥰"
patrons: "UnterstützerInnen"
projectMembers: "Projektmitglieder"

View file

@ -1,8 +1,8 @@
---
_lang_: "English"
headlineMisskey: "A network connected by notes"
introMisskey: "Welcome! Sharkey is an open source, decentralized microblogging service.\nCreate \"notes\" to share your thoughts with everyone around you. 📡\nWith \"reactions\", you can also quickly express your feelings about everyone's notes. 👍\nLet's explore a new world! 🚀"
poweredByMisskeyDescription: "{name} is one of the services powered by the open source platform <b>Sharkey</b> which is based on Misskey (referred to as a \"Misskey instance\")."
introMisskey: "Welcome! eGirlskey is an open source, decentralized microblogging service.\nCreate \"notes\" to share your thoughts with everyone around you. 📡\nWith \"reactions\", you can also quickly express your feelings about everyone's notes. 👍\nLet's explore a new world! 🚀"
poweredByMisskeyDescription: "{name} is one of the services powered by the open source platform <b>eGirlskey</b> which is based on Sharkey, a fork of Misskey (referred to as a \"Misskey instance\")."
monthAndDay: "{month}/{day}"
search: "Search"
notifications: "Notifications"
@ -182,7 +182,7 @@ youCanCleanRemoteFilesCache: "You can clear the cache by clicking the 🗑️ bu
cacheRemoteSensitiveFiles: "Cache sensitive remote files"
cacheRemoteSensitiveFilesDescription: "When this setting is disabled, sensitive remote files are loaded directly from the remote instance without caching."
flagAsBot: "Mark this account as a bot"
flagAsBotDescription: "Enable this option if this account is controlled by a program. If enabled, it will act as a flag for other developers to prevent endless interaction chains with other bots and adjust Sharkey's internal systems to treat this account as a bot."
flagAsBotDescription: "Enable this option if this account is controlled by a program. If enabled, it will act as a flag for other developers to prevent endless interaction chains with other bots and adjust eGirlskey's internal systems to treat this account as a bot."
flagAsCat: "Mark this account as a cat"
flagAsCatDescription: "Enable this option to mark this account as a cat."
flagSpeakAsCat: "Speak as a cat"
@ -259,7 +259,7 @@ noUsers: "There are no users"
editProfile: "Edit profile"
noteDeleteConfirm: "Are you sure you want to delete this note?"
pinLimitExceeded: "You cannot pin any more notes"
intro: "Installation of Sharkey has been finished! Please create an admin user."
intro: "Installation of eGirlskey has been finished! Please create an admin user."
done: "Done"
processing: "Processing..."
preview: "Preview"
@ -457,7 +457,7 @@ exploreFediverse: "Explore the Fediverse"
popularTags: "Popular tags"
userList: "Lists"
about: "About"
aboutMisskey: "About Sharkey"
aboutMisskey: "About eGirlskey"
administrator: "Administrator"
token: "Token"
2fa: "Two-factor authentication"
@ -600,7 +600,7 @@ popout: "Pop-out"
volume: "Volume"
masterVolume: "Master volume"
notUseSound: "Disable sound"
useSoundOnlyWhenActive: "Output sounds only if Sharkey is active."
useSoundOnlyWhenActive: "Output sounds only if eGirlskey is active."
details: "Details"
chooseEmoji: "Select an emoji"
unableToProcess: "The operation could not be completed"
@ -616,7 +616,7 @@ sort: "Sorting order"
ascendingOrder: "Ascending"
descendingOrder: "Descending"
scratchpad: "Scratchpad"
scratchpadDescription: "The Scratchpad provides an environment for AiScript experiments. You can write, execute, and check the results of it interacting with Sharkey in it."
scratchpadDescription: "The Scratchpad provides an environment for AiScript experiments. You can write, execute, and check the results of it interacting with eGirlskey in it."
output: "Output"
script: "Script"
disablePagesScript: "Disable AiScript on Pages"
@ -760,7 +760,7 @@ unclip: "Unclip"
confirmToUnclipAlreadyClippedNote: "This note is already part of the \"{name}\" clip. Do you want to remove it from this clip instead?"
public: "Public"
private: "Private"
i18nInfo: "Sharkey is being translated into various languages by volunteers. You can help at {link}."
i18nInfo: "eGirlskey is being translated into various languages by volunteers. You can help at {link}."
manageAccessTokens: "Manage access tokens"
accountInfo: "Account Info"
notesCount: "Number of notes"
@ -820,7 +820,7 @@ onlineUsersCount: "{n} users are online"
nUsers: "{n} Users"
nNotes: "{n} Notes"
sendErrorReports: "Send error reports"
sendErrorReportsDescription: "When turned on, detailed error information will be shared with Sharkey when a problem occurs, helping to improve the quality of Sharkey.\nThis will include information such the version of your OS, what browser you're using, your activity in Sharkey, etc."
sendErrorReportsDescription: "When turned on, detailed error information will be shared with eGirlskey when a problem occurs, helping to improve the quality of eGirlskey.\nThis will include information such the version of your OS, what browser you're using, your activity in eGirlskey, etc."
myTheme: "My theme"
backgroundColor: "Background color"
accentColor: "Accent color"
@ -917,7 +917,7 @@ hashtags: "Hashtags"
troubleshooting: "Troubleshooting"
useBlurEffect: "Use blur effects in the UI"
learnMore: "Learn more"
misskeyUpdated: "Sharkey has been updated!"
misskeyUpdated: "eGirlskey has been updated!"
whatIsNew: "Show changes"
translate: "Translate"
translatedFrom: "Translated from {x}"
@ -1062,8 +1062,8 @@ numberOfLikes: "Likes"
show: "Show"
neverShow: "Don't show again"
remindMeLater: "Maybe later"
didYouLikeMisskey: "Have you taken a liking to Sharkey?"
pleaseDonate: "{host} uses the free software, Sharkey. We would highly appreciate your donations so development of Sharkey can continue!"
didYouLikeMisskey: "Have you taken a liking to eGirlskey?"
pleaseDonate: "{host} uses the free software, eGirlskey. We would highly appreciate your donations so development of eGirlskey can continue!"
pleaseDonateInstance: "You can also support {host} directly by donating to your instance administration."
correspondingSourceIsAvailable: "The corresponding source code is available at {anchor}"
roles: "Roles"
@ -1198,7 +1198,7 @@ rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "These roles must be public
cancelReactionConfirm: "Really delete your reaction?"
changeReactionConfirm: "Really change your reaction?"
later: "Later"
goToMisskey: "To Sharkey"
goToMisskey: "To eGirlskey"
additionalEmojiDictionary: "Additional emoji dictionaries"
installed: "Installed"
branding: "Branding"
@ -1266,7 +1266,7 @@ externalServices: "External Services"
sourceCode: "Source code"
sourceCodeIsNotYetProvided: "The source code is not yet available. Please contact your administrator to fix this problem."
repositoryUrl: "Repository URL"
repositoryUrlDescription: "If there is a repository where the source code is publicly available, enter its URL. If you are using Sharkey as-is (without any changes to the source code), enter https://activitypub.software/TransFem-org/Sharkey/."
repositoryUrlDescription: "If there is a repository where the source code is publicly available, enter its URL. If you are using eGirlskey as-is (without any changes to the source code), enter https://activitypub.software/TransFem-org/eGirlskey/."
repositoryUrlOrTarballRequired: "If you have not published a repository, you must provide a tarball instead. See .config/example.yml for more information."
feedback: "Feedback"
feedbackUrl: "Feedback URL"
@ -1383,7 +1383,7 @@ _initialAccountSetting:
pushNotificationDescription: "Enabling push notifications will allow you to receive notifications from {name} directly on your device."
initialAccountSettingCompleted: "Profile setup complete!"
haveFun: "Enjoy {name}!"
youCanContinueTutorial: "You can proceed to a tutorial on how to use {name} (Sharkey) or you can exit the setup here and start using it immediately."
youCanContinueTutorial: "You can proceed to a tutorial on how to use {name} (eGirlskey) or you can exit the setup here and start using it immediately."
startTutorial: "Start Tutorial"
skipAreYouSure: "Really skip profile setup?"
laterAreYouSure: "Really do profile setup later?"
@ -1394,10 +1394,10 @@ _initialTutorial:
skipAreYouSure: "Quit Tutorial?"
_landing:
title: "Welcome to the Tutorial"
description: "Here, you can learn the basics of using Sharkey and its features."
description: "Here, you can learn the basics of using eGirlskey and its features."
_note:
title: "What is a Note?"
description: "Posts on Sharkey are called 'Notes.' Notes are arranged chronologically on the timeline and are updated in real-time."
description: "Posts on eGirlskey are called 'Notes.' Notes are arranged chronologically on the timeline and are updated in real-time."
reply: "Click on this button to reply to a message. It's also possible to reply to replies, continuing the conversation like a thread."
renote: "You can share that note to your own timeline. You can also quote them with your comments."
reaction: "You can add reactions to the Note. More details will be explained on the next page."
@ -1411,7 +1411,7 @@ _initialTutorial:
reactDone: "You can undo a reaction by pressing the '{undo}' button."
_timeline:
title: "The Concept of Timelines"
description1: "Sharkey provides multiple timelines based on usage (some may not be available depending on the server's policies)."
description1: "eGirlskey provides multiple timelines based on usage (some may not be available depending on the server's policies)."
home: "You can view notes from accounts you follow."
local: "You can view notes from all users on this server."
social: "Notes from the Home and Local timelines will be displayed."
@ -1420,7 +1420,7 @@ _initialTutorial:
description3: "Additionally, there are list timelines and channel timelines. For more details, please refer to {link}."
_postNote:
title: "Note Posting Settings"
description1: "When posting a note on Sharkey, various options are available. The posting form looks like this."
description1: "When posting a note on eGirlskey, various options are available. The posting form looks like this."
_visibility:
description: "You can limit who can view your note."
public: "Your note will be visible for all users."
@ -1448,7 +1448,7 @@ _initialTutorial:
doItToContinue: "Mark the attachment file as sensitive to proceed."
_done:
title: "The tutorial is complete! 🎉"
description: "The functions introduced here are just a small part. For a more detailed understanding of using Sharkey, please refer to {link}."
description: "The functions introduced here are just a small part. For a more detailed understanding of using eGirlskey, please refer to {link}."
_timelineDescription:
home: "In the Home timeline, you can see notes from accounts you follow."
local: "In the Local timeline, you can see notes from all users on this server."
@ -1478,7 +1478,7 @@ _accountMigration:
moveTo: "Migrate this account to a different one"
moveToLabel: "Account to move to:"
moveCannotBeUndone: "Account migration cannot be undone."
moveAccountDescription: "This will migrate your account to a different one.\n ・Followers from this account will automatically be migrated to the new account\n ・This account will unfollow all users it is currently following\n ・You will be unable to create new notes etc. on this account\n\nWhile migration of followers is automatic, you must manually prepare some steps to migrate the list of users you are following. To do so, carry out a follows export that you will later import on the new account in the settings menu. The same procedure applies to your lists as well as your muted and blocked users.\n\n(This explanation applies to Sharkey v13.12.0 and later. Other ActivityPub software, such as Mastodon, might function differently.)"
moveAccountDescription: "This will migrate your account to a different one.\n ・Followers from this account will automatically be migrated to the new account\n ・This account will unfollow all users it is currently following\n ・You will be unable to create new notes etc. on this account\n\nWhile migration of followers is automatic, you must manually prepare some steps to migrate the list of users you are following. To do so, carry out a follows export that you will later import on the new account in the settings menu. The same procedure applies to your lists as well as your muted and blocked users.\n\n(This explanation applies to eGirlskey v13.12.0 and later. Other ActivityPub software, such as Mastodon, might function differently.)"
moveAccountHowTo: "To migrate, first create an alias for this account on the account to move to.\nAfter you have created the alias, enter the account to move to in the following format: @username@server.example.com"
startMigration: "Migrate"
migrationConfirm: "Really migrate this account to {account}? Once started, this process cannot be stopped or taken back, and you will not be able to use this account in its original state anymore."
@ -1491,7 +1491,7 @@ _achievements:
_notes1:
title: "just setting up my shonk"
description: "Post your first note"
flavor: "Have a good time with Sharkey!"
flavor: "Have a good time with eGirlskey!"
_notes10:
title: "Some notes"
description: "Post 10 notes"
@ -1587,7 +1587,7 @@ _achievements:
_login1000:
title: "Master of Notes III"
description: "Log in for a total of 1,000 days"
flavor: "Thank you for using Sharkey!"
flavor: "Thank you for using eGirlskey!"
_noteClipped1:
title: "Must... clip..."
description: "Clip your first note"
@ -1647,18 +1647,18 @@ _achievements:
title: "Likes Achievements"
description: "Look at your list of achievements for at least 3 minutes"
_iLoveMisskey:
title: "I Love Sharkey"
description: "Post \"I ❤ #Sharkey\""
flavor: "Sharkey's development team greatly appreciates your support!"
title: "I Love eGirlskey"
description: "Post \"I ❤ #eGirlskey\""
flavor: "eGirlskey's development team greatly appreciates your support!"
_foundTreasure:
title: "Treasure Hunt"
description: "You've found the hidden treasure"
_client30min:
title: "Short break"
description: "Keep Sharkey opened for at least 30 minutes"
description: "Keep eGirlskey opened for at least 30 minutes"
_client60min:
title: "No \"Miss\" in Sharkey"
description: "Keep Sharkey opened for at least 60 minutes"
title: "No \"Miss\" in eGirlskey"
description: "Keep eGirlskey opened for at least 60 minutes"
_noteDeletedWithin1min:
title: "Nevermind"
description: "Delete a note within a minute of posting it"
@ -1723,12 +1723,12 @@ _achievements:
_brainDiver:
title: "Brain Diver"
description: "Post the link to Brain Diver"
flavor: "Sharkey-Sharkey La-Tu-Ma"
flavor: "eGirlskey-eGirlskey La-Tu-Ma"
_smashTestNotificationButton:
title: "Test overflow"
description: "Trigger the notification test repeatedly within an extremely short time"
_tutorialCompleted:
title: "Sharkey Elementary Course Diploma"
title: "eGirlskey Elementary Course Diploma"
description: "Tutorial completed"
_bubbleGameExplodingHead:
title: "🤯"
@ -1909,16 +1909,18 @@ _registry:
domain: "Domain"
createKey: "Create key"
_aboutMisskey:
about: "Sharkey is open-source software based on Misskey which has been in development by syuilo since 2014."
about: "eGirlskey is open-source software based on Sharkey, a fork of Misskey which has been in development since 2014 by syuilo."
contributors: "Main contributors"
allContributors: "All contributors"
source: "Source code"
original: "Misskey original"
original_sharkey: "Sharkey original"
thisIsModifiedVersion: "{name} uses a modified version of the original Sharkey."
translation: "Translate Sharkey"
original_sharkey: "eGirlskey original"
original_egirlskey: "eGirlskey original"
thisIsModifiedVersion: "{name} uses a modified version of the original eGirlskey."
translation: "Translate eGirlskey"
donate: "Donate to Misskey"
donate_sharkey: "Donate to Sharkey"
donate_sharkey: "Donate to eGirlskey"
donate_egirlskey: "Donate to eGirlskey"
morePatrons: "We also appreciate the support of many other helpers not listed here. Thank you! 🥰"
patrons: "Patrons"
projectMembers: "Project members"
@ -2038,6 +2040,8 @@ _sfx:
note: "New note"
noteMy: "Own note"
notification: "Notifications"
antenna: "Antennas"
channel: "Channel notifications"
reaction: "On choosing a reaction"
_soundSettings:
driveFile: "Use an audio file in Drive."
@ -2045,7 +2049,7 @@ _soundSettings:
driveFileTypeWarn: "This file is not supported"
driveFileTypeWarnDescription: "Select an audio file"
driveFileDurationWarn: "The audio is too long."
driveFileDurationWarnDescription: "Long audio may disrupt using Sharkey. Still continue?"
driveFileDurationWarnDescription: "Long audio may disrupt using eGirlskey. Still continue?"
driveFileError: "The audio couldn't be loaded. Please make sure you selected an audio file."
_ago:
future: "Future"
@ -2078,6 +2082,7 @@ _2fa:
registerTOTP: "Register authenticator app"
step1: "First, install an authentication app (such as {a} or {b}) on your device."
step2: "Then, scan the QR code displayed on this screen."
step2Click: "Clicking on this QR code will allow you to register 2FA to your security key or phone authenticator app."
step2Uri: "Enter the following URI if you are using a desktop program"
step3Title: "Enter an authentication code"
step3: "Enter the authentication code (token) provided by your app to finish setup."
@ -2152,6 +2157,7 @@ _permissions:
"read:admin:server-info": "View server info"
"read:admin:show-moderation-log": "View moderation log"
"read:admin:show-user": "View private user info"
"read:admin:show-users": "View private user info"
"write:admin:suspend-user": "Suspend user"
"write:admin:unset-user-avatar": "Remove user avatar"
"write:admin:unset-user-banner": "Remove user banner"
@ -2599,8 +2605,8 @@ _moderationLogTypes:
_mfm:
uncommonFeature: "This is not a widespread feature, it may not display properly on most other fedi software, including other Misskey forks"
intro: "MFM is a markup language used on Misskey, Sharkey, Firefish, Akkoma, and more that can be used in many places. Here you can view a list of all available MFM syntax."
dummy: "Sharkey expands the world of the Fediverse"
intro: "MFM is a markup language used on Misskey, eGirlskey, Sharkey, Firefish, Akkoma, and more that can be used in many places. Here you can view a list of all available MFM syntax."
dummy: "eGirlskey expands the world of the Fediverse"
mention: "Mention"
mentionDescription: "You can specify a user by using an At-Symbol and a username."
hashtag: "Hashtag"

62
locales/index.d.ts vendored
View file

@ -18,14 +18,14 @@ export interface Locale extends ILocale {
*/
"headlineMisskey": string;
/**
* Sharkeyは
* eGirlskeyは
* 📡
* 👍
* 🚀
*/
"introMisskey": string;
/**
* {name}<b>Sharkey</b>
* {name}<b>eGirlskey</b>
*/
"poweredByMisskeyDescription": ParameterizedString<"name">;
/**
@ -737,7 +737,7 @@ export interface Locale extends ILocale {
*/
"flagAsBot": string;
/**
* Sharkeyのシステム上での扱いがBotに合ったものになります
* eGirlskeyのシステム上での扱いがBotに合ったものになります
*/
"flagAsBotDescription": string;
/**
@ -1029,7 +1029,7 @@ export interface Locale extends ILocale {
*/
"pinLimitExceeded": string;
/**
* Sharkeyのインストールが完了しました
* eGirlskeyのインストールが完了しました
*/
"intro": string;
/**
@ -1817,7 +1817,7 @@ export interface Locale extends ILocale {
*/
"about": string;
/**
* Sharkeyについて
* eGirlskeyについて
*/
"aboutMisskey": string;
/**
@ -2453,7 +2453,7 @@ export interface Locale extends ILocale {
*/
"scratchpad": string;
/**
* AiScriptの実験環境を提供しますSharkeyと対話するコードの記述
* AiScriptの実験環境を提供しますeGirlskeyと対話するコードの記述
*/
"scratchpadDescription": string;
/**
@ -3029,7 +3029,7 @@ export interface Locale extends ILocale {
*/
"private": string;
/**
* Sharkeyは有志によって様々な言語に翻訳されています{link}
* eGirlskeyは有志によって様々な言語に翻訳されています{link}
*/
"i18nInfo": ParameterizedString<"link">;
/**
@ -3269,7 +3269,7 @@ export interface Locale extends ILocale {
*/
"sendErrorReports": string;
/**
* Sharkeyに共有されOSのバージョン
* eGirlskeyに共有されOSのバージョン
*/
"sendErrorReportsDescription": string;
/**
@ -3649,7 +3649,7 @@ export interface Locale extends ILocale {
*/
"learnMore": string;
/**
* Sharkeyが更新されました
* eGirlskeyが更新されました
*/
"misskeyUpdated": string;
/**
@ -4226,11 +4226,11 @@ export interface Locale extends ILocale {
*/
"remindMeLater": string;
/**
* Sharkeyを気に入っていただけましたか
* eGirlskeyを気に入っていただけましたか
*/
"didYouLikeMisskey": string;
/**
* Sharkeyは{host}使
* eGirlskeyは{host}使
*/
"pleaseDonate": ParameterizedString<"host">;
/**
@ -4770,7 +4770,7 @@ export interface Locale extends ILocale {
*/
"later": string;
/**
* Sharkeyへ
* eGirlskeyへ
*/
"goToMisskey": string;
/**
@ -5495,7 +5495,7 @@ export interface Locale extends ILocale {
*/
"haveFun": ParameterizedString<"name">;
/**
* {name}(Sharkey)使使
* {name}(eGirlskey)使使
*/
"youCanContinueTutorial": ParameterizedString<"name">;
/**
@ -5534,7 +5534,7 @@ export interface Locale extends ILocale {
*/
"title": string;
/**
* Sharkeyの基本的な使い方や機能を確認できます
* eGirlskeyの基本的な使い方や機能を確認できます
*/
"description": string;
};
@ -5544,7 +5544,7 @@ export interface Locale extends ILocale {
*/
"title": string;
/**
* Sharkeyでの投稿は
* eGirlskeyでの投稿は
*/
"description": string;
/**
@ -5596,7 +5596,7 @@ export interface Locale extends ILocale {
*/
"title": string;
/**
* Sharkeyには使
* eGirlskeyには使
*/
"description1": string;
/**
@ -5630,7 +5630,7 @@ export interface Locale extends ILocale {
*/
"title": string;
/**
* Sharkeyにートを投稿する際には稿
* eGirlskeyにートを投稿する際には稿
*/
"description1": string;
"_visibility": {
@ -5730,7 +5730,7 @@ export interface Locale extends ILocale {
*/
"title": string;
/**
* Sharkeyの使い方をより詳しく知るには{link}
* eGirlskeyの使い方をより詳しく知るには{link}
*/
"description": ParameterizedString<"link">;
};
@ -5853,7 +5853,7 @@ export interface Locale extends ILocale {
*
*
*
* Sharkey v13.12.0Mastodonなどの他のActivityPubソフトウェアでは挙動が異なる場合があります
* eGirlskey v13.12.0Mastodonなどの他のActivityPubソフトウェアでは挙動が異なる場合があります
*/
"moveAccountDescription": string;
/**
@ -5901,7 +5901,7 @@ export interface Locale extends ILocale {
*/
"description": string;
/**
* Sharkeyライフを
* eGirlskeyライフを
*/
"flavor": string;
};
@ -6225,7 +6225,7 @@ export interface Locale extends ILocale {
*/
"description": string;
/**
* Sharkeyを使ってくれてありがとう
* eGirlskeyを使ってくれてありがとう
*/
"flavor": string;
};
@ -6425,15 +6425,15 @@ export interface Locale extends ILocale {
};
"_iLoveMisskey": {
/**
* I Love Sharkey
* I Love eGirlskey
*/
"title": string;
/**
* "I ❤ #Sharkey"稿
* "I ❤ #eGirlskey"稿
*/
"description": string;
/**
* Sharkeyを使ってくださりありがとうございます by
* eGirlskeyを使ってくださりありがとうございます by
*/
"flavor": string;
};
@ -6459,7 +6459,7 @@ export interface Locale extends ILocale {
};
"_client60min": {
/**
* Sharkeyの見すぎ
* eGirlskeyの見すぎ
*/
"title": string;
/**
@ -6699,7 +6699,7 @@ export interface Locale extends ILocale {
};
"_tutorialCompleted": {
/**
* Sharkey初心者講座
* eGirlskey初心者講座
*/
"title": string;
/**
@ -7385,7 +7385,7 @@ export interface Locale extends ILocale {
};
"_aboutMisskey": {
/**
* SharkeyはMisskeyをベースにしたオープンソースのソフトウェアです
* eGirlskeyはMisskeyをベースにしたオープンソースのソフトウェアです
*/
"about": string;
/**
@ -7405,15 +7405,15 @@ export interface Locale extends ILocale {
*/
"original": string;
/**
* Sharkey
* eGirlskey
*/
"original_sharkey": string;
/**
* {name}Sharkeyを改変したバージョンを使用しています
* {name}eGirlskeyを改変したバージョンを使用しています
*/
"thisIsModifiedVersion": ParameterizedString<"name">;
/**
* Sharkeyを翻訳
* eGirlskeyを翻訳
*/
"translation": string;
/**
@ -7421,7 +7421,7 @@ export interface Locale extends ILocale {
*/
"donate": string;
/**
* Sharkeyに寄付
* eGirlskeyに寄付
*/
"donate_sharkey": string;
/**

View file

@ -1,8 +1,8 @@
_lang_: "日本語"
headlineMisskey: "ノートでつながるネットワーク"
introMisskey: "ようこそ!Sharkeyは、オープンソースの分散型マイクロブログサービスです。\n「ート」を作成して、いま起こっていることを共有したり、あなたについて皆に発信しよう📡\n「リアクション」機能で、皆のートに素早く反応を追加することもできます👍\n新しい世界を探検しよう🚀"
poweredByMisskeyDescription: "{name}は、オープンソースのプラットフォーム<b>Sharkey</b>のサーバーのひとつです。"
introMisskey: "ようこそ!eGirlskeyは、オープンソースの分散型マイクロブログサービスです。\n「ート」を作成して、いま起こっていることを共有したり、あなたについて皆に発信しよう📡\n「リアクション」機能で、皆のートに素早く反応を追加することもできます👍\n新しい世界を探検しよう🚀"
poweredByMisskeyDescription: "{name}は、オープンソースのプラットフォーム<b>eGirlskey</b>のサーバーのひとつです。"
monthAndDay: "{month}月 {day}日"
search: "検索"
notifications: "通知"
@ -180,7 +180,7 @@ youCanCleanRemoteFilesCache: "ファイル管理の🗑️ボタンで全ての
cacheRemoteSensitiveFiles: "リモートのセンシティブなファイルをキャッシュする"
cacheRemoteSensitiveFilesDescription: "この設定を無効にすると、リモートのセンシティブなファイルはキャッシュせず直リンクするようになります。"
flagAsBot: "Botとして設定"
flagAsBotDescription: "このアカウントがプログラムによって運用される場合は、このフラグをオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、Sharkeyのシステム上での扱いがBotに合ったものになります。"
flagAsBotDescription: "このアカウントがプログラムによって運用される場合は、このフラグをオンにします。オンにすると、反応の連鎖を防ぐためのフラグとして他の開発者に役立ったり、eGirlskeyのシステム上での扱いがBotに合ったものになります。"
flagAsCat: "にゃああああああああああああああ!!!!!!!!!!!!"
flagAsCatDescription: "にゃにゃにゃ??"
flagSpeakAsCat: "猫語で話す"
@ -253,7 +253,7 @@ noUsers: "ユーザーはいません"
editProfile: "プロフィールを編集"
noteDeleteConfirm: "このノートを削除しますか?"
pinLimitExceeded: "これ以上ピン留めできません"
intro: "Sharkeyのインストールが完了しました管理者アカウントを作成しましょう。"
intro: "eGirlskeyのインストールが完了しました管理者アカウントを作成しましょう。"
done: "完了"
processing: "処理中"
preview: "プレビュー"
@ -450,7 +450,7 @@ exploreFediverse: "Fediverseを探索"
popularTags: "人気のタグ"
userList: "リスト"
about: "情報"
aboutMisskey: "Sharkeyについて"
aboutMisskey: "eGirlskeyについて"
administrator: "管理者"
token: "確認コード"
2fa: "二要素認証"
@ -609,7 +609,7 @@ sort: "ソート"
ascendingOrder: "昇順"
descendingOrder: "降順"
scratchpad: "スクラッチパッド"
scratchpadDescription: "スクラッチパッドは、AiScriptの実験環境を提供します。Sharkeyと対話するコードの記述、実行、結果の確認ができます。"
scratchpadDescription: "スクラッチパッドは、AiScriptの実験環境を提供します。eGirlskeyと対話するコードの記述、実行、結果の確認ができます。"
output: "出力"
script: "スクリプト"
disablePagesScript: "Pagesのスクリプトを無効にする"
@ -753,7 +753,7 @@ unclip: "クリップ解除"
confirmToUnclipAlreadyClippedNote: "このノートはすでにクリップ「{name}」に含まれています。ノートをこのクリップから除外しますか?"
public: "パブリック"
private: "非公開"
i18nInfo: "Sharkeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。"
i18nInfo: "eGirlskeyは有志によって様々な言語に翻訳されています。{link}で翻訳に協力できます。"
manageAccessTokens: "アクセストークンの管理"
accountInfo: "アカウント情報"
notesCount: "ノートの数"
@ -813,7 +813,7 @@ onlineUsersCount: "{n}人がオンライン"
nUsers: "{n}ユーザー"
nNotes: "{n}ノート"
sendErrorReports: "エラーリポートを送信"
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がSharkeyに共有され、ソフトウェアの品質向上に役立てることができます。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。"
sendErrorReportsDescription: "オンにすると、問題が発生したときにエラーの詳細情報がeGirlskeyに共有され、ソフトウェアの品質向上に役立てることができます。エラー情報には、OSのバージョン、ブラウザの種類、行動履歴などが含まれます。"
myTheme: "マイテーマ"
backgroundColor: "背景"
accentColor: "アクセント"
@ -908,7 +908,7 @@ hashtags: "ハッシュタグ"
troubleshooting: "トラブルシューティング"
useBlurEffect: "UIにぼかし効果を使用"
learnMore: "詳しく"
misskeyUpdated: "Sharkeyが更新されました"
misskeyUpdated: "eGirlskeyが更新されました"
whatIsNew: "更新情報を見る"
translate: "翻訳"
translatedFrom: "{x}から翻訳"
@ -1052,8 +1052,8 @@ numberOfLikes: "いいね数"
show: "表示"
neverShow: "今後表示しない"
remindMeLater: "また後で"
didYouLikeMisskey: "Sharkeyを気に入っていただけましたか"
pleaseDonate: "Sharkeyは{host}が使用している無料のソフトウェアです。これからも開発を続けられるように、ぜひ寄付をお願いします!"
didYouLikeMisskey: "eGirlskeyを気に入っていただけましたか"
pleaseDonate: "eGirlskeyは{host}が使用している無料のソフトウェアです。これからも開発を続けられるように、ぜひ寄付をお願いします!"
pleaseDonateInstance: "インスタンス管理者への寄付によって{host}を直接サポートすることもできます。"
correspondingSourceIsAvailable: "対応するソースコードは{anchor}から利用可能です。"
roles: "ロール"
@ -1188,7 +1188,7 @@ rolesThatCanBeUsedThisEmojiAsReactionPublicRoleWarn: "ロールは公開ロー
cancelReactionConfirm: "リアクションを取り消しますか?"
changeReactionConfirm: "リアクションを変更しますか?"
later: "あとで"
goToMisskey: "Sharkeyへ"
goToMisskey: "eGirlskeyへ"
additionalEmojiDictionary: "絵文字の追加辞書"
installed: "インストール済み"
branding: "ブランディング"
@ -1377,7 +1377,7 @@ _initialAccountSetting:
pushNotificationDescription: "プッシュ通知を有効にすると{name}の通知をお使いのデバイスで受け取ることができます。"
initialAccountSettingCompleted: "初期設定が完了しました!"
haveFun: "{name}をお楽しみください!"
youCanContinueTutorial: "このまま{name}(Sharkey)の使い方についてのチュートリアルに進むこともできますが、ここで中断してすぐに使い始めることもできます。"
youCanContinueTutorial: "このまま{name}(eGirlskey)の使い方についてのチュートリアルに進むこともできますが、ここで中断してすぐに使い始めることもできます。"
startTutorial: "チュートリアルを開始"
skipAreYouSure: "初期設定をスキップしますか?"
laterAreYouSure: "初期設定をあとでやり直しますか?"
@ -1389,10 +1389,10 @@ _initialTutorial:
skipAreYouSure: "チュートリアルを終了しますか?"
_landing:
title: "チュートリアルへようこそ"
description: "ここでは、Sharkeyの基本的な使い方や機能を確認できます。"
description: "ここでは、eGirlskeyの基本的な使い方や機能を確認できます。"
_note:
title: "ノートって何?"
description: "Sharkeyでの投稿は「ート」と呼びます。ートはタイムラインに時系列で並んでいて、リアルタイムで更新されていきます。"
description: "eGirlskeyでの投稿は「ート」と呼びます。ートはタイムラインに時系列で並んでいて、リアルタイムで更新されていきます。"
reply: "返信することができます。返信に対しての返信も可能で、スレッドのように会話を続けることもできます。"
renote: "そのノートを自分のタイムラインに流して共有することができます。テキストを追加して引用することも可能です。"
reaction: "リアクションをつけることができます。詳しくは次のページで解説します。"
@ -1406,7 +1406,7 @@ _initialTutorial:
reactDone: "「{undo}」ボタンを押すとリアクションを取り消すことができます。"
_timeline:
title: "タイムラインのしくみ"
description1: "Sharkeyには、使い方に応じて複数のタイムラインが用意されていますサーバーによってはいずれかが無効になっていることがあります。"
description1: "eGirlskeyには、使い方に応じて複数のタイムラインが用意されていますサーバーによってはいずれかが無効になっていることがあります。"
home: "あなたがフォローしているアカウントの投稿を見られます。"
local: "このサーバーにいるユーザー全員の投稿を見られます。"
social: "ホームタイムラインとローカルタイムラインの投稿が両方表示されます。"
@ -1415,7 +1415,7 @@ _initialTutorial:
description3: "その他にも、リストタイムラインやチャンネルタイムラインなどがあります。詳しくは{link}をご覧ください。"
_postNote:
title: "ノートの投稿設定"
description1: "Sharkeyにートを投稿する際には、様々なオプションの設定が可能です。投稿フォームはこのようになっています。"
description1: "eGirlskeyにートを投稿する際には、様々なオプションの設定が可能です。投稿フォームはこのようになっています。"
_visibility:
description: "ノートを表示できる相手を制限できます。"
public: "すべてのユーザーに公開。"
@ -1443,7 +1443,7 @@ _initialTutorial:
doItToContinue: "画像をセンシティブに設定すると先に進めるようになります。"
_done:
title: "チュートリアルは終了です🎉"
description: "ここで紹介した機能はほんの一部にすぎません。Sharkeyの使い方をより詳しく知るには、{link}をご覧ください。"
description: "ここで紹介した機能はほんの一部にすぎません。eGirlskeyの使い方をより詳しく知るには、{link}をご覧ください。"
_timelineDescription:
home: "ホームタイムラインでは、あなたがフォローしているアカウントの投稿を見られます。"
@ -1477,7 +1477,7 @@ _accountMigration:
moveTo: "このアカウントを新しいアカウントへ移行"
moveToLabel: "移行先のアカウント:"
moveCannotBeUndone: "アカウントを移行すると、取り消すことはできません。"
moveAccountDescription: "新しいアカウントへ移行します。\n ・フォロワーが新しいアカウントを自動でフォローします\n ・このアカウントからのフォローは全て解除されます\n ・このアカウントではートの作成などができなくなります\n\nフォロワーの移行は自動ですが、フォローの移行は手動で行う必要があります。移行前にこのアカウントでフォローエクスポートし、移行後すぐに移行先アカウントでインポートを行なってください。\nリスト・ミュート・ブロックについても同様ですので、手動で移行する必要があります。\n\nこの説明はこのサーバーSharkey v13.12.0以降の仕様です。Mastodonなどの他のActivityPubソフトウェアでは挙動が異なる場合があります。"
moveAccountDescription: "新しいアカウントへ移行します。\n ・フォロワーが新しいアカウントを自動でフォローします\n ・このアカウントからのフォローは全て解除されます\n ・このアカウントではートの作成などができなくなります\n\nフォロワーの移行は自動ですが、フォローの移行は手動で行う必要があります。移行前にこのアカウントでフォローエクスポートし、移行後すぐに移行先アカウントでインポートを行なってください。\nリスト・ミュート・ブロックについても同様ですので、手動で移行する必要があります。\n\nこの説明はこのサーバーeGirlskey v13.12.0以降の仕様です。Mastodonなどの他のActivityPubソフトウェアでは挙動が異なる場合があります。"
moveAccountHowTo: "アカウントの移行には、まずは移行先のアカウントでこのアカウントに対しエイリアスを作成します。\nエイリアス作成後、移行先のアカウントを次のように入力してください: @username@server.example.com"
startMigration: "移行する"
migrationConfirm: "本当にこのアカウントを {account} に移行しますか?一度移行すると取り消せず、二度とこのアカウントを元の状態で使用できなくなります。"
@ -1491,7 +1491,7 @@ _achievements:
_notes1:
title: "just setting up my shonk"
description: "初めてノートを投稿した"
flavor: "良いSharkeyライフを"
flavor: "良いeGirlskeyライフを"
_notes10:
title: "いくつかのノート"
description: "ートを10回投稿した"
@ -1587,7 +1587,7 @@ _achievements:
_login1000:
title: "ノートマスターⅢ"
description: "通算ログイン日数が1,000日"
flavor: "Sharkeyを使ってくれてありがとう"
flavor: "eGirlskeyを使ってくれてありがとう"
_noteClipped1:
title: "クリップせずにはいられないな"
description: "初めてノートをクリップした"
@ -1647,9 +1647,9 @@ _achievements:
title: "実績好き"
description: "実績一覧を3分以上眺め続けた"
_iLoveMisskey:
title: "I Love Sharkey"
description: "\"I ❤ #Sharkey\"を投稿した"
flavor: "Sharkeyを使ってくださりありがとうございます by 開発チーム"
title: "I Love eGirlskey"
description: "\"I ❤ #eGirlskey\"を投稿した"
flavor: "eGirlskeyを使ってくださりありがとうございます by 開発チーム"
_foundTreasure:
title: "宝探し"
description: "隠されたお宝を発見した"
@ -1657,7 +1657,7 @@ _achievements:
title: "ひとやすみ"
description: "クライアントを起動してから30分以上経過した"
_client60min:
title: "Sharkeyの見すぎ"
title: "eGirlskeyの見すぎ"
description: "クライアントを起動してから60分以上経過した"
_noteDeletedWithin1min:
title: "いまのなし"
@ -1728,7 +1728,7 @@ _achievements:
title: "テスト過剰"
description: "通知のテストをごく短時間のうちに連続して行った"
_tutorialCompleted:
title: "Sharkey初心者講座 修了証"
title: "eGirlskey初心者講座 修了証"
description: "チュートリアルを完了した"
_bubbleGameExplodingHead:
title: "🤯"
@ -1923,16 +1923,16 @@ _registry:
createKey: "キーを作成"
_aboutMisskey:
about: "Sharkeyは、Misskeyをベースにしたオープンソースのソフトウェアです。"
about: "eGirlskeyは、Misskeyをベースにしたオープンソースのソフトウェアです。"
contributors: "主なコントリビューター"
allContributors: "全てのコントリビューター"
source: "ソースコード"
original: "Misskey オリジナル"
original_sharkey: "Sharkey オリジナル"
thisIsModifiedVersion: "{name}はオリジナルのSharkeyを改変したバージョンを使用しています。"
translation: "Sharkeyを翻訳"
original_sharkey: "eGirlskey オリジナル"
thisIsModifiedVersion: "{name}はオリジナルのeGirlskeyを改変したバージョンを使用しています。"
translation: "eGirlskeyを翻訳"
donate: "Misskeyに寄付"
donate_sharkey: "Sharkeyに寄付"
donate_sharkey: "eGirlskeyに寄付"
morePatrons: "他にも多くの方が支援してくれています。ありがとうございます🥰"
patrons: "支援者"
projectMembers: "プロジェクトメンバー"

View file

@ -1314,7 +1314,7 @@ _initialAccountSetting:
pushNotificationDescription: "プッシュ通知を有効にすると{name}の通知をあんたのデバイスで受け取れるで。"
initialAccountSettingCompleted: "初期設定終わりや!"
haveFun: "{name}、楽しんでな~"
youCanContinueTutorial: "こんまま{name}(Sharkey)の使い方のチュートリアルにも行けるけど、ここでやめてすぐに使い始めてもええで。"
youCanContinueTutorial: "こんまま{name}(eGirlskey)の使い方のチュートリアルにも行けるけど、ここでやめてすぐに使い始めてもええで。"
startTutorial: "チュートリアルはじめる"
skipAreYouSure: "初期設定飛ばすか?"
laterAreYouSure: "初期設定あとでやり直すん?"
@ -1325,10 +1325,10 @@ _initialTutorial:
skipAreYouSure: "チュートリアルやめるか?"
_landing:
title: "チュートリアルによう来たな"
description: "ここでは、Sharkeyのカンタンな使い方とか機能を確かめれんで。"
description: "ここでは、eGirlskeyのカンタンな使い方とか機能を確かめれんで。"
_note:
title: "ノートってなんや?"
description: "Sharkeyでの投稿は「ート」って呼ばれてんで。ートは順々にタイムラインに載ってて、リアルタイムで新しくなってってんで。"
description: "eGirlskeyでの投稿は「ート」って呼ばれてんで。ートは順々にタイムラインに載ってて、リアルタイムで新しくなってってんで。"
reply: "返信もできるで。返信の返信もできるから、スレッドっぽく会話をそのまま続けれもするで。"
renote: "そのノートを自分のタイムラインに流して共有できるで。テキスト入れて引用してもええな。"
reaction: "ツッコミをつけることもできるで。細かいことは次のページや。"
@ -1342,7 +1342,7 @@ _initialTutorial:
reactDone: "「{undo}」ボタンでツッコミやめれるで。"
_timeline:
title: "タイムラインのしくみ"
description1: "Sharkeyには、いろいろタイムラインがあんでただ、サーバーによっては無効化されてるところもあるな。"
description1: "eGirlskeyには、いろいろタイムラインがあんでただ、サーバーによっては無効化されてるところもあるな。"
home: "あんたがフォローしてるアカウントの投稿が見れんねん。"
local: "このサーバーの中におる全員の投稿が見れるで。"
social: "ホームタイムラインの投稿もローカルタイムラインのも一緒に見れるで。"
@ -1351,7 +1351,7 @@ _initialTutorial:
description3: "その他にも、リストタイムラインとかチャンネルタイムラインとかがあんねん。詳しいのは{link}を見とき。"
_postNote:
title: "ノートの投稿設定"
description1: "Sharkeyにートを投稿するとき、いろんなオプションが付けれるで。投稿画面はこんな感じや。"
description1: "eGirlskeyにートを投稿するとき、いろんなオプションが付けれるで。投稿画面はこんな感じや。"
_visibility:
description: "ノートを見れる相手を制限できるわ。"
public: "みんなに見せるで。"
@ -1422,7 +1422,7 @@ _achievements:
_notes1:
title: "まいど!"
description: "初めてノート投稿したった"
flavor: "Sharkeyを楽しんでな"
flavor: "eGirlskeyを楽しんでな"
_notes10:
title: "ノートの天保山"
description: "ートを10回投稿した"
@ -1961,6 +1961,8 @@ _sfx:
note: "ノート"
noteMy: "ノート(自分)"
notification: "通知"
antenna: "アンテナ受信"
channel: "チャンネル通知"
reaction: "ツッコミ選んどるとき"
_soundSettings:
driveFile: "ドライブん中の音使う"
@ -1999,6 +2001,7 @@ _2fa:
registerTOTP: "認証アプリの設定はじめる"
step1: "ほんなら、{a}や{b}とかの認証アプリを使っとるデバイスにインストールしてな。"
step2: "次に、ここにあるQRコードをアプリでスキャンしてな。"
step2Click: "QRコード押したら、今使とる端末に入っとる認証アプリとかキーリングに登録できるで。"
step2Uri: "デスクトップアプリを使う時は次のURIを入れるで"
step3Title: "確認コードを入れてーや"
step3: "アプリに映っとる確認コード(トークン)を入れて終わりや。"
@ -2073,6 +2076,7 @@ _permissions:
"read:admin:server-info": "サーバーの情報見る"
"read:admin:show-moderation-log": "モデレーションログ見る"
"read:admin:show-user": "ユーザーのプライベートな情報見る"
"read:admin:show-users": "ユーザーのプライベートな情報見る"
"write:admin:suspend-user": "ユーザーを凍結"
"write:admin:unset-user-avatar": "ユーザーのアバターを削除"
"write:admin:unset-user-banner": "ユーザーのバナーを削除"

View file

@ -0,0 +1,16 @@
export class AddEgirlskeyUrls1727044684877 {
async up(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "repositoryUrl" SET DEFAULT 'https://gitdab.com/heartles/egirlskey/'`);
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "feedbackUrl" SET DEFAULT 'https://gitdab.com/heartles/egirlskey/issues/new'`);
await queryRunner.query(`UPDATE "meta" SET "repositoryUrl"=DEFAULT WHERE "repositoryUrl" IN ('https://activitypub.software/TransFem-org/Sharkey/','https://git.joinsharkey.org/Sharkey/Sharkey','https://github.com/transfem-org/sharkey','https://github.com/misskey-dev/misskey')`);
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl"=DEFAULT WHERE "feedbackUrl" IN ('https://activitypub.software/TransFem-org/Sharkey/-/issues/new', 'https://git.joinsharkey.org/Sharkey/Sharkey/issues/new/choose','https://github.com/transfem-org/sharkey/issues/new','https://github.com/misskey-dev/misskey/issues/new')`);
}
async down(queryRunner) {
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "repositoryUrl" SET DEFAULT 'https://activitypub.software/TransFem-org/Sharkey/'`);
await queryRunner.query(`ALTER TABLE "meta" ALTER COLUMN "feedbackUrl" SET DEFAULT 'https://activitypub.software/TransFem-org/Sharkey/-/issues/new'`);
await queryRunner.query(`UPDATE "meta" SET "repositoryUrl"=DEFAULT WHERE "repositoryUrl" IN ('https://gitdab.com/heartles/egirlskey/','https://git.joinsharkey.org/Sharkey/Sharkey','https://github.com/transfem-org/sharkey','https://github.com/misskey-dev/misskey')`);
await queryRunner.query(`UPDATE "meta" SET "feedbackUrl"=DEFAULT WHERE "feedbackUrl" IN ('https://gitdab.com/heartles/egirlskey/issues/new','https://git.joinsharkey.org/Sharkey/Sharkey/issues/new/choose','https://github.com/transfem-org/sharkey/issues/new','https://github.com/misskey-dev/misskey/issues/new')`);
}
}

View file

@ -33,25 +33,25 @@ function greet() {
if (!envOption.quiet) {
//#region Misskey logo
const v = `v${meta.version}`;
console.log(themeColor(' _____ _ _ '));
console.log(themeColor('/ ___| | | | '));
console.log(themeColor('\ `--.| |__ __ _ _ __| | _____ _ _ '));
console.log(themeColor(" `--. \ '_ \ / _` | '__| |/ / _ \ | | |"));
console.log(themeColor('/\__/ / | | | (_| | | | < __/ |_| |'));
console.log(themeColor('\____/|_| |_|\__,_|_| |_|\_\___|\__, |'));
console.log(themeColor(' __/ |'));
console.log(themeColor(' |___/ '));
console.log(themeColor(" _____ _ _ _ "));
console.log(themeColor(" | __ (_) | | | | "));
console.log(themeColor(" ___| | \/_ _ __| |___| | _____ _ _ "));
console.log(themeColor(" / _ \ | __| | '__| / __| |/ / _ \ | | |"));
console.log(themeColor("| __/ |_\ \ | | | \__ \ < __/ |_| |"));
console.log(themeColor(" \___|\____/_|_| |_|___/_|\_\___|\__, |"));
console.log(themeColor(" __/ |"));
console.log(themeColor(" |___/ "));
//#endregion
console.log(' Sharkey is an open-source decentralized microblogging platform.');
console.log(chalk.rgb(255, 136, 0)(' If you like Sharkey, please donate to support development. https://opencollective.com/sharkey'));
console.log(' eGirlskey is an open-source decentralized microblogging platform.');
console.log(chalk.rgb(255, 136, 0)(' If you like eGirlskey, please donate to support development. https://heartles.xyz'));
console.log('');
console.log(chalkTemplate`--- ${os.hostname()} {gray (PID: ${process.pid.toString()})} ---`);
}
bootLogger.info('Welcome to Sharkey!');
bootLogger.info(`Sharkey v${meta.version}`, null, true);
bootLogger.info('Welcome to eGirlskey!');
bootLogger.info(`eGirlskey v${meta.version}`, null, true);
}
/**
@ -74,7 +74,7 @@ export async function masterMain() {
process.exit(1);
}
bootLogger.succ('Sharkey initialized');
bootLogger.succ('eGirlskey initialized');
if (config.sentryForBackend) {
Sentry.init({

View file

@ -388,14 +388,14 @@ export class MiMeta {
@Column('varchar', {
length: 1024,
default: 'https://activitypub.software/TransFem-org/Sharkey/',
default: 'https://gitdab.com/heartles/egirlskey/',
nullable: false,
})
public repositoryUrl: string | null;
@Column('varchar', {
length: 1024,
default: 'https://activitypub.software/TransFem-org/Sharkey/-/issues/new',
default: 'https://gitdab.com/heartles/egirlskey/issues/new',
nullable: true,
})
public feedbackUrl: string | null;

View file

@ -76,7 +76,7 @@ export class NodeinfoServerService {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const document: any = {
software: {
name: 'sharkey',
name: 'egirlskey',
version: this.config.version,
homepage: nodeinfo_homepage,
repository: meta.repositoryUrl,

View file

@ -10,7 +10,7 @@ import { DI } from '@/di-symbols.js';
export const meta = {
tags: ['meta'],
description: 'Get Sharkey GH Sponsors',
description: 'Get eGirlskey GH Sponsors',
requireCredential: false,
requireCredentialSecureMode: false,
@ -43,7 +43,7 @@ export default class extends Endpoint<typeof meta, typeof paramDef> { // eslint-
};
try {
sponsors = await fetch('https://kaifa.ch/transfem-sponsors.json', { signal: AbortSignal.timeout(2000) })
sponsors = await fetch('https://heartles.xyz/egirls-sponsors.json', { signal: AbortSignal.timeout(2000) })
.then((response) => response.json());
await this.redisClient.set('sponsors', JSON.stringify(sponsors), 'EX', 3600);

View file

@ -16,14 +16,14 @@ export async function getInstance(
) {
return {
uri: config.url,
title: meta.name || 'Sharkey',
title: meta.name || 'eGirlskey',
short_description:
meta.description || 'This is a vanilla Sharkey Instance. It doesn\'t seem to have a description.',
meta.description || 'This is a vanilla eGirlskey Instance. It doesn\'t seem to have a description.',
description:
meta.description ||
'This is a vanilla Sharkey Instance. It doesn\'t seem to have a description.',
'This is a vanilla eGirlskey Instance. It doesn\'t seem to have a description.',
email: response.email || '',
version: `3.0.0 (compatible; Sharkey ${config.version})`,
version: `3.0.0 (compatible; eGirlskey ${config.version})`,
urls: response.urls,
stats: {
user_count: response.stats.user_count,

View file

@ -19,7 +19,7 @@ export function genOpenapiSpec(config: Config, includeSelfRef = false) {
externalDocs: {
description: 'Repository',
url: 'https://activitypub.software/TransFem-org/Sharkey',
url: 'https://gitdab.com/heartles/egirlskey',
},
servers: [{
@ -97,7 +97,7 @@ export function genOpenapiSpec(config: Config, includeSelfRef = false) {
description: desc,
externalDocs: {
description: 'Source code',
url: `https://activitypub.software/TransFem-org/Sharkey/-/tree/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`,
url: `https://gitdab.com/heartles/egirlskey/-/tree/develop/packages/backend/src/server/api/endpoints/${endpoint.name}.ts`,
},
...(endpoint.meta.tags ? {
tags: [endpoint.meta.tags[0]],

View file

@ -189,7 +189,7 @@ export class ClientServerService {
@bindThis
private async generateCommonPugData(meta: MiMeta) {
return {
instanceName: meta.name ?? 'Sharkey',
instanceName: meta.name ?? 'eGirlskey',
icon: meta.iconUrl,
appleTouchIcon: meta.app512IconUrl,
themeColor: meta.themeColor,
@ -451,7 +451,7 @@ export class ClientServerService {
fastify.get('/opensearch.xml', async (request, reply) => {
const meta = await this.metaService.fetch();
const name = meta.name ?? 'Sharkey';
const name = meta.name ?? 'eGirlskey';
let content = '';
content += '<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" xmlns:moz="http://www.mozilla.org/2006/browser/search/">';
content += `<ShortName>${name}</ShortName>`;

View file

@ -62,7 +62,7 @@ export class FeedService {
id: author.link,
title: `${author.name} (@${user.username}@${this.config.host})`,
updated: notes.length !== 0 ? this.idService.parse(notes[0].id).date : undefined,
generator: 'Sharkey',
generator: 'eGirlskey',
description: `${user.notesCount} Notes, ${profile.followingVisibility === 'public' ? user.followingCount : '?'} Following, ${profile.followersVisibility === 'public' ? user.followersCount : '?'} Followers${profile.description ? ` · ${profile.description}` : ''}`,
link: author.link,
image: user.avatarUrl ?? this.userEntityService.getIdenticonUrl(user),

View file

@ -245,7 +245,7 @@
font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif;
}
#sharkey_app,
#egirlskey_app,
#splash {
display: none !important;
}

View file

@ -8,7 +8,7 @@
font-family: BIZ UDGothic, Roboto, HelveticaNeue, Arial, sans-serif;
}
#sharkey_app,
#egirlskey_app,
#splash {
display: none !important;
}

View file

@ -1,6 +1,6 @@
{
"short_name": "Sharkey",
"name": "Sharkey",
"short_name": "eGirlskey",
"name": "eGirlskey",
"start_url": "/",
"display": "standalone",
"background_color": "#313a42",

View file

@ -7,36 +7,35 @@ doctype html
//
-
_____ _ _
/ ___| | | |
\ `--.| |__ __ _ _ __| | _____ _ _
`--. \ '_ \ / _` | '__| |/ / _ \ | | |
/\__/ / | | | (_| | | | < __/ |_| |
\____/|_| |_|\__,_|_| |_|\_\___|\__, |
_____ _ _ _
| __ (_) | | | |
___| | \/_ _ __| |___| | _____ _ _
/ _ \ | __| | '__| / __| |/ / _ \ | | |
| __/ |_\ \ | | | \__ \ < __/ |_| |
\___|\____/_|_| |_|___/_|\_\___|\__, |
__/ |
|___/
Thank you for using Sharkey!
Thank you for using eGirlskey!
If you are reading this message... how about joining the development?
https://activitypub.software/TransFem-org/Sharkey
https://gitdab.com/heartles/egirlskey
html
head
meta(charset='utf-8')
meta(name='application-name' content='Sharkey')
meta(name='application-name' content='eGirlskey')
meta(name='referrer' content='origin')
meta(name='theme-color' content= themeColor || '#86b300')
meta(name='theme-color-orig' content= themeColor || '#86b300')
meta(property='og:site_name' content= instanceName || 'Sharkey')
meta(property='og:site_name' content= instanceName || 'eGirlskey')
meta(property='instance_url' content= instanceUrl)
meta(name='viewport' content='width=device-width, initial-scale=1')
meta(name='format-detection' content='telephone=no,date=no,address=no,email=no,url=no')
link(rel='icon' href= icon || '/favicon.ico')
link(rel='apple-touch-icon' href= appleTouchIcon || '/apple-touch-icon.png')
link(rel='manifest' href='/manifest.json')
link(rel='search' type='application/opensearchdescription+xml' title=(title || "Sharkey") href=`${url}/opensearch.xml`)
link(rel='search' type='application/opensearchdescription+xml' title=(title || "eGirlskey") href=`${url}/opensearch.xml`)
link(rel='prefetch' href=serverErrorImageUrl)
link(rel='prefetch' href=infoImageUrl)
link(rel='prefetch' href=notFoundImageUrl)
@ -54,7 +53,7 @@ html
title
block title
= title || 'Sharkey'
= title || 'eGirlskey'
if noindex
meta(name='robots' content='noindex')
@ -65,7 +64,7 @@ html
block meta
block og
meta(property='og:title' content= title || 'Sharkey')
meta(property='og:title' content= title || 'eGirlskey')
meta(property='og:description' content= desc || '✨🌎✨ A interplanetary communication platform ✨🚀✨')
meta(property='og:image' content= img)
meta(property='twitter:card' content='summary')

View file

@ -4,8 +4,8 @@ html
head
meta(charset='utf-8')
meta(name='application-name' content='Sharkey')
title Sharkey Repair Tool
meta(name='application-name' content='eGirlskey')
title eGirlskey Repair Tool
style
include ../bios.css
script
@ -13,7 +13,7 @@ html
body
header
h1 Sharkey Repair Tool #{version}
h1 eGirlskey Repair Tool #{version}
main
div.tabs
button#ls edit local storage

View file

@ -4,8 +4,8 @@ html
head
meta(charset='utf-8')
meta(name='application-name' content='Sharkey')
title Sharkey Cli
meta(name='application-name' content='eGirlskey')
title eGirlskey Cli
style
include ../cli.css
script
@ -13,7 +13,7 @@ html
body
header
h1 Sharkey Cli #{version}
h1 eGirlskey Cli #{version}
main
div#form
textarea#text

View file

@ -2,31 +2,29 @@ doctype html
//
-
_____ _ _
/ ___| | | |
\ `--.| |__ __ _ _ __| | _____ _ _
`--. \ '_ \ / _` | '__| |/ / _ \ | | |
/\__/ / | | | (_| | | | < __/ |_| |
\____/|_| |_|\__,_|_| |_|\_\___|\__, |
_____ _ _ _
| __ (_) | | | |
___| | \/_ _ __| |___| | _____ _ _
/ _ \ | __| | '__| / __| |/ / _ \ | | |
| __/ |_\ \ | | | \__ \ < __/ |_| |
\___|\____/_|_| |_|___/_|\_\___|\__, |
__/ |
|___/
Thank you for using Sharkey!
Thank you for using eGirlskey!
If you are reading this message... how about joining the development?
https://activitypub.software/TransFem-org/Sharkey
https://gitdab.com/heartles/egirlskey
html
head
meta(charset='utf-8')
meta(name='viewport' content='width=device-width, initial-scale=1')
meta(name='application-name' content='Sharkey')
meta(name='application-name' content='eGirlskey')
meta(name='referrer' content='origin')
title
block title
= 'An error has occurred... | Sharkey'
= 'An error has occurred... | eGirlskey'
style
include ../error.css

View file

@ -4,7 +4,7 @@ html
#msg
script.
const msg = document.getElementById('msg');
const successText = `\nSuccess Flush! <a href="/">Back to Sharkey</a>\n成功しました。<a href="/">Sharkeyを開き直してください。</a>`;
const successText = `\nSuccess Flush! <a href="/">Back to eGirlskey</a>\n成功しました。<a href="/">eGirlskeyを開き直してください。</a>`;
message('Start flushing.');

View file

@ -4,7 +4,7 @@ html
head
meta(charset='utf-8')
meta(name='application-name' content='Sharkey')
meta(name='application-name' content='eGirlskey')
title= meta.name || host
style.
html, body {

View file

@ -25,7 +25,7 @@ import { fetchCustomEmojis } from '@/custom-emojis.js';
import { setupRouter } from '@/router/definition.js';
export async function common(createVue: () => App<Element>) {
console.info(`Sharkey v${version}`);
console.info(`eGirlskey v${version}`);
if (_DEV_) {
console.warn('Development mode!!!');
@ -256,7 +256,7 @@ export async function common(createVue: () => App<Element>) {
// https://github.com/misskey-dev/misskey/pull/8575#issuecomment-1114239210
// なぜか2回実行されることがあるため、mountするdivを1つに制限する
const rootEl = ((): HTMLElement => {
const MISSKEY_MOUNT_DIV_ID = 'sharkey_app';
const MISSKEY_MOUNT_DIV_ID = 'egirlskey_app';
const currentRoot = document.getElementById(MISSKEY_MOUNT_DIV_ID);

View file

@ -254,7 +254,7 @@ export async function mainBoot() {
}
const modifiedVersionMustProminentlyOfferInAgplV3Section13Read = miLocalStorage.getItem('modifiedVersionMustProminentlyOfferInAgplV3Section13Read');
if (modifiedVersionMustProminentlyOfferInAgplV3Section13Read !== 'true' && instance.repositoryUrl !== 'https://activitypub.software/TransFem-org/Sharkey/') {
if (modifiedVersionMustProminentlyOfferInAgplV3Section13Read !== 'true' && instance.repositoryUrl !== 'https://gitdab.com/heartles/egirlskey/') {
const { dispose } = popup(defineAsyncComponent(() => import('@/components/MkSourceCodeAvailablePopup.vue')), {}, {
closed: () => dispose(),
});

View file

@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
</I18n>
<div style="margin-top: 0.2em;">
<MkLink target="_blank" url="https://opencollective.com/sharkey">{{ i18n.ts.learnMore }}</MkLink>
<MkLink target="_blank" url="https://heartles.xyz">{{ i18n.ts.learnMore }}</MkLink>
</div>
</div>
<div v-if="instance.donationUrl" :class="$style.text">

View file

@ -920,7 +920,7 @@ async function post(ev?: MouseEvent) {
const text = postData.text ?? '';
const lowerCase = text.toLowerCase();
if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('sharkey')) {
if ((lowerCase.includes('love') || lowerCase.includes('❤')) && lowerCase.includes('egirlskey')) {
claimAchievement('iLoveMisskey');
}
if ([

View file

@ -45,7 +45,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #label>{{ i18n.ts.basicNotesBeforeCreateAccount }}</template>
<template #suffix><i v-if="agreeNote" class="ti ti-check" style="color: var(--success)"></i></template>
<a href="https://activitypub.software/TransFem-org/Sharkey/-/blob/stable/IMPORTANT_NOTES.md" class="_link" target="_blank">{{ i18n.ts.basicNotesBeforeCreateAccount }} <i class="ti ti-external-link"></i></a>
<a href="https://gitdab.com/heartles/egirlskey/-/blob/stable/IMPORTANT_NOTES.md" class="_link" target="_blank">{{ i18n.ts.basicNotesBeforeCreateAccount }} <i class="ti ti-external-link"></i></a>
<MkSwitch :modelValue="agreeNote" style="margin-top: 16px;" data-cy-signup-rules-notes-agree @update:modelValue="updateAgreeNote">{{ i18n.ts.agree }}</MkSwitch>
</MkFolder>

View file

@ -27,7 +27,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</I18n>
<I18n :src="i18n.ts.correspondingSourceIsAvailable" tag="span">
<template #anchor>
<MkA to="/about-sharkey" class="_link">{{ i18n.ts.aboutMisskey }}</MkA>
<MkA to="/about-egirlskey" class="_link">{{ i18n.ts.aboutMisskey }}</MkA>
</template>
</I18n>
</div>

View file

@ -27,7 +27,7 @@ const modal = shallowRef<InstanceType<typeof MkModal>>();
const whatIsNew = () => {
modal.value?.close();
window.open(`https://activitypub.software/TransFem-org/Sharkey/-/releases/${version}`, '_blank');
window.open(`https://gitdab.com/heartles/egirlskey/-/releases/${version}`, '_blank');
};
onMounted(() => {

View file

@ -26,7 +26,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</div>
<div class="_gaps_s" :class="$style.mainActions">
<MkButton :class="$style.mainAction" full rounded gradate data-cy-signup style="margin-right: 12px;" @click="signup()">{{ i18n.ts.joinThisServer }}</MkButton>
<MkButton :class="$style.mainAction" full rounded link to="https://joinsharkey.org/#findaninstance">{{ i18n.ts.exploreOtherServers }}</MkButton>
<!--<MkButton :class="$style.mainAction" full rounded link to="https://joinsharkey.org/#findaninstance">{{ i18n.ts.exploreOtherServers }}</MkButton>-->
<MkButton :class="$style.mainAction" full rounded data-cy-signin @click="signin()">{{ i18n.ts.login }}</MkButton>
</div>
</div>

View file

@ -18,7 +18,7 @@ export const langs = _LANGS_;
const preParseLocale = miLocalStorage.getItem('locale');
export let locale = preParseLocale ? JSON.parse(preParseLocale) : null;
export const version = _VERSION_;
export const instanceName = siteName === 'Sharkey' || siteName == null ? host : siteName;
export const instanceName = siteName === 'eGirlskey' || siteName == null ? host : siteName;
export const ui = miLocalStorage.getItem('ui');
export const debug = miLocalStorage.getItem('debug') === 'true';

View file

@ -31,7 +31,7 @@
</head>
<body>
<div id="sharkey_app"></div>
<div id="egirlskey_app"></div>
<script type="module" src="./_dev_boot_.ts"></script>
</body>
</html>

View file

@ -12,7 +12,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div v-panel class="about">
<div ref="containerEl" class="container" :class="{ playing: easterEggEngine != null }">
<img src="/client-assets/about-icon.png" alt="" class="icon" draggable="false" @load="iconLoaded" @click="gravity"/>
<div class="misskey">Sharkey</div>
<div class="misskey">eGirlskey</div>
<div class="version">v{{ version }}</div>
<span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }">
<MkCustomEmoji v-if="emoji.emoji[0] === ':'" class="emoji" :name="emoji.emoji" :normal="true" :noStyle="true" :fallbackToImage="true"/>
@ -22,12 +22,12 @@ SPDX-License-Identifier: AGPL-3.0-only
<button v-if="thereIsTreasure" class="_button treasure" @click="getTreasure"><img src="/fluent-emoji/1f3c6.png" class="treasureImg"></button>
</div>
<div style="text-align: center;">
{{ i18n.ts._aboutMisskey.about }}<br><a href="https://joinsharkey.org/" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a>
{{ i18n.ts._aboutMisskey.about }}<br><a href="https://gitdab.com/heartles/egirlskey" target="_blank" class="_link">{{ i18n.ts.learnMore }}</a>
</div>
<div v-if="$i != null" style="text-align: center;">
<MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #Sharkey</MkButton>
<MkButton primary rounded inline @click="iLoveMisskey">I <Mfm text="$[jelly ❤]"/> #eGirlskey</MkButton>
</div>
<FormSection v-if="instance.repositoryUrl !== 'https://activitypub.software/TransFem-org/Sharkey/'">
<FormSection v-if="instance.repositoryUrl !== 'https://gitdab.com/heartles/egirlskey/'">
<div class="_gaps_s">
<MkInfo>
{{ i18n.tsx._aboutMisskey.thisIsModifiedVersion({ name: instance.name }) }}
@ -36,7 +36,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts._aboutMisskey.source }}
</FormLink>
<FormLink v-if="instance.providesTarball" :to="`/tarball/sharkey-${version}.tar.gz`" external>
<FormLink v-if="instance.providesTarball" :to="`/tarball/egirlskey-${version}.tar.gz`" external>
<template #icon><i class="ti ti-download"></i></template>
{{ i18n.ts._aboutMisskey.source }}
<template #suffix>Tarball</template>
@ -46,6 +46,15 @@ SPDX-License-Identifier: AGPL-3.0-only
</MkInfo>
</div>
</FormSection>
<FormSection>
<div class="_gaps_s">
<FormLink to="https://gitdab.com/heartles/egirlskey/" external>
<template #icon><i class="ph-code ph-bold ph-lg"></i></template>
{{ i18n.ts._aboutMisskey.source }} ({{ i18n.ts._aboutMisskey.original_egirlskey }})
<template #suffix>Gitdab</template>
</FormLink>
</div>
</FormSection>
<FormSection>
<div class="_gaps_s">
<FormLink to="https://activitypub.software/TransFem-org/Sharkey/" external>
@ -76,6 +85,15 @@ SPDX-License-Identifier: AGPL-3.0-only
</FormSection>
<FormSection>
<template #label>{{ i18n.ts._aboutMisskey.projectMembers }}</template>
<div :class="$style.contributors" style="margin-bottom: 8px;">
<a href="https://gitdab.com/heartles" target="_blank" :class="$style.contributor">
<img src="https://gitdab.com/avatar/23b9d5e61a48e641d1cd3562ea40c0f3?size=128" :class="$style.contributorAvatar">
<span :class="$style.contributorUsername">@heartles</span>
</a>
</div>
</FormSection>
<FormSection>
<template #label>Sharkey Contributors</template>
<div :class="$style.contributors" style="margin-bottom: 8px;">
<a href="https://activitypub.software/dakkar" target="_blank" :class="$style.contributor">
<img src="https://secure.gravatar.com/avatar/c71b315eed7c63ff94c42b1b3e8dbad1?s=192&d=identicon" :class="$style.contributorAvatar">
@ -113,7 +131,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<template #description><MkLink url="https://activitypub.software/TransFem-org/Sharkey/-/graphs/develop">{{ i18n.ts._aboutMisskey.allContributors }}</MkLink></template>
</FormSection>
<FormSection>
<template #label>{{ i18n.ts._aboutMisskey.testers }}</template>
<template #label>Sharkey Testers</template>
<div :class="$style.contributors" style="margin-bottom: 8px;">
<a href="https://antani.cyou/@lucent" target="_blank" :class="$style.contributor">
<img src="https://antani.cyou/proxy/avatar.webp?url=https%3A%2F%2Fantani.cyou%2Ffiles%2Fa2944119-024c-4abd-86e5-64bf0d30b26f&avatar=1" :class="$style.contributorAvatar">

View file

@ -22,16 +22,16 @@ SPDX-License-Identifier: AGPL-3.0-only
<FormSection>
<div class="_gaps_m">
<MkKeyValue :copy="version">
<template #key>Sharkey</template>
<template #key>eGirlskey</template>
<template #value>{{ version }}</template>
</MkKeyValue>
<div v-html="i18n.tsx.poweredByMisskeyDescription({ name: instance.name ?? host })">
</div>
<FormLink to="/about-sharkey">
<FormLink to="/about-egirlskey">
<template #icon><i class="ti ti-info-circle"></i></template>
{{ i18n.ts.aboutMisskey }}
</FormLink>
<FormLink v-if="instance.repositoryUrl || instance.providesTarball" :to="instance.repositoryUrl || `/tarball/sharkey-${version}.tar.gz`" external>
<FormLink v-if="instance.repositoryUrl || instance.providesTarball" :to="instance.repositoryUrl || `/tarball/egirlskey-${version}.tar.gz`" external>
<template #icon><i class="ti ti-code"></i></template>
{{ i18n.ts.sourceCode }}
</FormLink>

View file

@ -11,7 +11,8 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="shape2"></div>
<div class="logo-wrapper">
<div class="powered-by">Powered by</div>
<img :src="misskeysvg" class="misskey"/>
eGirlskey
<!--<img :src="misskeysvg" class="misskey"/>-->
</div>
<div class="emojis">
<MkEmoji :normal="true" :noStyle="true" emoji="👍"/>

View file

@ -9,7 +9,7 @@ SPDX-License-Identifier: AGPL-3.0-only
<div :class="$style.formContainer">
<form :class="$style.form" class="_panel" @submit.prevent="submit()">
<div :class="$style.title">
<div>Welcome to Sharkey!</div>
<div>Welcome to eGirlskey!</div>
<div :class="$style.version">v{{ version }}</div>
</div>
<div class="_gaps_m" style="padding: 32px;">

View file

@ -204,8 +204,8 @@ const routes: RouteDef[] = [{
path: '/contact',
component: page(() => import('@/pages/contact.vue')),
}, {
path: '/about-sharkey',
component: page(() => import('@/pages/about-sharkey.vue')),
path: '/about-egirlskey',
component: page(() => import('@/pages/about-egirlskey.vue')),
}, {
path: '/invite',
name: 'invite',

View file

@ -1,5 +1,5 @@
/*
* SPDX-FileCopyrightText: dakkar and other Sharkey contributors
* SPDX-FileCopyrightText: dakkar and other eGirlskey contributors
* SPDX-License-Identifier: AGPL-3.0-only
*/

View file

@ -126,7 +126,7 @@ export function openInstanceMenu(ev: MouseEvent) {
type: 'link',
text: i18n.ts.aboutMisskey,
icon: 'sk-icons sk-shark sk-icons-lg',
to: '/about-sharkey',
to: '/about-egirlskey',
}], ev.currentTarget ?? ev.target, {
align: 'left',
});

View file

@ -269,7 +269,7 @@ body {
overscroll-behavior: none;
}
#sharkey_app {
#egirlskey_app {
width: 100%;
height: 100%;
overflow: clip;

View file

@ -256,7 +256,7 @@ body {
overscroll-behavior: none;
}
#sharkey_app {
#egirlskey_app {
width: 100%;
height: 100%;
overflow: clip;

View file

@ -4258,7 +4258,7 @@ declare module '../api.js' {
): Promise<SwitchCaseResponseType<E, P>>;
/**
* Get Sharkey GH Sponsors
* Get eGirlskey GH Sponsors
*
* **Credential required**: *No*
*/

View file

@ -3673,7 +3673,7 @@ export type paths = {
'/sponsors': {
/**
* sponsors
* @description Get Sharkey GH Sponsors
* @description Get eGirlskey GH Sponsors
*
* **Credential required**: *No*
*/
@ -27988,7 +27988,7 @@ export type operations = {
};
/**
* sponsors
* @description Get Sharkey GH Sponsors
* @description Get eGirlskey GH Sponsors
*
* **Credential required**: *No*
*/

View file

@ -265,7 +265,7 @@ export async function createEmptyNotification(): Promise<void> {
await globalThis.registration.showNotification(
(new URL(origin)).host,
{
body: `Sharkey v${_VERSION_}`,
body: `eGirlskey v${_VERSION_}`,
silent: true,
badge: iconUrl('null'),
tag: 'read_notification',