{"id":22997921,"url":"https://github.com/fairybow/fernanda","last_synced_at":"2026-04-01T21:05:30.534Z","repository":{"id":312353100,"uuid":"1046449094","full_name":"fairybow/Fernanda","owner":"fairybow","description":"Fernanda — a plain-text-first workbench for creative writing","archived":false,"fork":false,"pushed_at":"2026-03-27T15:03:09.000Z","size":15713,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-27T15:59:12.190Z","etag":null,"topics":["cpp","creative","creative-writing","desktop","linux","macos","novel-writing","offline","productivity","qt","text-editor","windows","writing-software","writing-tool"],"latest_commit_sha":null,"homepage":"https://github.com/fairybow/Fernanda","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fairybow.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-28T17:49:20.000Z","updated_at":"2026-03-26T02:26:55.000Z","dependencies_parsed_at":"2025-08-30T03:11:14.182Z","dependency_job_id":"b493ca40-d02c-463d-a32b-ea75aaab4762","html_url":"https://github.com/fairybow/Fernanda","commit_stats":null,"previous_names":["fairybow/fernanda"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/fairybow/Fernanda","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fairybow%2FFernanda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fairybow%2FFernanda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fairybow%2FFernanda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fairybow%2FFernanda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fairybow","download_url":"https://codeload.github.com/fairybow/Fernanda/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fairybow%2FFernanda/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","creative","creative-writing","desktop","linux","macos","novel-writing","offline","productivity","qt","text-editor","windows","writing-software","writing-tool"],"created_at":"2024-12-15T06:09:40.828Z","updated_at":"2026-04-01T21:05:30.527Z","avatar_url":"https://github.com/fairybow.png","language":"C++","readme":"\u003cp align=\"center\"\u003e\n    \u003cimg src=\"Fernanda/resources/banner/Readme Banner.png\" alt=\"ASCII banner\" width=\"640\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\u003cb\u003eA plain text editor for drafting long-form fiction\u003c/b\u003e\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-GPL%203-red.svg?style=for-the-badge\" alt=\"License GPL 3\"\u003e\u003c/a\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Platform-Windows%20(x64)-blue.svg?style=for-the-badge\" alt=\"Platform Windows (x64)\"\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"https://github.com/fairybow/Fernanda/releases\"\u003e\u003cb\u003eReleases\u003c/b\u003e\u003c/a\u003e •\n    \u003ca href=\"Fernanda/docs\"\u003e\u003cb\u003eDocumentation\u003c/b\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n![screenshot](Fernanda/resources/screenshots/1.apng)\n\nFernanda is a plain-text-first workbench for creative writing. Work on single files like a notepad or organize whole projects in [Notebooks (`.fnx`)](Fernanda/docs/Notebooks.md).\n\n(Mac and Linux support is planned!)\n\n## Features\n\nFernanda offers two workspace types: a **Notepad** for working directly on the OS filesystem and **Notebooks** for organizing whole projects inside a single, portable `.fnx` archive. Both support multiple windows, tabbed editing, and drag-and-drop.\n\n- Distraction-free editor with line numbers, current line highlight, and selection handles\n- Key filters for auto-close, smart quotes, and other typing enhancements\n- Notebook file management with virtual folders, drag-and-drop tree, import, and a soft-delete trash system\n- Editor themes (and user theme support via `~/.fernanda/themes` with hot reload)\n- Cascading settings: per-Notebook settings inherit from Notepad defaults\n- Word counter with selection-aware counting and adaptive performance\n- PDF and image viewing\n\nSee [Features.md](Fernanda/docs/Features.md) for the full list.\n\n## Installation\n\n**First release coming soon.** (Test releases available!)\n\n\u003e [!IMPORTANT]\n\u003e You should not trust your writing with any version of this software less than 1.0.0 (not released yet)! Regardless, always make regular backups of your work.\n\n## Usage\n\nFernanda accepts file paths as arguments. Valid `.fnx` files open in their own Notebook, and everything else opens in Notepad.\n\nOptional flags:\n\n- `--verbose`: enables debug-level logging to file (default is info-level and above)\n- `--log-viewer`: opens an in-app log viewer window for the session\n\nLog files are stored in `~/.fernanda/logs/` and pruned automatically.\n\n## Built with\n\n![C++](https://img.shields.io/badge/C++-20-blue?style=for-the-badge\u0026logo=C%2B%2B)\n[![Qt](https://img.shields.io/badge/Qt-6.10-brightgreen?style=for-the-badge\u0026logo=qt)](https://qt.io/)\n[![miniz](https://img.shields.io/badge/miniz-3.1-yellow.svg?style=for-the-badge)](https://github.com/richgel999/miniz)\n\n(See [Dependencies.md](Fernanda/docs/Dependencies.md))\n\n## Building\n\n### Requirements\n\n- C++20\n- Qt 6.10.2 (with Qt Image Formats and Qt PDF)\n- CMake 3.21+\n\n### Windows (Visual Studio)\n\n1. Install the [Qt Visual Studio Tools](https://marketplace.visualstudio.com/items?itemName=TheQtCompany.QtVisualStudioTools2022) extension\n2. Clone\n3. Open the `Fernanda/` directory in Visual Studio\n4. The Qt VS Tools extension will generate a `CMakeUserPresets.json` with your Qt path\n5. Build and run\n\n## Contributing\n\nHey! Read Fernanda's Code! (I'm proud of it.)\n\nFernanda prioritizes readable, maintainable code and follows conventional best practices pragmatically (not dogmatically). Throughout, simple solutions are preferred over premature abstractions. Objects and namespaces stay focused, and most files are just a few hundred lines, with about two barely exceeding 1,000. You will not find a 10,000 line `MainWindow` or anything like it.\n\nFernanda's [architecture](Fernanda/docs/Architecture.md) was carefully considered. I've landed on what I think is a simple but highly flexible interworking of common architectural patterns designed to keep service objects in their lanes while allowing lateral communication across a given Workspace.\n\nBut, that all said, there are always things to improve, I'm always learning, and I'll always need some help. Take a look around the repository and get to know the code. If something seems off to you or you have something new in mind, take a look at [CONTRIBUTING.md](CONTRIBUTING.md), open an issue, and we'll discuss a PR.\n\n## License\n\nFernanda is free software, redistributable and/or modifiable under the terms of the [GPL 3 License](LICENSE). It's distributed in the hope that it will be useful but without any warranty (even the implied warranty of merchantability or fitness for a particular purpose).\n\n##\n\nI think, in part, I made this because I wanted to put off writing for as long as possible (as writers are wont to do). But I also wanted to make something all my own, something difficult yet rewarding that was way out of my realm of experience. It's taken forever, and it's still not done (it'll never be *done*-done), but it's well on its way now. Thanks for stopping by, and I hope we'll meet again.\n\n\u003e You have to be all kinds of stupid to say *\"I can do this.\"*\n\n– Linus Torvalds","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffairybow%2Ffernanda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffairybow%2Ffernanda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffairybow%2Ffernanda/lists"}