Skip to content

Commit 75b82c8

Browse files
chore(release): Bump version to 1.4.10 and update notices (#479)
- Updated CONTRIBUTING.md to reflect modern contributions workflow and licensing agreement. - Clarified the project is licensed under GNU AGPLv3. - Bumped version to 1.4.10 in gradle.properties.
1 parent 0ef2b3c commit 75b82c8

4 files changed

Lines changed: 137 additions & 37 deletions

File tree

CONTRIBUTING.md

Lines changed: 130 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,159 @@
11
# Contributing to Askimo
22

3-
Thanks for considering a contribution! We welcome issues, feature requests, and pull requests.
4-
To keep contributions clear and legally safe for everyone, Askimo uses the Developer Certificate of Origin (DCO).
3+
Thanks for considering a contribution! We welcome bug reports, feature requests, and pull requests.
54

6-
# 📝 Developer Certificate of Origin (DCO)
5+
## Ways to Contribute
76

8-
The DCO is a lightweight alternative to a Contributor License Agreement (CLA).
9-
By signing off your commits, you certify that:
7+
- **Bug reports** — open an issue with steps to reproduce, expected vs. actual behavior, and your OS/version
8+
- **Feature requests** — open an issue describing the use case and why it fits the project
9+
- **Code contributions** — pick up an open issue (look for `good first issue` labels) or propose something new
1010

11-
> The contribution is your original work, or you have the right to submit it under the project’s license, and you
12-
> agree it can be distributed under the AGPLv3 License.
11+
Before opening a new issue, please search existing ones to avoid duplicates.
1312

14-
The full text is available here: https://developercertificate.org/
13+
## Development Setup
1514

16-
## ✅ How to sign off a commit
15+
Requirements: **JDK 21+**, **Gradle** (wrapper included).
1716

18-
When you make a commit, add the -s flag:
17+
```bash
18+
# Clone your fork
19+
git clone https://github.com/<your-username>/askimo.git
20+
cd askimo
21+
22+
# Build everything
23+
./gradlew build
24+
25+
# Run the desktop app
26+
./gradlew :desktop:run
27+
```
28+
29+
See [`AGENTS.md`](AGENTS.md) for a full breakdown of the module structure and key files.
30+
31+
## Code Style
32+
33+
Askimo uses **Spotless** (ktlint) and **Detekt** to enforce consistent formatting and static analysis. Run these before every commit:
34+
35+
```bash
36+
# Auto-fix formatting
37+
./gradlew spotlessApply
38+
39+
# Check only (what CI runs)
40+
./gradlew spotlessCheck
41+
42+
# Static analysis
43+
./gradlew detekt
44+
```
45+
46+
### Optional: install the pre-commit hook
47+
48+
A pre-commit hook is provided that runs `spotlessApply` and `detekt` automatically on every `git commit`:
1949

2050
```bash
21-
git commit -s -m "Add new feature"
51+
sh tools/git/pre-commit
2252
```
2353

24-
This appends a Signed-off-by line to your commit message, e.g.:
54+
This installs the hook into `.git/hooks/pre-commit`. You only need to run it once per clone.
55+
56+
Key style rules enforced by ktlint:
57+
- 4-space indentation
58+
- No wildcard imports
59+
- Trailing newline on all files
60+
- All source files must include the license header (`HEADER-SRC`)
61+
62+
PRs that fail `spotlessCheck` will not be merged.
63+
64+
## Running Tests
2565

2666
```bash
67+
# Run all tests
68+
./gradlew test
69+
70+
# Run tests for a specific module
71+
./gradlew :shared:test
72+
```
73+
74+
Please make sure all tests pass locally before opening a PR. If you are adding new functionality, include tests for it.
75+
76+
## Branch & PR Workflow
77+
78+
1. **Fork** the repository and create a branch from `main`:
79+
```bash
80+
git checkout -b feat/my-feature
81+
```
82+
2. Make your changes, following the code style rules above.
83+
3. Run `./gradlew spotlessApply` and `./gradlew test`.
84+
4. Commit with a sign-off (see [DCO](#-developer-certificate-of-origin-dco) below).
85+
5. Push your branch and open a Pull Request against `main`.
86+
6. Fill in the PR description: what changed, why, and how to test it.
87+
88+
Keep PRs focused — one feature or fix per PR makes review faster.
89+
90+
## Commit Messages
91+
92+
We follow **Conventional Commits**:
93+
94+
```
95+
<type>(<scope>): <short description>
96+
97+
[optional body]
98+
2799
Signed-off-by: Your Name <your.email@example.com>
28100
```
29101

30-
## 🔄 Amending a commit to add a sign-off
102+
Common types: `feat`, `fix`, `docs`, `refactor`, `test`, `chore`.
103+
104+
Examples:
105+
```
106+
feat(desktop): add DeepSeek provider support
107+
fix(desktop): handle missing API key gracefully
108+
docs: update CONTRIBUTING with test instructions
109+
```
110+
111+
## 📝 Developer Certificate of Origin (DCO)
112+
113+
The DCO is a lightweight alternative to a CLA. By signing off your commits, you certify that:
114+
115+
> The contribution is your original work, or you have the right to submit it under the project's
116+
> license, and you agree it can be distributed under the AGPLv3 License.
117+
118+
Full text: https://developercertificate.org/
119+
120+
### Signing off a commit
121+
122+
Add the `-s` flag when committing:
31123

32-
If you forgot to sign off:
124+
```bash
125+
git commit -s -m "feat: add new feature"
126+
```
127+
128+
This appends a `Signed-off-by` line to your commit message:
129+
130+
```
131+
Signed-off-by: Your Name <your.email@example.com>
132+
```
133+
134+
> **Note:** `-s` (DCO sign-off) is different from `-S` (GPG cryptographic signing). Only `-s` is required here.
135+
136+
### Forgot to sign off?
137+
138+
Single commit:
33139
```bash
34140
git commit --amend -s
35141
git push --force-with-lease
36142
```
37143

38-
For multiple commits:
144+
Multiple commits:
39145
```bash
40146
git rebase --exec 'git commit --amend -s --no-edit' main
41147
git push --force-with-lease
42148
```
43149

44-
## 🤖 Enforcing DCO
150+
The **DCO GitHub App** automatically checks every commit in a PR. PRs without sign-offs will be blocked until all commits are signed.
151+
152+
## License
153+
154+
By contributing to Askimo, you agree that your contributions will be licensed under the
155+
[GNU AGPLv3 License](LICENSE).
156+
157+
## Questions?
45158

46-
To make sure every PR is compliant, we use the **DCO GitHub App**.
47-
It automatically checks for the `Signed-off-by` line on each commit.
48-
PRs without it will be flagged until all commits are signed.
159+
Open a [GitHub Discussion](https://github.com/askimo-ai/askimo/discussions) or file an issue — we're happy to help.

NOTICE

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,11 @@
11
Askimo
2-
Copyright 2025 Askimo
2+
Copyright 2025–2026 Askimo Contributors
33

4-
This product includes software developed at:
4+
This product is licensed under the GNU Affero General Public License v3.0 (AGPLv3).
5+
You may obtain a copy of the License at:
56

6-
Askimo Project (https://github.com/askimo-ai/askimo)
7+
https://www.gnu.org/licenses/agpl-3.0.en.html
78

8-
Licensed under the AGPLv3 (the "License");
9-
you may not use this file except in compliance with the License.
10-
You may obtain a copy of the License at
9+
Source code is available at:
1110

12-
https://www.gnu.org/licenses/agpl-3.0.en.html
13-
14-
Unless required by applicable law or agreed to in writing,
15-
software distributed under the License is distributed on an
16-
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
17-
either express or implied. See the License for the specific
18-
language governing permissions and limitations under the License.
11+
https://github.com/askimo-ai/askimo

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Project metadata
22
projectGroup=io.askimo
3-
projectVersion=1.4.9
3+
projectVersion=1.4.10
44

55
# About information
66
author=Askimo

shared/src/main/kotlin/io/askimo/core/providers/lmstudio/LmStudioModelFactory.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,13 @@ import io.askimo.core.providers.ModelProvider
1010
import io.askimo.core.providers.ModelProvider.LMSTUDIO
1111
import io.askimo.core.providers.OpenAiCompatibleChatModelFactory
1212
import io.askimo.core.providers.ensureLocalEmbeddingModelAvailable
13-
import java.net.http.HttpClient
1413

1514
class LmStudioModelFactory : OpenAiCompatibleChatModelFactory<LmStudioSettings>() {
1615

1716
override fun getProvider(): ModelProvider = LMSTUDIO
1817

1918
override fun defaultSettings(): LmStudioSettings = LmStudioSettings()
2019

21-
/** LmStudio does not support HTTP/2. */
22-
override fun httpVersion(): HttpClient.Version = HttpClient.Version.HTTP_1_1
23-
2420
/**
2521
* When no explicit utility model is configured, fall back to whichever model is currently
2622
* active in the session rather than [LmStudioSettings.defaultModel].

0 commit comments

Comments
 (0)