mirror of
https://github.com/avinal/sciezka.git
synced 2026-07-03 23:30:09 +05:30
fce169f3f7
Assisted-by: Claude Code Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com>
100 lines
3.5 KiB
Markdown
100 lines
3.5 KiB
Markdown
# Sciezka
|
|
|
|
A fast, Spotlight-style browser extension for searching tabs, history, bookmarks, and recently closed tabs. Built with vanilla TypeScript — no framework dependencies.
|
|
|
|
*Sciezka* means "path" in Polish.
|
|
|
|
## Why?
|
|
|
|
I relied on [Saka](https://github.com/lusakasa/saka) for years to quickly jump between tabs, search history, and find bookmarks — all from the keyboard. It stopped being maintained. I couldn't find a replacement that was as fast and keyboard-driven, so I built one.
|
|
|
|
## Features
|
|
|
|
- **Fuzzy search** across open tabs, browsing history, bookmarks, and recently closed tabs
|
|
- **Three search methods**: fuzzy (fzy algorithm), full-text, and prefix matching
|
|
- **Keyboard-driven**: navigate entirely with keyboard shortcuts
|
|
- **Spotlight-style overlay**: appears on any page without leaving your current context
|
|
- **Match highlighting**: matched characters highlighted in search results
|
|
- **Configurable**: set default search method and mode order via the options page
|
|
|
|
### From source
|
|
|
|
```bash
|
|
git clone https://github.com/avinal/sciezka.git
|
|
cd sciezka
|
|
```
|
|
|
|
Load as a temporary extension in Firefox: `about:debugging` > This Firefox > Load Temporary Add-on > select `manifest.json`.
|
|
|
|
## Usage
|
|
|
|
Press **Ctrl+Space** to open the search overlay on any page.
|
|
|
|
| Key | Action |
|
|
|---|---|
|
|
| `Ctrl+Space` | Toggle open/close |
|
|
| `Esc` | Close |
|
|
| `Up/Down` | Navigate results |
|
|
| `Enter` | Open selected result |
|
|
| `Ctrl+Shift+Enter` | Open in new tab |
|
|
| `Tab` / `Shift+Tab` | Cycle through modes |
|
|
| `Ctrl+F` | Cycle search method (fuzzy / full-text / prefix) |
|
|
| `Ctrl+D` | Close selected tab (Tabs mode only) |
|
|
|
|
### Modes
|
|
|
|
- **Tabs** — open tabs in all windows
|
|
- **History** — browsing history
|
|
- **Bookmarks** — saved bookmarks
|
|
- **Closed** — recently closed tabs
|
|
|
|
## Building
|
|
|
|
### Requirements
|
|
|
|
- **OS**: Any platform that supports Node.js (Linux, macOS, Windows)
|
|
- **Node.js**: v18 or later — [install instructions](https://nodejs.org/)
|
|
- **npm**: comes bundled with Node.js
|
|
|
|
### Build steps
|
|
|
|
```bash
|
|
git clone https://github.com/avinal/sciezka.git
|
|
cd sciezka
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
`npm run build` runs `node build.mjs`, which uses [esbuild](https://esbuild.github.io/) to compile three TypeScript entry points (`src/background.ts`, `src/content.ts`, `src/sciezka.ts`) into bundled JavaScript files in the `dist/` directory. No minification or obfuscation is applied.
|
|
|
|
The built extension files are:
|
|
- `dist/background.js` — background service worker
|
|
- `dist/content.js` — content script
|
|
- `dist/sciezka.js` — search UI logic
|
|
|
|
Other commands:
|
|
- `npm run watch` — rebuild on file changes
|
|
- `npm run typecheck` — run TypeScript type checking
|
|
- `npm run lint` — validate extension with web-ext
|
|
|
|
### Packaging for Firefox
|
|
|
|
To create a `.zip` (which Firefox also accepts as `.xpi`) for sideloading:
|
|
|
|
```bash
|
|
npm run build
|
|
npx web-ext build --source-dir . --artifacts-dir ./artifacts --overwrite-dest \
|
|
--ignore-files "src/" "tsconfig.json" "build.mjs" "package.json" \
|
|
"package-lock.json" "node_modules/" "artifacts/" ".github/"
|
|
```
|
|
|
|
This produces `artifacts/sciezka-<version>.zip`. To install it in Firefox, go to `about:addons` > gear icon > Install Add-on From File.
|
|
|
|
## License
|
|
|
|
MIT
|
|
|
|
## Disclaimer
|
|
|
|
I have no practical knowledge of working with TypeScript or Mozilla Extensions. I created this extention mostly using Claude because the one I was using is not longer maintained. I hope to maintain this for long time. If you find any issues/concerns please feel free to contact me or open an issue.
|